All files / layers / L1 / contracts pipelines.ts

33.33% Statements 4/12
0% Branches 0/4
20% Functions 2/10
33.33% Lines 4/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3537x 12x       1x                     2x                                    
import type { ApiContract } from '@/layers/interfaces'
import type { components } from '@/types/api'
 
type Pipeline = components['schemas']['Pipeline']
type CreatePipelineRequest = components['schemas']['CreatePipelineRequest']
type UpdatePipelineRequest = components['schemas']['UpdatePipelineRequest']
 
type PipelineListQuery = {
  [key: string]: string | number | boolean | undefined
}

export const pipelinesContract: ApiContract<
  Pipeline,
  CreatePipelineRequest,
  UpdatePipelineRequest,
  PipelineListQuery
> = {
  idOf: (e) => e.id,
  entityPath: 'pipelines',
  endpoints: {
    list: '/projects/{projectId}/pipelines',
    detail: (id) => `/pipelines/${id}`,
    create: '/projects/{projectId}/pipelines',
    update: (id) => `/pipelines/${id}`,
    remove: (id) => `/pipelines/${id}`,
  },
  createPathParams: (_input, context) => ({
    projectId: context?.projectId ?? '',
  }),
  subscription: {
    ssePath: '/pipelines/events',
    entityName: 'pipeline',
  },
}