From dc28e42baab5ca870443ddfef82dd77f8cd0242d Mon Sep 17 00:00:00 2001 From: Marco Pedone Date: Thu, 9 Apr 2026 16:04:55 +0200 Subject: [PATCH] refactor: remove unused incroci router and related components; update SCAN_DIRS and PROCEDURE_REGEX --- apps/infoalloggi/check-unused-trpc.ts | 15 ++- .../pages/area-riservata/admin/incroci.tsx | 121 ------------------ apps/infoalloggi/src/server/api/root.ts | 2 - .../src/server/api/routers/incroci.ts | 8 -- .../src/server/api/routers/potenziali.ts | 14 +- .../src/server/api/routers/prezziario.ts | 7 +- .../server/controllers/incroci.controller.ts | 36 ------ .../server/controllers/servizio.controller.ts | 33 ----- .../server/controllers/storage.controller.ts | 30 +---- .../src/server/services/fic.service.ts | 87 ------------- .../src/server/services/potenziali.service.ts | 20 --- 11 files changed, 15 insertions(+), 358 deletions(-) delete mode 100644 apps/infoalloggi/src/pages/area-riservata/admin/incroci.tsx delete mode 100644 apps/infoalloggi/src/server/api/routers/incroci.ts delete mode 100644 apps/infoalloggi/src/server/controllers/incroci.controller.ts delete mode 100644 apps/infoalloggi/src/server/services/fic.service.ts diff --git a/apps/infoalloggi/check-unused-trpc.ts b/apps/infoalloggi/check-unused-trpc.ts index 417cc0e..c2bc732 100644 --- a/apps/infoalloggi/check-unused-trpc.ts +++ b/apps/infoalloggi/check-unused-trpc.ts @@ -4,12 +4,21 @@ import * as path from "node:path"; // --- CONFIGURATION --- const ROOT_DIR: string = process.cwd(); const ROUTERS_DIR: string = path.join(ROOT_DIR, "src/server/api/routers"); -const SCAN_DIRS: string[] = [path.join(ROOT_DIR, "src")]; +const SCAN_DIRS: string[] = [ + path.join(ROOT_DIR, "src/pages"), + path.join(ROOT_DIR, "src/components"), + path.join(ROOT_DIR, "src/forms"), + path.join(ROOT_DIR, "src/hooks"), + path.join(ROOT_DIR, "src/lib"), + path.join(ROOT_DIR, "src/providers"), +]; const IGNORE_DIRS: string[] = ["node_modules", ".next", "dist"]; -// Regex to find tRPC procedure definitions +// Regex to find tRPC procedure definitions. +// Matches `procedureName: someProcedure` where the procedure type is one of the known base procedures. +// This handles chained .input()/.output() before .query/.mutation/.subscription. const PROCEDURE_REGEX: RegExp = - /([a-zA-Z0-9_]+)\s*:\s*[a-zA-Z0-9_.]+\.(?:query|mutation|subscription)\s*\(/g; + /([a-zA-Z0-9_]+)\s*:\s*(?:adminProcedure|protectedProcedure|publicProcedure)\b/g; interface ProcedureDefinition { name: string; diff --git a/apps/infoalloggi/src/pages/area-riservata/admin/incroci.tsx b/apps/infoalloggi/src/pages/area-riservata/admin/incroci.tsx deleted file mode 100644 index ee8e9cf..0000000 --- a/apps/infoalloggi/src/pages/area-riservata/admin/incroci.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import { format } from "date-fns"; -import type { GetServerSideProps } from "next"; -import Head from "next/head"; -import Link from "next/link"; -import { AreaRiservataLayout } from "~/components/Layout"; -import { LoadingPage } from "~/components/loading"; -import { Status500 } from "~/components/status-page"; -import { Button } from "~/components/ui/button"; -import { Separator } from "~/components/ui/separator"; -import type { NextPageWithLayout } from "~/pages/_app"; -import { TrpcAuthedFetchingIstance } from "~/server/utils/ssgHelper"; -import { api } from "~/utils/api"; - -/** - * Pagina di gestione incroci per admin: /area-riservata/admin/incroci - */ -const Incroci: NextPageWithLayout = () => { - const { data, isLoading } = api.incroci.getAll.useQuery(); - - if (isLoading) return ; - if (!data) return ; - - return ( - <> - - Incorici - Infoalloggi.it - - -
-
-
-

