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; user_id: ColumnType; created_at: ColumnType; tipologia: ColumnType; arredato: ColumnType; budget: ColumnType; n_adulti: ColumnType; n_minori: ColumnType; animali: ColumnType; fumatori: ColumnType; giardino: ColumnType; parcheggio: ColumnType; terrazzo: ColumnType; ascensore: ColumnType; pianoterra: ColumnType; motivazione_transitorio: ColumnType; reddito: ColumnType; decorrenza: ColumnType; isInterrotto: ColumnType; entromese: ColumnType; permanenza: ColumnType; isOkAcconto: ColumnType; isOkSaldo: ColumnType; isOkConsulenza: ColumnType; doc_motivazione_ref: ColumnType; scadenza_motivazione_transitoria: ColumnType; skipPayment: ColumnType; skipControlloDoc: ColumnType; skipDocMotivazione: ColumnType; onboardOk: ColumnType; interruzioneDays: ColumnType; acceptedInterr: ColumnType; } export type Servizio = Selectable; export type NewServizio = Insertable; export type ServizioUpdate = Updateable; 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(), });