import { IpcClientService } from "@autoplex/ipc";
import { Microservice } from "@autoplex/microservice";
import { SOCKET_PATH } from "./constants";

export class IpcClient<M extends Microservice = Microservice> extends IpcClientService<M>
{
    /**
     * The name of the service
     */
    public readonly NAME = "Plex";

    /**
     * The path to the socket file
     */
    protected readonly SOCKET_PATH = SOCKET_PATH;

    /**
     * Fetch a Plex movie link given the TMDb ID if it exists
     */
    public async movieLinks(tmdbIds: (number|string)[]) {
        return await this.request<{ [tmdbId: number]: string|null }>("movie_links", tmdbIds);
    }

    /**
     * Check if the given movie is already on Plex
     */
    public async hasMovie(tmdbId: number|string) {
        return await this.request("has_movie", tmdbId);
    }
}
