UNPKG

@tmlmobilidade/types

Version:
48 lines (47 loc) 2.16 kB
/* * */ import { DocumentSchema } from '@tmlmobilidade/go-types-shared'; import { z } from 'zod'; import { FareSimplifiedSchema } from './fare.js'; import { RouteSimplifiedSchema } from './route.js'; import { TransportTypeSchema } from './transport-type.js'; import { TypologySimplifiedSchema } from './typology.js'; /* * */ export const INTERCHANGE_MODE = { CONFIGURED: '2', // Validation transfers should be configured in APEX configuration files NONE: '0', // Validation transfers are not allowed SAME_OPERATOR: '1', // Validation transfers are allowed only in the same operator }; export const interchangeModeOptions = [ { label: 'Transbordos não são permitidos', value: INTERCHANGE_MODE.NONE }, { label: 'Transbordos não são permitidos dentro do mesmo operador', value: INTERCHANGE_MODE.SAME_OPERATOR }, { label: 'Transbordos devem ser configurados nos ficheiros APEX', value: INTERCHANGE_MODE.CONFIGURED }, ]; /* * */ export const LineSchema = DocumentSchema.extend({ agency_id: z.string(), code: z.string().trim().min(1).max(10), interchange: z.nativeEnum(INTERCHANGE_MODE).default(INTERCHANGE_MODE.NONE), is_circular_line: z.boolean().default(false), is_locked: z.boolean().default(false), is_school_line: z.boolean().default(false), name: z.string().trim().min(1).max(150), onboard_fare_ids: z.array(z.string()).nullable().default([]), prepaid_fare_id: z.string().nullable().default(null), transport_type: TransportTypeSchema.default('bus'), typology: z.string().nullable().default(null), }); export const LineNormalizedSchema = LineSchema.extend({ onboard_fares_data: z.array(FareSimplifiedSchema).optional().default([]), prepaid_fare_data: FareSimplifiedSchema.nullable().optional().default(null), routes: z.array(RouteSimplifiedSchema).optional().default([]), typology_data: TypologySimplifiedSchema.nullable().optional().default(null), }); /* * */ export const CreateLineSchema = LineSchema.omit({ _id: true, created_at: true, updated_at: true, }); export const UpdateLineSchema = CreateLineSchema .omit({ created_by: true }) .partial();