LayerService.ts•2.76 kB
import { TailorKitBaseClient } from "../../core/TailorKitBaseClient.js";
import { GetListLayersOfTemplateArgs } from "../../../types/index.js";
import { API_ENDPOINTS } from "../constants.js";
/**
* Layer data response interface
*/
export interface LayerResponse<T> {
data: T | null;
error: Error | null;
}
/**
* Layer service for handling layer operations
*/
export class LayerService {
private client: TailorKitBaseClient;
/**
* Create a new LayerService
* @param client - The TailorKit base client
*/
constructor(client: TailorKitBaseClient) {
this.client = client;
}
/**
* Get list layers of template
* @param args - The arguments for the get list layers of template
* @returns The list layers of template
*/
async getListLayersOfTemplate<T = any>(args: GetListLayersOfTemplateArgs): Promise<LayerResponse<T>> {
try {
const data = await this.client.post<GetListLayersOfTemplateArgs, T>(API_ENDPOINTS.LAYER.GET_LIST_LAYERS_OF_TEMPLATE, args);
return { data, error: null };
} catch (error) {
return {
data: null,
error: error instanceof Error ? error : new Error(String(error))
};
}
}
/**
* Get layer details
* @param args - The arguments for fetching a layer
* @returns Promise with the layer data response
*/
async getLayerDetails<T>(args: { _id: string; shopDomain: string; layerId: string }): Promise<LayerResponse<T>> {
try {
// Implementation will be added when the API is available
throw new Error("Layer details not implemented yet");
} catch (error) {
return {
data: null,
error: error instanceof Error ? error : new Error(String(error))
};
}
}
/**
* Update a layer
* @param args - The arguments for updating a layer
* @returns Promise with the updated layer response
*/
async updateLayer<T>(args: any): Promise<LayerResponse<T>> {
try {
// Implementation will be added when the API is available
throw new Error("Layer update not implemented yet");
} catch (error) {
return {
data: null,
error: error instanceof Error ? error : new Error(String(error))
};
}
}
/**
* Delete a layer
* @param args - The arguments for deleting a layer
* @returns Promise with the deletion result response
*/
async deleteLayer<T>(args: { _id: string; shopDomain: string; layerId: string }): Promise<LayerResponse<T>> {
try {
// Implementation will be added when the API is available
throw new Error("Layer deletion not implemented yet");
} catch (error) {
return {
data: null,
error: error instanceof Error ? error : new Error(String(error))
};
}
}
}