Initial commit

This commit is contained in:
root
2025-12-21 09:59:17 -05:00
committed by Sebastian Krupinski
commit 974d3fe11b
53 changed files with 7555 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
/**
* Collection management service
*/
import { createFetchWrapper } from '@KTXC/utils/helpers/fetch-wrapper-core';
const fetchWrapper = createFetchWrapper();
import type {
CollectionListRequest,
CollectionListResponse,
CollectionExtantRequest,
CollectionExtantResponse,
CollectionFetchRequest,
CollectionFetchResponse,
CollectionCreateRequest,
CollectionCreateResponse,
CollectionModifyRequest,
CollectionModifyResponse,
CollectionDestroyRequest,
CollectionDestroyResponse,
} from '../types/collection';
const BASE_URL = '/m/chrono_manager/collection';
export const collectionService = {
/**
* List all available collections
*
* @param request - Collection list request parameters
* @returns Promise with collection list grouped by provider and service
*/
async list(request: CollectionListRequest = {}): Promise<CollectionListResponse> {
return await fetchWrapper.post(`${BASE_URL}/list`, request);
},
/**
* Check which collections exist/are available
*
* @param request - Collection extant request with source selector
* @returns Promise with collection availability status
*/
async extant(request: CollectionExtantRequest): Promise<CollectionExtantResponse> {
return await fetchWrapper.post(`${BASE_URL}/extant`, request);
},
/**
* Fetch a specific collection
*
* @param request - Collection fetch request
* @returns Promise with collection details
*/
async fetch(request: CollectionFetchRequest): Promise<CollectionFetchResponse> {
return await fetchWrapper.post(`${BASE_URL}/fetch`, request);
},
/**
* Create a new collection
*
* @param request - Collection create request
* @returns Promise with created collection
*/
async create(request: CollectionCreateRequest): Promise<CollectionCreateResponse> {
return await fetchWrapper.post(`${BASE_URL}/create`, request);
},
/**
* Modify an existing collection
*
* @param request - Collection modify request
* @returns Promise with modified collection
*/
async modify(request: CollectionModifyRequest): Promise<CollectionModifyResponse> {
return await fetchWrapper.post(`${BASE_URL}/modify`, request);
},
/**
* Delete a collection
*
* @param request - Collection destroy request
* @returns Promise with deletion result
*/
async destroy(request: CollectionDestroyRequest): Promise<CollectionDestroyResponse> {
return await fetchWrapper.post(`${BASE_URL}/destroy`, request);
},
};
export default collectionService;