import { WorkPoolQueueCreate, WorkPoolQueue, WorkPoolQueueEdit, WorkPoolQueueResponse } from '@/models' import { WorkPoolQueuesFilter } from '@/models/Filters' import { mapper, WorkspaceApi } from '@/services' export class WorkspaceWorkPoolQueuesApi extends WorkspaceApi { protected override routePrefix = '/work_pools/' public async createWorkPoolQueue(workPoolName: string, request: WorkPoolQueueCreate): Promise { const body = mapper.map('WorkPoolQueueCreate', request, 'WorkPoolQueueCreateRequest') const { data } = await this.post(`/${workPoolName}/queues`, body) return mapper.map('WorkPoolQueueResponse', data, 'WorkPoolQueue') } public async getWorkPoolQueues(workPoolName: string, filter: WorkPoolQueuesFilter = {}): Promise { const body = mapper.map('WorkPoolQueuesFilter', filter, 'WorkPoolQueuesFilterRequest') const { data } = await this.post(`/${workPoolName}/queues/filter`, body) return mapper.map('WorkPoolQueueResponse', data, 'WorkPoolQueue') } public async getWorkPoolQueueByName(workPoolName: string, queueName: string): Promise { const { data } = await this.get(`/${workPoolName}/queues/${queueName}`) return mapper.map('WorkPoolQueueResponse', data, 'WorkPoolQueue') } public updateWorkPoolQueue(workPoolName: string, queueName: string, request: WorkPoolQueueEdit): Promise { const body = mapper.map('WorkPoolQueueEdit', request, 'WorkPoolQueueEditRequest') return this.patch(`/${workPoolName}/queues/${queueName}`, body) } public pauseWorkPoolQueue(workPoolName: string, queueName: string): Promise { return this.patch(`/${workPoolName}/queues/${queueName}`, { 'is_paused': true }) } public resumeWorkPoolQueue(workPoolName: string, queueName: string): Promise { return this.patch(`/${workPoolName}/queues/${queueName}`, { 'is_paused': false }) } public deleteWorkPoolQueue(workPoolName: string, queueName: string): Promise { return this.delete(`/${workPoolName}/queues/${queueName}`) } public updateWorkPoolQueuePriority(workPoolName: string, queueName: string, priority: number): Promise { return this.patch(`/${workPoolName}/queues/${queueName}/update_priority`, { priority }) } }