Initial commit
This commit is contained in:
88
src/services/collectionService.ts
Normal file
88
src/services/collectionService.ts
Normal 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;
|
||||
Reference in New Issue
Block a user