diff --git a/apps/infoalloggi/kanel.config.js b/apps/infoalloggi/kanel.config.js
index bff5b0f..1030bd9 100644
--- a/apps/infoalloggi/kanel.config.js
+++ b/apps/infoalloggi/kanel.config.js
@@ -1,6 +1,6 @@
const { makeKyselyHook } = require("kanel-kysely");
const { makePgTsGenerator } = require("kanel");
-const { generateZodSchemas, makeGenerateZodSchemas } = require("kanel-zod");
+const { generateZodSchemas, makeGenerateZodSchemas, defaultZodTypeMap } = require("kanel-zod");
const ignoredTables = ["schema_migrations"];
/**
@@ -98,7 +98,52 @@ function kanelKyselyZodCompatibilityHook(path, lines) {
return line;
});
}
+/**@type {import("kanel").PostRenderHook} */
+function zodCaratteristicheHook(path, lines) {
+ if (path.includes("src\\schemas\\public\\Annunci.ts")) {
+ return lines.map(line => {
+
+ if (line.includes("kanel-types")) {
+ return "import { CaratteristicheSchema, type Caratteristiche } from '../../utils/kanel-types';"
+ }
+ if (line.includes("caratteristiche: z.unknown().optional().nullable()")) {
+ return line.replace("caratteristiche: z.unknown().optional().nullable()", "caratteristiche: CaratteristicheSchema.optional().nullable()")
+ }
+ if (line.includes("caratteristiche: z.unknown().nullable()")) {
+ return line.replace("caratteristiche: z.unknown().nullable()", "caratteristiche: CaratteristicheSchema.nullable()")
+ }
+
+ return line;
+ })
+ }
+ return lines
+}
+
+/**@type {import("kanel").PostRenderHook} */
+function zodUpdateInsertionDatesFix(path, lines) {
+ //z.date() -> z.union([z.date(), z.string()]).pipe(z.coerce.date())
+ let insideUpdateOrInsert = false;
+ return lines.map(line => {
+ if (line.includes("export const") && line.includes("UpdateSchema")) {
+ insideUpdateOrInsert = true;
+ }
+ if (line.includes("export const") && line.includes("New")) {
+ insideUpdateOrInsert = true;
+ }
+ if (insideUpdateOrInsert && line.includes("z.date()")) {
+ console.log(`Fixing line in ${path}: ${line}`);
+ return line.replace("z.date()", "z.union([z.date(), z.string()]).pipe(z.coerce.date())");
+ }
+
+ if (line.includes("import")) {
+ insideUpdateOrInsert = false;
+ }
+
+ return line;
+ })
+
+}
/** @type {import('kanel').Config} */
module.exports = {
connection: {
@@ -129,17 +174,17 @@ module.exports = {
}),
makeKyselyHook(),
makeGenerateZodSchemas({
- castToSchema: false
+ castToSchema: false,
+ zodTypeMap: {
+ ...defaultZodTypeMap,
+ "pg_catalog.numeric": "z.number()",
+ }
}),
],
}),
],
- postRenderHooks: [kanelKyselyZodCompatibilityHook],
+ postRenderHooks: [kanelKyselyZodCompatibilityHook, zodCaratteristicheHook, zodUpdateInsertionDatesFix],
preDeleteOutputFolder: true,
-
- typescriptConfig: {
- enumStyle: "enum",
- },
};
diff --git a/apps/infoalloggi/src/components/prezzi.tsx b/apps/infoalloggi/src/components/prezzi.tsx
index 9afac00..df89871 100644
--- a/apps/infoalloggi/src/components/prezzi.tsx
+++ b/apps/infoalloggi/src/components/prezzi.tsx
@@ -14,7 +14,8 @@ import {
import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/components/ui/tabs";
import { cn } from "~/lib/utils";
import { useTranslation } from "~/providers/I18nProvider";
-import TipologiaPosizioneEnum from "~/schemas/public/TipologiaPosizioneEnum";
+import type TipologiaPosizioneEnum from "~/schemas/public/TipologiaPosizioneEnum";
+import { tipologiaPosizioneEnum } from "~/schemas/public/TipologiaPosizioneEnum";
import { api } from "~/utils/api";
export const PricingChoice = () => {
@@ -63,7 +64,7 @@ export const PricingChoice = () => {
t.pricing_cmp.breve_option5,
]}
pricingData={pricingBreve}
- tipo={TipologiaPosizioneEnum.Transitorio}
+ tipo={tipologiaPosizioneEnum.enum.Transitorio}
title={t.prezzi.titolo_transitori}
/>
@@ -77,7 +78,7 @@ export const PricingChoice = () => {
t.pricing_cmp.stabile_option3,
]}
pricingData={pricingStabile}
- tipo={TipologiaPosizioneEnum.Stabile}
+ tipo={tipologiaPosizioneEnum.enum.Stabile}
title={t.prezzi.titolo_stabile}
/>
@@ -192,7 +193,7 @@ export const PricingComponent = ({
Contratto
- {tipo === TipologiaPosizioneEnum.Transitorio ? (
+ {tipo === tipologiaPosizioneEnum.enum.Transitorio ? (
:
}
Non in conferma
- {Object.values(StatusConfermaEnum).map((status) => (
+ {statusConfermaEnum.options.map((status) => (