import ApiService from '@/services/api.service' import { ConfigRepository, ConfigTestResponse } from '~/domain/models/autoLabeling/configRepository' import { ConfigItemList, ConfigItem } from '~/domain/models/autoLabeling/config' export interface ConfigItemResponse { id: number model_name: string model_attrs: object template: string label_mapping: object task_type: string } export class APIConfigRepository implements ConfigRepository { constructor(private readonly request = ApiService) {} async list(projectId: string): Promise { const url = `/projects/${projectId}/auto-labeling/configs` const response = await this.request.get(url) const responseItems: ConfigItemResponse[] = response.data return ConfigItemList.valueOf(responseItems.map((item) => ConfigItem.valueOf(item))) } async create(projectId: string, item: ConfigItem): Promise { const url = `/projects/${projectId}/auto-labeling/configs` const response = await this.request.post(url, item.toAPI()) const responseItem: ConfigItemResponse = response.data return ConfigItem.valueOf(responseItem) } async update(projectId: string, item: ConfigItem): Promise { const url = `/projects/${projectId}/auto-labeling/configs/${item.id}` const response = await this.request.put(url, { id: item.id, model_name: item.modelName, model_attrs: item.modelAttrs, template: item.template, label_mapping: item.labelMapping }) const responseItem: ConfigItemResponse = response.data return ConfigItem.valueOf(responseItem) } async delete(projectId: string, itemId: number): Promise { const url = `/projects/${projectId}/auto-labeling/configs/${itemId}` await this.request.delete(url) } async testParameters(projectId: string, item: ConfigItem, text: string) { const url = `/projects/${projectId}/auto-labeling/request-testing` const response = await this.request.post(url, { ...item.toAPI(), text }) const responseItem: ConfigTestResponse = response.data return responseItem } async testTemplate( projectId: string, response: any, item: ConfigItem ): Promise { console.log(projectId) const url = `/projects/${projectId}/auto-labeling/label-extractor-testing` const _response = await this.request.post(url, { response, ...item.toAPI() }) const responseItem: ConfigTestResponse = _response.data return responseItem } async testMapping( projectId: string, item: ConfigItem, response: any ): Promise { const url = `/projects/${projectId}/auto-labeling/label-mapper-testing` const _response = await this.request.post(url, { ...item.toAPI(), response }) const responseItem: ConfigTestResponse = _response.data return responseItem } }