@tmlmobilidade/types
Version:
35 lines (34 loc) • 1.29 kB
JavaScript
/* * */
import { OperationalDateSchema } from '../../index.js';
import { UnixTimestampSchema } from '@tmlmobilidade/go-types-shared';
import { z } from 'zod';
/* * */
export const SimplifiedVehicleEventSchema = z.object({
// Required Fields
_id: z.string(),
agency_id: z.string(),
created_at: UnixTimestampSchema,
geohash: z.string().nullish(),
latitude: z.number()
.min(-90)
.max(90)
.refine(value => value.toFixed(6) === value.toString()),
longitude: z.number()
.min(-180)
.max(180)
.refine(value => value.toFixed(6) === value.toString()),
operational_date: OperationalDateSchema,
received_at: UnixTimestampSchema,
trip_id: z.string(),
vehicle_id: z.string(),
// Optional Fields
bearing: z.number().nullable().default(null),
current_status: z.enum(['INCOMING_AT', 'STOPPED_AT', 'IN_TRANSIT_TO']).nullable().default(null),
door: z.string().nullable().default(null),
driver_id: z.string().nullable().default(null),
extra_trip_id: z.string().nullable().default(null),
odometer: z.number().nullable().default(null),
pattern_id: z.string().nullable().default(null),
speed: z.number().nullable().default(null),
stop_id: z.string().nullable().default(null),
});