import { Variable, VariableCreate, VariableEdit, VariablesFilter } from '@/models' import { VariableResponse } from '@/models/api/VariableResponse' import { mapper } from '@/services' import { WorkspaceApi } from '@/services/WorkspaceApi' export class WorkspaceVariablesApi extends WorkspaceApi { protected override routePrefix = '/variables' public async getVariable(variableId: string): Promise { const { data } = await this.get(`/${variableId}`) if (data) { return mapper.map('VariableResponse', data, 'Variable') } return null } public async getVariableByName(variableName: string): Promise { const { data } = await this.get(`/name/${variableName}`) if (data) { return mapper.map('VariableResponse', data, 'Variable') } return null } public async getVariablesCount(filter: VariablesFilter = {}): Promise { const request = mapper.map('VariablesFilter', filter, 'VariablesFilterRequest') const { data } = await this.post('/count', request) return data } public async getVariables(filter: VariablesFilter = {}): Promise { const request = mapper.map('VariablesFilter', filter, 'VariablesFilterRequest') const { data } = await this.post('/filter', request) return mapper.map('VariableResponse', data, 'Variable') } public async createVariable(body: VariableCreate): Promise { const request = mapper.map('VariableCreate', body, 'VariableCreateRequest') const { data } = await this.post('/', request) return mapper.map('VariableResponse', data, 'Variable') } public async editVariable(variableId: string, body: VariableEdit): Promise { const request = mapper.map('VariableEdit', body, 'VariableEditRequest') const { data } = await this.patch(`/${variableId}`, request) return mapper.map('VariableResponse', data, 'Variable') } public deleteVariable(variableId: string): Promise { return this.delete(`/${variableId}`) } }