sozsoft-platform/ui/src/services/developerKit.service.ts

218 lines
6.4 KiB
TypeScript
Raw Normal View History

2026-02-24 20:44:16 +00:00
import { PagedResultDto } from '@/proxy'
import apiService from './api.service'
import {
CrudEndpoint,
CreateUpdateCrudEndpointDto,
CreateUpdateCustomComponentDto,
2026-03-01 20:43:25 +00:00
CreateUpdateSqlTableDto,
2026-02-24 20:44:16 +00:00
CustomComponent,
CustomComponentDto,
2026-03-01 20:43:25 +00:00
SqlTable,
2026-02-24 20:44:16 +00:00
} from '@/proxy/developerKit/models'
class DeveloperKitService {
2026-03-01 20:43:25 +00:00
async getSqlTables(): Promise<PagedResultDto<SqlTable>> {
const response = await apiService.fetchData<PagedResultDto<SqlTable>>({
url: '/api/app/sql-table',
2026-02-24 20:44:16 +00:00
method: 'GET',
})
return response.data
}
2026-03-01 20:43:25 +00:00
async getActiveSqlTables(): Promise<PagedResultDto<SqlTable>> {
const response = await apiService.fetchData<PagedResultDto<SqlTable>>({
url: '/api/app/sql-table/active-tables',
2026-02-24 20:44:16 +00:00
method: 'GET',
})
return response.data
}
2026-03-01 20:43:25 +00:00
async getSqlTable(id: string): Promise<SqlTable> {
const response = await apiService.fetchData<SqlTable>({
url: `/api/app/sql-table/${id}`,
2026-02-24 20:44:16 +00:00
method: 'GET',
})
return response.data
}
2026-03-01 20:43:25 +00:00
async createSqlTable(data: CreateUpdateSqlTableDto): Promise<SqlTable> {
const response = await apiService.fetchData<SqlTable>({
url: '/api/app/sql-table',
2026-02-24 20:44:16 +00:00
method: 'POST',
data: data as any,
})
return response.data
}
2026-03-01 20:43:25 +00:00
async updateSqlTable(id: string, entity: CreateUpdateSqlTableDto): Promise<SqlTable> {
const response = await apiService.fetchData<SqlTable>({
url: `/api/app/sql-table/${id}`,
2026-02-24 20:44:16 +00:00
method: 'PUT',
data: entity as any,
})
return response.data
}
2026-03-01 20:43:25 +00:00
async deleteSqlTable(id: string): Promise<void> {
2026-02-24 20:44:16 +00:00
await apiService.fetchData<void>({
2026-03-01 20:43:25 +00:00
url: `/api/app/sql-table/${id}`,
2026-02-24 20:44:16 +00:00
method: 'DELETE',
})
}
2026-03-01 20:43:25 +00:00
async toggleSqlTableActiveStatus(id: string): Promise<void> {
2026-02-24 20:44:16 +00:00
await apiService.fetchData<void>({
2026-03-01 20:43:25 +00:00
url: `/api/app/sql-table/${id}/toggle-active-status`,
2026-02-24 20:44:16 +00:00
method: 'POST',
})
}
// Custom Component endpoints
async getCustomComponents(): Promise<PagedResultDto<CustomComponentDto>> {
const response = await apiService.fetchData<PagedResultDto<CustomComponentDto>>({
url: '/api/app/custom-component',
method: 'GET',
})
return response.data
}
async getActiveCustomComponents(): Promise<PagedResultDto<CustomComponentDto>> {
const response = await apiService.fetchData<PagedResultDto<CustomComponentDto>>({
url: '/api/app/custom-component/active-components',
method: 'GET',
})
return response.data
}
async getCustomComponent(id: string): Promise<CustomComponent> {
const response = await apiService.fetchData<CustomComponent>({
url: `/api/app/custom-component/${id}`,
method: 'GET',
})
return response.data
}
async createCustomComponent(component: CreateUpdateCustomComponentDto): Promise<CustomComponent> {
const response = await apiService.fetchData<CustomComponent>({
url: '/api/app/custom-component',
method: 'POST',
data: component as any,
})
return response.data
}
async updateCustomComponent(
id: string,
component: CreateUpdateCustomComponentDto,
): Promise<CustomComponent> {
const response = await apiService.fetchData<CustomComponent>({
url: `/api/app/custom-component/${id}`,
method: 'PUT',
data: component as any,
})
return response.data
}
async deleteCustomComponent(id: string): Promise<void> {
await apiService.fetchData<void>({
url: `/api/app/custom-component/${id}`,
method: 'DELETE',
})
}
// Generated Endpoint endpoints
async getGeneratedEndpoints(): Promise<PagedResultDto<CrudEndpoint>> {
const response = await apiService.fetchData<PagedResultDto<CrudEndpoint>>({
url: '/api/app/crud-endpoint-generate',
method: 'GET',
})
return response.data
}
async getActiveGeneratedEndpoints(): Promise<PagedResultDto<CrudEndpoint>> {
const response = await apiService.fetchData<PagedResultDto<CrudEndpoint>>({
url: '/api/app/crud-endpoint-generate/active-endpoints',
method: 'GET',
})
return response.data
}
async getEndpointsByEntity(entityId: string): Promise<PagedResultDto<CrudEndpoint>> {
const response = await apiService.fetchData<PagedResultDto<CrudEndpoint>>({
url: `/api/app/crud-endpoint-generate/endpoints-by-entity/${entityId}`,
method: 'GET',
})
return response.data
}
async getGeneratedEndpoint(id: string): Promise<CrudEndpoint> {
const response = await apiService.fetchData<CrudEndpoint>({
url: `/api/app/crud-endpoint-generate/${id}`,
method: 'GET',
})
return response.data
}
async createGeneratedEndpoint(data: CreateUpdateCrudEndpointDto): Promise<CrudEndpoint> {
const response = await apiService.fetchData<CrudEndpoint>({
url: '/api/app/crud-endpoint-generate',
method: 'POST',
data: data as any,
})
return response.data
}
async updateGeneratedEndpoint(
id: string,
endpoint: CreateUpdateCrudEndpointDto,
): Promise<CrudEndpoint> {
const response = await apiService.fetchData<CrudEndpoint>({
url: `/api/app/crud-endpoint-generate/${id}`,
method: 'PUT',
data: endpoint as any,
})
return response.data
}
async deleteGeneratedEndpoint(id: string): Promise<void> {
await apiService.fetchData<void>({
url: `/api/app/crud-endpoint-generate/${id}`,
method: 'DELETE',
})
}
async toggleGeneratedEndpoint(id: string): Promise<CrudEndpoint> {
const response = await apiService.fetchData<CrudEndpoint>({
url: `/api/app/crud-endpoint-generate/${id}/toggle`,
method: 'POST',
})
return response.data
}
async generateCrudEndpoints(entityId: string): Promise<PagedResultDto<CrudEndpoint>> {
const response = await apiService.fetchData<PagedResultDto<CrudEndpoint>>({
url: `/api/app/crud-endpoint-generate/generate-crud-endpoints/${entityId}`,
method: 'POST',
})
return response.data
}
// Health Check
async healthCheck(): Promise<{ status: string; timestamp: string }> {
try {
const response = await apiService.fetchData({
url: '/api/app/health',
method: 'GET',
})
if (response.status === 200) {
return { status: 'healthy', timestamp: new Date().toISOString() }
}
return { status: 'unhealthy', timestamp: new Date().toISOString() }
} catch {
return { status: 'offline', timestamp: new Date().toISOString() }
}
}
}
export const developerKitService = new DeveloperKitService()