import { PagedResultDto } from '@/proxy' import apiService from './api.service' import { CrudEndpoint, CreateUpdateCustomComponentDto, CustomComponent, CustomComponentDto, } from '@/proxy/developerKit/models' class DeveloperKitService { // Custom Component endpoints async getCustomComponents(): Promise> { const response = await apiService.fetchData>({ url: '/api/app/custom-component', method: 'GET', params: { maxResultCount: 1000 }, }) return response.data } async getCustomComponent(id: string): Promise { const response = await apiService.fetchData({ url: `/api/app/custom-component/${id}`, method: 'GET', }) return response.data } async updateCustomComponent( id: string, component: CreateUpdateCustomComponentDto, ): Promise { const payload = component.props === undefined ? { ...component, props: (await this.getCustomComponent(id)).props } : component const response = await apiService.fetchData({ url: `/api/app/custom-component/${id}`, method: 'PUT', data: payload as any, }) return response.data } // Generated Endpoint endpoints async toggleGeneratedEndpoint(id: string): Promise { const response = await apiService.fetchData({ url: `/api/app/crud-endpoint-generate/${id}/toggle`, method: 'POST', }) return response.data } /** * @param operationTypes Aktif baslatilacak operasyonlar; verilmezse hepsi aktif uretilir. * Listede olmayanlar pasif olarak kaydedilir. * @param objectType Veritabani nesnesinin turu. Tablo disindaki nesneler icin * (view/procedure/function) yalnizca GetList ve GetById uretilir. */ async generateCrudEndpoints( entityName: string, operationTypes?: string[], objectType?: string, ): Promise> { const params: Record = {} if (operationTypes?.length) params.operationTypes = operationTypes.join(',') if (objectType) params.objectType = objectType const response = await apiService.fetchData>({ url: `/api/app/crud-endpoint-generate/generate-crud-endpoints/${entityName}`, method: 'POST', params: Object.keys(params).length > 0 ? params : undefined, }) return response.data } async getEndpointsByEntity(entityName: string): Promise { const response = await apiService.fetchData({ url: `/api/app/crud-endpoint-generate/endpoints-by-entity/${entityName}`, method: 'GET', }) return response.data } async deleteGeneratedEndpointsByEntity(entityName: string): Promise { await apiService.fetchData({ url: `/api/app/crud-endpoint-generate/by-entity/${entityName}`, method: 'DELETE', }) } async getGeneratedListEndpoints(): Promise> { const response = await apiService.fetchData>({ url: '/api/app/crud-endpoint-generate', method: 'GET', params: { maxResultCount: 1000 }, }) return response.data } async deleteGeneratedEndpoint(id: string): Promise { await apiService.fetchData({ url: `/api/app/crud-endpoint-generate/${id}`, method: 'DELETE', }) } } export const developerKitService = new DeveloperKitService()