import { ConcurrencyLimitResponse } from '@/models/api/ConcurrencyLimitResponse' import { ConcurrencyLimit } from '@/models/ConcurrencyLimit' import { ConcurrencyLimitCreate } from '@/models/ConcurrencyLimitCreate' import { ConcurrencyLimitsFilter } from '@/models/Filters' import { mapper } from '@/services/Mapper' import { WorkspaceApi } from '@/services/WorkspaceApi' export class WorkspaceConcurrencyLimitsApi extends WorkspaceApi { protected override routePrefix = '/concurrency_limits' public async getConcurrencyLimits(filter: ConcurrencyLimitsFilter = {}): Promise { const { data } = await this.post('/filter', filter) return mapper.map('ConcurrencyLimitResponse', data, 'ConcurrencyLimit') } public async getConcurrencyLimit(id: string): Promise { const { data } = await this.get(`/${id}`) return mapper.map('ConcurrencyLimitResponse', data, 'ConcurrencyLimit') } public async getConcurrencyLimitByTag(tag: string): Promise { const { data } = await this.get(`/tag/${tag}`) return mapper.map('ConcurrencyLimitResponse', data, 'ConcurrencyLimit') } public async createConcurrencyLimit(limit: ConcurrencyLimitCreate): Promise { const { data } = await this.post('/', mapper.map('ConcurrencyLimitCreate', limit, 'ConcurrencyLimitCreateRequest')) return mapper.map('ConcurrencyLimitResponse', data, 'ConcurrencyLimit') } public deleteConcurrencyLimit(id: string): Promise { return this.delete(`/${id}`) } public deleteConcurrencyLimitByTag(tag: string): Promise { return this.delete(`/tag/${tag}`) } public async resetConcurrencyLimitByTag(tag: string): Promise { const { data } = await this.post(`/tag/${tag}/reset`) return mapper.map('ConcurrencyLimitResponse', data, 'ConcurrencyLimit') } }