From e4fc8feda88760f0864389be89836589da897c6c Mon Sep 17 00:00:00 2001 From: Alexander Cerutti Date: Wed, 9 Nov 2022 19:30:04 +0100 Subject: [PATCH] Added FieldWithRow interface and Joi Schema --- src/schemas/Field.ts | 10 ++++++++++ src/schemas/PassFields.ts | 12 +++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/schemas/Field.ts b/src/schemas/Field.ts index 3f1b746..1c837c5 100644 --- a/src/schemas/Field.ts +++ b/src/schemas/Field.ts @@ -22,6 +22,10 @@ export interface Field { numberStyle?: string; } +export interface FieldWithRow extends Field { + row?: 0 | 1; +} + export const Field = Joi.object().keys({ attributedValue: Joi.alternatives( Joi.string().allow(""), @@ -72,3 +76,9 @@ export const Field = Joi.object().keys({ otherwise: Joi.string().forbidden(), }), }); + +export const FieldWithRow = Field.concat( + Joi.object().keys({ + row: Joi.number().min(0).max(1), + }), +); diff --git a/src/schemas/PassFields.ts b/src/schemas/PassFields.ts index 96cd81d..41eef7d 100644 --- a/src/schemas/PassFields.ts +++ b/src/schemas/PassFields.ts @@ -1,5 +1,5 @@ import Joi from "joi"; -import { Field } from "./Field"; +import { Field, FieldWithRow } from "./Field"; export type TransitType = | "PKTransitTypeAir" @@ -13,7 +13,7 @@ export const TransitType = Joi.string().regex( ); export interface PassFields { - auxiliaryFields: (Field & { row?: number })[]; + auxiliaryFields: FieldWithRow[]; backFields: Field[]; headerFields: Field[]; primaryFields: Field[]; @@ -22,13 +22,7 @@ export interface PassFields { } export const PassFields = Joi.object().keys({ - auxiliaryFields: Joi.array().items( - Joi.object() - .keys({ - row: Joi.number().max(1).min(0), - }) - .concat(Field), - ), + auxiliaryFields: Joi.array().items(FieldWithRow), backFields: Joi.array().items(Field), headerFields: Joi.array().items(Field), primaryFields: Joi.array().items(Field),