stashapp-api
Version:
Easy to use adapter for interaction with a Stash server through GraphQL.
172 lines (171 loc) • 4.1 kB
JavaScript
// List of all queries and mutations from the schema
const QUERY_METHODS = [
"findScenes",
"findPerformers",
"findStudios",
"findTags",
"findGalleries",
"findGroups",
"findImages",
"findMovies",
"findSceneMarkers",
"findJobs",
"config",
"version",
"latestVersion",
"job",
"gallery",
"group",
"image",
"movie",
"performer",
"scene",
"sceneMarker",
"studio",
"tag",
];
const MUTATION_METHODS = [
"addGalleryImages",
"addGroupSubGroups",
"addTempDLNAIP",
"anonymiseDatabase",
"backupDatabase",
"bulkGalleryUpdate",
"bulkGroupUpdate",
"bulkImageUpdate",
"bulkMovieUpdate",
"bulkPerformerUpdate",
"bulkSceneUpdate",
"bulkTagUpdate",
"configureDLNA",
"configureDefaults",
"configureGeneral",
"configureInterface",
"configurePlugin",
"configureScraping",
"configureUI",
"configureUISetting",
"deleteFiles",
"destroySavedFilter",
"disableDLNA",
"downloadFFMpeg",
"enableDLNA",
"execSQL",
"exportObjects",
"fileSetFingerprints",
"galleriesUpdate",
"galleryChapterCreate",
"galleryChapterDestroy",
"galleryChapterUpdate",
"galleryCreate",
"galleryDestroy",
"galleryUpdate",
"generateAPIKey",
"groupCreate",
"groupDestroy",
"groupUpdate",
"groupsDestroy",
"imageDecrementO",
"imageDestroy",
"imageIncrementO",
"imageResetO",
"imageUpdate",
"imagesDestroy",
"imagesUpdate",
"importObjects",
"installPackages",
"metadataAutoTag",
"metadataClean",
"metadataCleanGenerated",
"metadataExport",
"metadataGenerate",
"metadataIdentify",
"metadataImport",
"metadataScan",
"migrate",
"migrateBlobs",
"migrateHashNaming",
"migrateSceneScreenshots",
"moveFiles",
"movieCreate",
"movieDestroy",
"movieUpdate",
"moviesDestroy",
"optimiseDatabase",
"performerCreate",
"performerDestroy",
"performerUpdate",
"performersDestroy",
"querySQL",
"reloadPlugins",
"reloadScrapers",
"removeGalleryImages",
"removeGroupSubGroups",
"removeTempDLNAIP",
"reorderSubGroups",
"resetGalleryCover",
"runPluginOperation",
"runPluginTask",
"saveFilter",
"sceneAddO",
"sceneAddPlay",
"sceneAssignFile",
"sceneCreate",
"sceneDecrementO",
"sceneDeleteO",
"sceneDeletePlay",
"sceneDestroy",
"sceneGenerateScreenshot",
"sceneIncrementO",
"sceneIncrementPlayCount",
"sceneMarkerCreate",
"sceneMarkerDestroy",
"sceneMarkerUpdate",
"sceneMarkersDestroy",
"sceneMerge",
"sceneResetActivity",
"sceneResetO",
"sceneResetPlayCount",
"sceneSaveActivity",
"sceneUpdate",
"scenesDestroy",
"scenesUpdate",
"setDefaultFilter",
"setGalleryCover",
"setPluginsEnabled",
"setup",
"stashBoxBatchPerformerTag",
"stashBoxBatchStudioTag",
"stopAllJobs",
"stopJob",
"studioCreate",
"studioDestroy",
"studioUpdate",
"studiosDestroy",
"submitStashBoxFingerprints",
"submitStashBoxPerformerDraft",
"submitStashBoxSceneDraft",
"tagCreate",
"tagDestroy",
"tagUpdate",
"tagsDestroy",
"tagsMerge",
"uninstallPackages",
"updatePackages",
];
export function attachStashMethods(target, client) {
for (const method of QUERY_METHODS) {
target[method] = async (variables) => {
// In a real implementation, you would use codegen to generate the query string and types
// For now, this is a placeholder
const query = `query ${method}($input: ...) { ${method}(input: $input) { ...fields } }`;
return client.request(query, variables);
};
}
for (const method of MUTATION_METHODS) {
target[method] = async (variables) => {
const mutation = `mutation ${method}($input: ...) { ${method}(input: $input) { ...fields } }`;
return client.request(mutation, variables);
};
}
}