@tmlmobilidade/types
Version:
61 lines (60 loc) • 3.09 kB
JavaScript
/* * */
import { RideAcceptanceStatusSchema } from './ride-acceptance.js';
import { RideAnalysisGradeSchema } from './ride-analysis.js';
import { DelayStatusSchema, OperationalStatusSchema, SeenStatusSchema, TicketingStatusSchema, UnixTimestampSchema } from '@tmlmobilidade/go-types-shared';
import { z } from 'zod';
/* * */
const RideAnalysisGradeWithNoneSchema = RideAnalysisGradeSchema.or(z.literal('none'));
/* * */
export const GetRidesBatchQuerySchema = z.object({
search: z
.string()
.optional(),
/* * */
agency_ids: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(id => id.trim()) : [], z.array(z.string()))
.default([]),
date_end: UnixTimestampSchema,
date_start: UnixTimestampSchema,
/* * */
analysis_ended_at_last_stop_grade: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(grade => grade.trim()) : [], z.array(RideAnalysisGradeWithNoneSchema))
.optional(),
analysis_expected_apex_validation_interval: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(grade => grade.trim()) : [], z.array(RideAnalysisGradeWithNoneSchema))
.optional(),
analysis_simple_three_vehicle_events_grade: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(grade => grade.trim()) : [], z.array(RideAnalysisGradeWithNoneSchema))
.optional(),
analysis_transaction_sequentiality: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(grade => grade.trim()) : [], z.array(RideAnalysisGradeWithNoneSchema))
.optional(),
/* * */
delay_statuses: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(status => status.trim()) : [], z.array(DelayStatusSchema))
.optional(),
operational_statuses: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(status => status.trim()) : [], z.array(OperationalStatusSchema))
.optional(),
seen_statuses: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(status => status.trim()) : [], z.array(SeenStatusSchema))
.optional(),
/* * */
line_ids: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(id => id.trim()) : [], z.array(z.string()))
.optional(),
stop_ids: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(id => id.trim()) : [], z.array(z.string()))
.optional(),
/* * */
acceptance_status: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(status => status.trim()) : [], z.array(z.enum([...RideAcceptanceStatusSchema.options, 'none'])))
.optional(),
/* * */
favorites: z
.boolean()
.optional(),
ticketing_status: z
.preprocess((val) => (val && typeof val === 'string') ? val.split(',').map(status => status.trim()) : [], z.array(TicketingStatusSchema))
.optional(),
});