stashapp-api
Version:
Easy to use adapter for interaction with a Stash server through GraphQL.
46 lines (45 loc) • 1.44 kB
JavaScript
import { CriterionModifier as _CriterionModifier, GenderEnum as _GenderEnum, } from "./generated/graphql.js";
export const CriterionModifier = _CriterionModifier;
export const GenderEnum = _GenderEnum;
import { GraphQLClient } from "graphql-request";
import { getSdk } from "./generated/graphql.js";
/**
* Singleton class for interacting with the Stash GraphQL API.
* Provides type-safe query and mutation methods.
*/
export class StashApp {
static instance;
client;
sdk;
/** Find performers */
findPerformers;
/** Find studios */
findStudios;
/** Find scenes */
findScenes;
/** Find tags */
findTags;
/** Update a scene */
sceneUpdate;
/** Run a metadata scan */
metadataScan;
constructor(config) {
this.client = new GraphQLClient(config.url, {
headers: { ApiKey: config.apiKey },
});
this.sdk = getSdk(this.client);
this.findPerformers = this.sdk.FindPerformers;
this.findStudios = this.sdk.FindStudios;
this.findScenes = this.sdk.FindScenes;
this.findTags = this.sdk.FindTags;
this.sceneUpdate = this.sdk.sceneUpdate;
this.metadataScan = this.sdk.MetadataScan;
}
/** Initialize the singleton StashApp instance */
static init(config) {
if (!StashApp.instance) {
StashApp.instance = new StashApp(config);
}
return StashApp.instance;
}
}