@prefecthq/prefect-ui-library
Version:
This library is the Vue and Typescript component library for [Prefect 2](https://github.com/PrefectHQ/prefect) and [Prefect Cloud 2](https://www.prefect.io/cloud/). _The components and utilities in this project are not meant to be used independently_.
54 lines (49 loc) • 2.22 kB
text/typescript
import { AutomationTriggerEvent } from '@/automations/types/automationTriggerEvent'
import { AutomationTrigger } from '@/automations/types/triggers'
import { createObjectLevelCan, WorkPoolQueue, WorkPoolQueueCreate, WorkPoolQueueCreateRequest, WorkPoolQueueEdit, WorkPoolQueueEditRequest, WorkPoolQueueResponse, WorkPoolQueueResponseStatus, WorkPoolQueueStatus } from '@/models'
import { MapFunction } from '@/services/Mapper'
export const mapWorkPoolQueueResponseToWorkPoolQueue: MapFunction<WorkPoolQueueResponse, WorkPoolQueue> = function(source) {
return new WorkPoolQueue({
id: source.id,
created: this.map('string', source.created, 'Date'),
updated: this.map('string', source.updated, 'Date'),
workPoolId: source.work_pool_id,
workPoolName: source.work_pool_name,
name: source.name,
description: source.description,
isPaused: source.is_paused ?? false,
concurrencyLimit: source.concurrency_limit,
priority: source.priority,
lastPolled: this.map('string', source.last_polled, 'Date'),
status: (source.status?.toLowerCase() ?? 'not_ready') as Lowercase<WorkPoolQueueResponseStatus>,
can: createObjectLevelCan(),
})
}
export const mapWorkPoolQueueCreateToWorkPoolQueueCreateRequest: MapFunction<WorkPoolQueueCreate, WorkPoolQueueCreateRequest> = function(source) {
return {
name: source.name,
description: source.description,
is_paused: source.isPaused,
concurrency_limit: source.concurrencyLimit,
priority: source.priority,
}
}
export const mapWorkPoolQueueEditToWorkPoolQueueEditRequest: MapFunction<WorkPoolQueueEdit, WorkPoolQueueEditRequest> = function(source) {
return {
name: source.name,
description: source.description,
is_paused: source.isPaused,
concurrency_limit: source.concurrencyLimit,
priority: source.priority,
}
}
export const mapWorkPoolQueueToAutomationTrigger: MapFunction<WorkPoolQueue, AutomationTrigger> = function(workPoolQueue) {
return new AutomationTriggerEvent({
'posture': 'Reactive',
'match': {
'prefect.resource.id': `prefect.work-queue.${workPoolQueue.id}`,
},
'forEach': ['prefect.resource.id'],
'expect': ['prefect.work-queue.not-ready'],
})
}