@tmlmobilidade/types
Version:
35 lines (34 loc) • 1.38 kB
JavaScript
/* * */
import { DocumentSchema } from '../_common/document.js';
import { ProcessingStatusSchema } from '../_common/status.js';
import { GtfsAgencySchema } from '../gtfs/agency.js';
import { GtfsFeedInfoSchema } from '../gtfs/feed-info.js';
import { z } from 'zod';
/* * */
/* SUMMARY */
export const SEVERITY_LEVELS = ['error', 'warning', 'ignore', 'forbidden'];
export const SeverityLevelSchema = z.enum(SEVERITY_LEVELS);
export const GTFSValidatorMessageSchema = z.object({
field: z.string(),
file_name: z.string(),
message: z.string(),
rows: z.array(z.number()),
severity: SeverityLevelSchema,
validation_id: z.string(),
});
export const GTFSValidatorSummarySchema = z.object({
messages: z.array(GTFSValidatorMessageSchema),
total_errors: z.number(),
total_warnings: z.number(),
});
/* VALIDATION */
export const GtfsValidationSchema = DocumentSchema.extend({
feeder_status: ProcessingStatusSchema,
file_id: z.string(),
gtfs_agency: GtfsAgencySchema,
gtfs_feed_info: GtfsFeedInfoSchema,
notification_sent: z.boolean().default(false),
summary: GTFSValidatorSummarySchema.nullish(),
});
export const CreateGtfsValidationSchema = GtfsValidationSchema.omit({ _id: true, created_at: true, updated_at: true });
export const UpdateGtfsValidationSchema = CreateGtfsValidationSchema.omit({ created_by: true }).partial();