Incroci

-
-
-
- {data.map((incrocio) => ( -
-
- Cod: - {incrocio.codice} -
-
- Titolo: - {incrocio.titolo_it} -
-
- Richieste: -
-
    - {incrocio.richieste.map((r) => ( -
  • -
    - Username: - {r.username} -
    -
    - Aggiunto il: - - {format(new Date(r.created_at), "dd/MM/yyyy")} - -
    -
    - Aperto Contatti il: - - {r.open_contatti_at - ? format(new Date(r.open_contatti_at), "dd/MM/yyyy") - : "Non aperto"} - -
    -
    - Mandato conferma il: - - {r.user_confirmed_at - ? format(new Date(r.user_confirmed_at), "dd/MM/yyyy") - : "Non confermato"} - -
    -
    - Conferma da Admin: - {r.hasConfermaAdmin ? "Si" : "No"} -
    - - - - -
  • - ))} -
-
- ))} -
-
- - ); -}; - -export default Incroci; - -export const getServerSideProps = (async (context) => { - const access_token = context.req.cookies.access_token; - - const helpers = await TrpcAuthedFetchingIstance({ access_token }); - if (helpers) { - await helpers.trpc.incroci.getAll.prefetch(); - return { - props: { - trpcState: helpers.trpc.dehydrate(), - }, - }; - } - return { - props: {}, - }; -}) satisfies GetServerSideProps; - -Incroci.getLayout = function getLayout(page) { - return {page}; -}; diff --git a/apps/infoalloggi/src/server/api/root.ts b/apps/infoalloggi/src/server/api/root.ts index 013c347..2850e18 100644 --- a/apps/infoalloggi/src/server/api/root.ts +++ b/apps/infoalloggi/src/server/api/root.ts @@ -22,7 +22,6 @@ import { bannersRouter } from "./routers/banners"; import { catastoRouter } from "./routers/catasto"; import { etichetteRouter } from "./routers/etichette"; import { flagsRouter } from "./routers/flags"; -import { incrociRouter } from "./routers/incroci"; import { inviteRouter } from "./routers/invite"; import { potenzialiRouter } from "./routers/potenziali"; import { revalidationRouter } from "./routers/revalidation"; @@ -59,6 +58,5 @@ export const appRouter = createTRPCRouter({ revalidation: revalidationRouter, potenziali: potenzialiRouter, invite: inviteRouter, - incroci: incrociRouter, }); export type AppRouter = typeof appRouter; diff --git a/apps/infoalloggi/src/server/api/routers/incroci.ts b/apps/infoalloggi/src/server/api/routers/incroci.ts deleted file mode 100644 index 1328d27..0000000 --- a/apps/infoalloggi/src/server/api/routers/incroci.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { adminProcedure, createTRPCRouter } from "~/server/api/trpc"; -import { getAll } from "~/server/controllers/incroci.controller"; - -export const incrociRouter = createTRPCRouter({ - getAll: adminProcedure.query(async () => { - return await getAll(); - }), -}); diff --git a/apps/infoalloggi/src/server/api/routers/potenziali.ts b/apps/infoalloggi/src/server/api/routers/potenziali.ts index 210cb42..0cd201d 100644 --- a/apps/infoalloggi/src/server/api/routers/potenziali.ts +++ b/apps/infoalloggi/src/server/api/routers/potenziali.ts @@ -15,7 +15,6 @@ import { getPotenzialiGroups, type PotenzialeData, updatePotenziale, - updatePotenzialeGroup, updatePotenziali, } from "~/server/services/potenziali.service"; @@ -97,18 +96,7 @@ export const potenzialiRouter = createTRPCRouter({ .mutation(async ({ input }) => { return await addPotenzialeGroup({ name: input.name }); }), - updatePotenzialeGroup: adminProcedure - .input( - z.object({ - potenzialiGroupId: zPotenzialiGroupId, - name: z.string().min(1).max(255), - }), - ) - .mutation(async ({ input }) => { - return await updatePotenzialeGroup(input.potenzialiGroupId, { - name: input.name, - }); - }), + deletePotenzialeGroup: adminProcedure .input( z.object({ diff --git a/apps/infoalloggi/src/server/api/routers/prezziario.ts b/apps/infoalloggi/src/server/api/routers/prezziario.ts index d4af17f..af24ea5 100644 --- a/apps/infoalloggi/src/server/api/routers/prezziario.ts +++ b/apps/infoalloggi/src/server/api/routers/prezziario.ts @@ -14,7 +14,6 @@ import { db } from "~/server/db"; import { addPrezziario, getPrezziario, - getPrezziarioByIdHandler, getPrezziarioByTipologia, getPrezziarioConsulenza, updatePrezziario, @@ -81,11 +80,7 @@ export const prezziarioRouter = createTRPCRouter({ }), }; }), - getPrezzoPerServizio: publicProcedure - .input(z.object({ idprezziario: zPrezziarioId })) - .query(async ({ input }) => { - return await getPrezziarioByIdHandler(input.idprezziario); - }), + updatePrezziario: adminProcedure .input( z.object({ diff --git a/apps/infoalloggi/src/server/controllers/incroci.controller.ts b/apps/infoalloggi/src/server/controllers/incroci.controller.ts deleted file mode 100644 index 861cc35..0000000 --- a/apps/infoalloggi/src/server/controllers/incroci.controller.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { jsonArrayFrom } from "kysely/helpers/postgres"; -import { db } from "../db"; - -export const getAll = async () => { - const data = await db - .selectFrom("annunci") - .innerJoin("servizio_annunci", "servizio_annunci.annunci_id", "annunci.id") - - .select((eb) => [ - "annunci.id", - "annunci.titolo_it", - "annunci.codice", - jsonArrayFrom( - eb - .selectFrom("servizio_annunci") - .select([ - "servizio_annunci.open_contatti_at", - "servizio_annunci.servizio_id", - "servizio_annunci.created_at", - "servizio_annunci.user_confirmed_at", - "servizio_annunci.hasConfermaAdmin", - ]) - .leftJoin( - "servizio", - "servizio.servizio_id", - "servizio_annunci.servizio_id", - ) - .leftJoin("users", "users.id", "servizio.user_id") - .select(["users.username", "users.id as userId"]) - .whereRef("servizio_annunci.annunci_id", "=", "annunci.id"), - ).as("richieste"), - ]) - .groupBy("annunci.id") - .execute(); - return data; -}; diff --git a/apps/infoalloggi/src/server/controllers/servizio.controller.ts b/apps/infoalloggi/src/server/controllers/servizio.controller.ts index c28844a..0bd7efc 100644 --- a/apps/infoalloggi/src/server/controllers/servizio.controller.ts +++ b/apps/infoalloggi/src/server/controllers/servizio.controller.ts @@ -5,7 +5,6 @@ import { z } from "zod/v4"; import { env } from "~/env"; import { withParsedDates } from "~/lib/dateParserJsonKysely"; import type { Annunci, AnnunciId } from "~/schemas/public/Annunci"; -import OrderTypeEnum from "~/schemas/public/OrderTypeEnum"; import type { Ordini, OrdiniOrdineId } from "~/schemas/public/Ordini"; import type { Prezziario } from "~/schemas/public/Prezziario"; import type { @@ -38,40 +37,8 @@ import { withVideos, } from "~/utils/kysely-helper"; import { GetUserInterests } from "../services/interests.service"; -import { createOrdine } from "../services/ordini.service"; import { getServizioById } from "../services/servizio.service"; import type { AnnuncioRicerca } from "./annunci.controller"; -import { SaldoSolver } from "./pagamenti.controller"; - -export const getServiziByUserId = async (userId: UsersId) => { - try { - return await db - .selectFrom("servizio") - .selectAll("servizio") - .select((eb) => [ - jsonArrayFrom( - eb - .selectFrom("servizio_annunci") - .select(["servizio_annunci.annunci_id"]) - .innerJoin("annunci", "annunci.id", "servizio_annunci.annunci_id") - .select("annunci.codice") - .whereRef( - "servizio_annunci.servizio_id", - "=", - "servizio.servizio_id", - ), - ).as("annunci"), - ]) - .where("user_id", "=", userId) - .orderBy("created_at", "asc") - .execute(); - } catch (e) { - throw new TRPCError({ - code: "INTERNAL_SERVER_ERROR", - message: `Error fetching servizi by user ID: ${(e as Error).message}`, - }); - } -}; export const getDataPerAcquisto = async (servizioId: ServizioServizioId) => { try { diff --git a/apps/infoalloggi/src/server/controllers/storage.controller.ts b/apps/infoalloggi/src/server/controllers/storage.controller.ts index 90a2cb2..5e66793 100644 --- a/apps/infoalloggi/src/server/controllers/storage.controller.ts +++ b/apps/infoalloggi/src/server/controllers/storage.controller.ts @@ -1,9 +1,6 @@ import { TRPCError } from "@trpc/server"; import type { UsersId } from "~/schemas/public/Users"; -import type { - NewUsersStorage, - UsersStorageUserStorageId, -} from "~/schemas/public/UsersStorage"; +import type { NewUsersStorage } from "~/schemas/public/UsersStorage"; import { db, type Querier } from "~/server/db"; import { fetchFiles, retriveFilesSafely } from "../services/storage.service"; @@ -86,31 +83,6 @@ export const retrieveUserFiles = async ({ userId }: { userId: UsersId }) => { } }; -export const getStorageIdFromUserStorageId = async ({ - userStorageId, -}: { - userStorageId: UsersStorageUserStorageId; -}) => { - try { - const storage = await db - .selectFrom("users_storage") - .select("storageId") - .where("user_storage_id", "=", userStorageId) - .executeTakeFirstOrThrow( - () => - new Error( - `User storage entry not found - userStorageId: ${userStorageId}`, - ), - ); - return storage.storageId; - } catch (e) { - throw new TRPCError({ - code: "INTERNAL_SERVER_ERROR", - message: `Error while getting storage ID from user storage ID: ${(e as Error).message}`, - }); - } -}; - export const getAllWithFromAdmin = async () => { try { const files = await db diff --git a/apps/infoalloggi/src/server/services/fic.service.ts b/apps/infoalloggi/src/server/services/fic.service.ts deleted file mode 100644 index 617ba8f..0000000 --- a/apps/infoalloggi/src/server/services/fic.service.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { z } from "zod/v4"; - -const ClientTypeSchema = z.enum(["company", "person", "pa", "condo"]); - -const VatTypeSchema = z.object({ - description: z.string().nullish(), - e_invoice: z.boolean().nullish(), - editable: z.boolean().nullish(), - ei_description: z.string().nullish(), - ei_type: z.string().nullish(), - id: z.number().nullish(), - is_disabled: z.boolean().nullish(), - notes: z.string().nullish(), - value: z.number().nullish(), -}); - -const PaymentTermsTypeSchema = z.enum(["standard", "end_of_month"]); -const PaymentMethodTypeSchema = z.enum(["standard", "riba"]); -const PaymentAccountTypeSchema = z.enum(["standard", "bank"]); -const PaymentAccountSchema = z.object({ - cuc: z.string().nullish(), - iban: z.string().nullish(), - id: z.number().nullish(), - name: z.string().nullish(), - sia: z.string().nullish(), - type: PaymentAccountTypeSchema.optional(), - virtual: z.boolean().nullish(), -}); - -const PaymentMethodDetailsSchema = z.object({ - description: z.string().nullish(), - title: z.string().nullish(), -}); - -const PaymentMethodSchema = z.object({ - bank_beneficiary: z.string().nullish(), - bank_iban: z.string().nullish(), - bank_name: z.string().nullish(), - default_payment_account: PaymentAccountSchema.nullish(), - details: z.array(PaymentMethodDetailsSchema).optional(), - ei_payment_method: z.string().nullish(), - id: z.number().nullish(), - is_default: z.boolean().nullish(), - name: z.string().nullish(), - type: PaymentMethodTypeSchema.optional(), -}); - -export const ClientSchema = z.object({ - address_city: z.string().nullish(), - address_extra: z.string().nullish(), - address_postal_code: z.string().nullish(), - address_province: z.string().nullish(), - address_street: z.string().nullish(), - bank_iban: z.string().nullish(), - bank_name: z.string().nullish(), - bank_swift_code: z.string().nullish(), - certified_email: z.string().nullish(), - code: z.string().nullish(), - contact_person: z.string().nullish(), - country: z.string().nullish(), - country_iso: z.string().nullish(), - created_at: z.string().nullish(), - default_discount: z.number().nullish(), - default_payment_method: PaymentMethodSchema.optional(), - default_payment_terms: z.number().nullish(), - default_payment_terms_type: PaymentTermsTypeSchema.optional(), - default_vat: VatTypeSchema.nullish(), - discount_highlight: z.boolean().nullish(), - e_invoice: z.boolean().nullish(), - ei_code: z.string().nullish(), - email: z.string().nullish(), - fax: z.string().nullish(), - first_name: z.string().nullish(), - has_intent_declaration: z.boolean().nullish(), - id: z.number().nullish(), - intent_declaration_protocol_date: z.string().nullish(), - intent_declaration_protocol_number: z.string().nullish(), - last_name: z.string().nullish(), - name: z.string().nullish(), - notes: z.string().nullish(), - phone: z.string().nullish(), - shipping_address: z.string().nullish(), - tax_code: z.string().nullish(), - type: ClientTypeSchema.nullish(), - updated_at: z.string().nullish(), - vat_number: z.string().nullish(), -}); diff --git a/apps/infoalloggi/src/server/services/potenziali.service.ts b/apps/infoalloggi/src/server/services/potenziali.service.ts index 6e64be0..929f2f0 100644 --- a/apps/infoalloggi/src/server/services/potenziali.service.ts +++ b/apps/infoalloggi/src/server/services/potenziali.service.ts @@ -10,7 +10,6 @@ import type { NewPotenzialiGroups, PotenzialiGroups, PotenzialiGroupsId, - PotenzialiGroupsUpdate, } from "~/schemas/public/PotenzialiGroups"; import type { Users } from "~/schemas/public/Users"; import { db } from "../db"; @@ -89,25 +88,6 @@ export const deletePotenzialeGroup = async (id: PotenzialiGroupsId) => { } }; -export const updatePotenzialeGroup = async ( - id: PotenzialiGroupsId, - data: PotenzialiGroupsUpdate, -) => { - try { - await db - .updateTable("potenziali_groups") - .set(data) - .where("id", "=", id) - .execute(); - return { status: "success" }; - } catch (e) { - throw new TRPCError({ - code: "INTERNAL_SERVER_ERROR", - message: `Failed to update potenziale group, error: ${(e as Error).message}`, - }); - } -}; - export const addPotenziale = async (data: NewPotenziali) => { try { await db.insertInto("potenziali").values(data).execute();