- Replaced custom Zod types with imported schemas in stripe router and user router. - Updated payment controller to use new enum imports for order types and payment statuses. - Refactored payment tests to utilize the new enum structure. - Removed deprecated zod_types file and created new zod_chat_types file for chat-related schemas. - Adjusted service files to align with the new order type enums and schemas. - Enhanced the Caratteristiche type definition using Zod for better validation. Co-authored-by: Copilot <copilot@github.com>
188 lines
No EOL
7 KiB
TypeScript
188 lines
No EOL
7 KiB
TypeScript
import { usersId, type UsersId } from './Users';
|
|
import { tipologiaPosizioneEnum, type default as TipologiaPosizioneEnum } from './TipologiaPosizioneEnum';
|
|
import { usersStorageUserStorageId, type UsersStorageUserStorageId } from './UsersStorage';
|
|
import type { ColumnType, Selectable, Insertable, Updateable } from 'kysely';
|
|
import { z } from 'zod';
|
|
|
|
/** Identifier type for public.servizio */
|
|
export type ServizioServizioId = string & { __brand: 'public.servizio' };
|
|
|
|
/** Represents the table public.servizio */
|
|
export default interface ServizioTable {
|
|
servizio_id: ColumnType<ServizioServizioId, ServizioServizioId | undefined, ServizioServizioId>;
|
|
|
|
user_id: ColumnType<UsersId, UsersId, UsersId>;
|
|
|
|
created_at: ColumnType<Date, Date | string | undefined, Date | string>;
|
|
|
|
tipologia: ColumnType<TipologiaPosizioneEnum, TipologiaPosizioneEnum, TipologiaPosizioneEnum>;
|
|
|
|
arredato: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
budget: ColumnType<number, number, number>;
|
|
|
|
n_adulti: ColumnType<number, number, number>;
|
|
|
|
n_minori: ColumnType<number, number, number>;
|
|
|
|
animali: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
fumatori: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
giardino: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
parcheggio: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
terrazzo: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
ascensore: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
pianoterra: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
motivazione_transitorio: ColumnType<string | null, string | null, string | null>;
|
|
|
|
reddito: ColumnType<string | null, string | null, string | null>;
|
|
|
|
decorrenza: ColumnType<Date | null, Date | string | null, Date | string | null>;
|
|
|
|
isInterrotto: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
entromese: ColumnType<number | null, number | null, number | null>;
|
|
|
|
permanenza: ColumnType<number | null, number | null, number | null>;
|
|
|
|
isOkAcconto: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
isOkSaldo: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
isOkConsulenza: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
doc_motivazione_ref: ColumnType<UsersStorageUserStorageId | null, UsersStorageUserStorageId | null, UsersStorageUserStorageId | null>;
|
|
|
|
scadenza_motivazione_transitoria: ColumnType<Date | null, Date | string | null, Date | string | null>;
|
|
|
|
skipPayment: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
skipControlloDoc: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
skipDocMotivazione: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
onboardOk: ColumnType<boolean, boolean | undefined, boolean>;
|
|
|
|
interruzioneDays: ColumnType<number, number | undefined, number>;
|
|
|
|
acceptedInterr: ColumnType<boolean, boolean | undefined, boolean>;
|
|
}
|
|
|
|
export type Servizio = Selectable<ServizioTable>;
|
|
|
|
export type NewServizio = Insertable<ServizioTable>;
|
|
|
|
export type ServizioUpdate = Updateable<ServizioTable>;
|
|
|
|
export const servizioServizioId = z.uuid().transform(value => value as ServizioServizioId);
|
|
|
|
export const ServizioSchema = z.object({
|
|
servizio_id: servizioServizioId,
|
|
user_id: usersId,
|
|
created_at: z.date(),
|
|
tipologia: tipologiaPosizioneEnum,
|
|
arredato: z.boolean(),
|
|
budget: z.number(),
|
|
n_adulti: z.number(),
|
|
n_minori: z.number(),
|
|
animali: z.boolean(),
|
|
fumatori: z.boolean(),
|
|
giardino: z.boolean(),
|
|
parcheggio: z.boolean(),
|
|
terrazzo: z.boolean(),
|
|
ascensore: z.boolean(),
|
|
pianoterra: z.boolean(),
|
|
motivazione_transitorio: z.string().nullable(),
|
|
reddito: z.string().nullable(),
|
|
decorrenza: z.date().nullable(),
|
|
isInterrotto: z.boolean(),
|
|
entromese: z.number().nullable(),
|
|
permanenza: z.number().nullable(),
|
|
isOkAcconto: z.boolean(),
|
|
isOkSaldo: z.boolean(),
|
|
isOkConsulenza: z.boolean(),
|
|
doc_motivazione_ref: usersStorageUserStorageId.nullable(),
|
|
scadenza_motivazione_transitoria: z.date().nullable(),
|
|
skipPayment: z.boolean(),
|
|
skipControlloDoc: z.boolean(),
|
|
skipDocMotivazione: z.boolean(),
|
|
onboardOk: z.boolean(),
|
|
interruzioneDays: z.number(),
|
|
acceptedInterr: z.boolean(),
|
|
});
|
|
|
|
export const NewServizioSchema = z.object({
|
|
servizio_id: servizioServizioId.optional(),
|
|
user_id: usersId,
|
|
created_at: z.union([z.date(), z.string()]).pipe(z.coerce.date()).optional(),
|
|
tipologia: tipologiaPosizioneEnum,
|
|
arredato: z.boolean().optional(),
|
|
budget: z.number(),
|
|
n_adulti: z.number(),
|
|
n_minori: z.number(),
|
|
animali: z.boolean().optional(),
|
|
fumatori: z.boolean().optional(),
|
|
giardino: z.boolean().optional(),
|
|
parcheggio: z.boolean().optional(),
|
|
terrazzo: z.boolean().optional(),
|
|
ascensore: z.boolean().optional(),
|
|
pianoterra: z.boolean().optional(),
|
|
motivazione_transitorio: z.string().optional().nullable(),
|
|
reddito: z.string().optional().nullable(),
|
|
decorrenza: z.union([z.date(), z.string()]).pipe(z.coerce.date()).optional().nullable(),
|
|
isInterrotto: z.boolean().optional(),
|
|
entromese: z.number().optional().nullable(),
|
|
permanenza: z.number().optional().nullable(),
|
|
isOkAcconto: z.boolean().optional(),
|
|
isOkSaldo: z.boolean().optional(),
|
|
isOkConsulenza: z.boolean().optional(),
|
|
doc_motivazione_ref: usersStorageUserStorageId.optional().nullable(),
|
|
scadenza_motivazione_transitoria: z.union([z.date(), z.string()]).pipe(z.coerce.date()).optional().nullable(),
|
|
skipPayment: z.boolean().optional(),
|
|
skipControlloDoc: z.boolean().optional(),
|
|
skipDocMotivazione: z.boolean().optional(),
|
|
onboardOk: z.boolean().optional(),
|
|
interruzioneDays: z.number().optional(),
|
|
acceptedInterr: z.boolean().optional(),
|
|
});
|
|
|
|
export const ServizioUpdateSchema = z.object({
|
|
servizio_id: servizioServizioId.optional(),
|
|
user_id: usersId.optional(),
|
|
created_at: z.union([z.date(), z.string()]).pipe(z.coerce.date()).optional(),
|
|
tipologia: tipologiaPosizioneEnum.optional(),
|
|
arredato: z.boolean().optional(),
|
|
budget: z.number().optional(),
|
|
n_adulti: z.number().optional(),
|
|
n_minori: z.number().optional(),
|
|
animali: z.boolean().optional(),
|
|
fumatori: z.boolean().optional(),
|
|
giardino: z.boolean().optional(),
|
|
parcheggio: z.boolean().optional(),
|
|
terrazzo: z.boolean().optional(),
|
|
ascensore: z.boolean().optional(),
|
|
pianoterra: z.boolean().optional(),
|
|
motivazione_transitorio: z.string().optional().nullable(),
|
|
reddito: z.string().optional().nullable(),
|
|
decorrenza: z.union([z.date(), z.string()]).pipe(z.coerce.date()).optional().nullable(),
|
|
isInterrotto: z.boolean().optional(),
|
|
entromese: z.number().optional().nullable(),
|
|
permanenza: z.number().optional().nullable(),
|
|
isOkAcconto: z.boolean().optional(),
|
|
isOkSaldo: z.boolean().optional(),
|
|
isOkConsulenza: z.boolean().optional(),
|
|
doc_motivazione_ref: usersStorageUserStorageId.optional().nullable(),
|
|
scadenza_motivazione_transitoria: z.union([z.date(), z.string()]).pipe(z.coerce.date()).optional().nullable(),
|
|
skipPayment: z.boolean().optional(),
|
|
skipControlloDoc: z.boolean().optional(),
|
|
skipDocMotivazione: z.boolean().optional(),
|
|
onboardOk: z.boolean().optional(),
|
|
interruzioneDays: z.number().optional(),
|
|
acceptedInterr: z.boolean().optional(),
|
|
}); |