From 9b6b842c2d55caed5a2014531f7db7619dc94ac1 Mon Sep 17 00:00:00 2001 From: Vins Date: Mon, 11 Dec 2023 16:46:03 +0100 Subject: [PATCH] Created a prod seeder and seeded pro db --- src/common/databases/seeders/prod-seeder.ts | 1336 +++++++++++++++++++ 1 file changed, 1336 insertions(+) create mode 100644 src/common/databases/seeders/prod-seeder.ts diff --git a/src/common/databases/seeders/prod-seeder.ts b/src/common/databases/seeders/prod-seeder.ts new file mode 100644 index 00000000..b2e816bf --- /dev/null +++ b/src/common/databases/seeders/prod-seeder.ts @@ -0,0 +1,1336 @@ +import { EOfficeStatus, Prisma, PrismaClient } from "@prisma/client"; +import { + Address, + Deed, + DeedType, + DocumentType, + Office, + OfficeRole, + Role, + Rule, +} from "le-coffre-resources/dist/SuperAdmin"; + +import "module-alias/register"; + +export default async function main() { + try { + const prisma = new PrismaClient(); + + const addresses: Address[] = [ + { + address: "template", + city: "template", + zip_code: 0o00, + created_at: new Date(), + updated_at: new Date(), + }, + ]; + + const offices: Office[] = [ + { + idNot: "0000", + name: "Office Template", + crpcen: "0000", + address: addresses[0], + created_at: new Date(), + updated_at: new Date(), + office_status: EOfficeStatus.ACTIVATED, + }, + ]; + + const rules: Rule[] = [ + { + name: "GET users", + label: "Lecture des utilisateurs", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET offices", + label: "Afficher des offices", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET customers", + label: "Afficher des clients", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET deeds", + label: "Voir des types d'acte", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET deed-types", + label: "Lecture des types d'actes", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET documents", + label: "Afficher des documents", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET document-types", + label: "Lecture des types de documents", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET files", + label: "Lecture des fichiers", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET folders", + label: "Afficher les dossiers", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET roles", + label: "Afficher les rôles", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET rules", + label: "Afficher les droits", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "GET office-roles", + label: "Lecture des rôles d'office", + created_at: new Date(), + updated_at: new Date(), + namespace: "collaborator", + }, + { + name: "POST deeds", + label: "Créer un template de type d'acte", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "PUT deeds", + label: "Modifier un type d'acte", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "DELETE deeds", + label: "Supprimer des types d'actes", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "POST folders", + label: "Créer un dossier", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "PUT folders", + label: "Modifier des dossiers", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "DELETE folders", + label: "Supprimer un dossier vide", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "POST documents", + label: "Demander des documents à un client", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "PUT documents", + label: "Valider des documents", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "DELETE documents", + label: "Supprimer un document demandé", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "POST customers", + label: "Créer des clients", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "PUT customers", + label: "Modifier des clients", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "DELETE customers", + label: "Supprimer un client", + created_at: new Date(), + updated_at: new Date(), + namespace: "super-admin", + }, + { + name: "POST anchors", + label: "Ancrer un dossier", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "GET anchors", + label: "Vérifier l'ancrage un dossier", + created_at: new Date(), + updated_at: new Date(), + namespace: "notary", + }, + { + name: "POST deed-types", + label: "Création des types d'actes", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "PUT deed-types", + label: "Modification des types d'actes", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "DELETE deed-types", + label: "Suppression des types d'actes", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "POST document-types", + label: "Création des types de documents", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "PUT document-types", + label: "Modification des types de documents", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "DELETE document-types", + label: "Suppression des types de documents", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "POST office-roles", + label: "Création des rôles d'office", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "PUT office-roles", + label: "Modification des rôles d'office", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "DELETE office-roles", + label: "Suppression des rôles d'office", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "PUT users", + label: "Modification des utilisateurs", + created_at: new Date(), + updated_at: new Date(), + namespace: "admin", + }, + { + name: "DELETE office-roles", + label: "Suppression des rôles d'office", + created_at: new Date(), + updated_at: new Date(), + namespace: "super-admin", + }, + { + name: "PUT offices", + label: "Modification des offices", + created_at: new Date(), + updated_at: new Date(), + namespace: "super-admin", + }, + ]; + + const collaboratorRules = rules.filter((rule) => rule.namespace === "collaborator"); + const notaryRules = [...collaboratorRules, ...rules.filter((rule) => rule.namespace === "notary")]; + const adminRules = [...notaryRules, ...rules.filter((rule) => rule.namespace === "admin")]; + const superAdminRules = [...adminRules, ...rules.filter((rule) => rule.namespace === "super-admin")]; + + const roles: Role[] = [ + { + name: "super-admin", + label: "Super administrateur", + created_at: new Date(), + updated_at: new Date(), + rules: superAdminRules, + }, + { + name: "admin", + label: "Administrateur", + created_at: new Date(), + updated_at: new Date(), + rules: adminRules, + }, + { + name: "notary", + label: "Notaire", + created_at: new Date(), + updated_at: new Date(), + rules: [], + }, + { + name: "default", + label: "Utilisateur", + created_at: new Date(), + updated_at: new Date(), + rules: [], + }, + ]; + + const officeRoles: OfficeRole[] = [ + { + name: "Notaire", + created_at: new Date(), + updated_at: new Date(), + office: offices[0]!, + rules: notaryRules, + }, + { + name: "Collaborateur", + created_at: new Date(), + updated_at: new Date(), + office: offices[0]!, + rules: notaryRules, + }, + ]; + + const documentTypes: DocumentType[] = [ + { + archived_at: null, + name: "Carte Nationale d'Identité recto-verso", + office: offices[0], + private_description: "Document d'identité", + public_description: "Document d'identité", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Contrat de mariage", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Convention de PACS", + office: offices[0], + private_description: " ", + public_description: "Avec précision du régime", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Titre de propriété", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Cahier des charges du lotissement", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Règlement du lotissement", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Cahier de prescriptions architecturales", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Statuts de l'association syndicale libre", + office: offices[0], + private_description: " ", + public_description: "Avec nom et adresse du président", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Etat descriptif de division et règlement de copropriété", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Etat descriptif de division et règlement de copropriété modificatifs", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Carnet d'entretien", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Trois derniers PV D'AG", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Trois derniers relevés de charge", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Bail ou congé délivré", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Certificat d'assainissement", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Facture ou contrat d'electricité", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Facture ou contrat de gaz", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Loi carrez", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Etat parasitaire", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Amiante", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Facture des travaux", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Garanties décénales des entreprises", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "PV de réception des travaux", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Permis de construire et modificatifs", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Déclaration attestation l'achèvement des travaux", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Attestation de non opposition", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Assurance décenale", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Dommage ouvrage", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Dernière facture ramonage", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Liste du mobilier", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "RIB daté et signé", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Extrait KBIS et statuts de la société", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Document arpentage et plan de division", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Accord de prêt", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Offre de prêt", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Attestation dépôt de permis de construire", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Permis de construire", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Extrait acte de décès", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Fiche de renseignements d'états civils", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Donation entre epoux", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Testament", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Liste des banques avce un compte bancaire", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Contrat d'assurance-vie", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Liste des caisses versant une retraite ou une pension", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Dernière déclaration de revenus", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Avis d'imposition (revenus et ISF)", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Avis d'imposition (foncier et habitation)", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Liste des emprunts en cours", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Actes de donation", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Déclarations de dons faites aux impôts", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Actes de succession", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Actes de vente de biens", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Factures de travaux", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Bail de location", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Nom et adresse du Syndic", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Liste des autres biens", + office: offices[0], + private_description: " ", + public_description: + "Exemple: PEE, PER, parts de société, bijoux de valeur et oeuvres d'art, fonds de commerce, fonds artisanal, entreprise commerciale, exploitation agricole...", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Caution, Prestation compensatoire, Pension alimentaire", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Titre de propriété des biens", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Tableaux d'amortissement des prêts immobiliers", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Cartes grises et cotes ARGUS des véhicules", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Etat des avoirs bancaires", + office: offices[0], + private_description: " ", + public_description: "Joints ou individuels au jour de la séparation", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Avoirs mobiliers", + office: offices[0], + private_description: " ", + public_description: + "arrêtés à la date de la séparation (relevés de comptes épargne entreprise, épargne retraite, assurance-vie...)", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Livret de famille", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Dernières régularisations de charges", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Diagnostic de Performance Energétique (DPE)", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Avis d'imposition N-1", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Avis d'imposition N-2", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Contrat de travail", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Trois derniers bulletins de salaire", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Bilan comptable", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Trois dernières quittances de loyers ou attestation d'hébergement", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Taxe foncière", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + archived_at: null, + name: "Justificatif de domicile", + office: offices[0], + private_description: " ", + public_description: " ", + created_at: new Date(), + updated_at: new Date(), + }, + { + name: "Autres documents", + archived_at: null, + public_description: "Autres documents", + private_description: "Autres documents", + office: offices[0], + created_at: new Date(), + updated_at: new Date(), + }, + ]; + + const deedTypes: DeedType[] = [ + { + name: "Promesse de vente", + archived_at: null, + description: "Promesse de vente entre deux partis", + office: offices[0], + created_at: new Date(), + updated_at: new Date(), + document_types: [...documentTypes.slice(0, 31), documentTypes[66]!], + }, + { + name: "Acte de vente", + archived_at: null, + description: "Acte de vente", + office: offices[0], + created_at: new Date(), + updated_at: new Date(), + document_types: documentTypes.slice(30, 36), + }, + { + name: "Acte de succession", + archived_at: null, + description: "Acte de succession", + office: offices[0], + created_at: new Date(), + updated_at: new Date(), + document_types: [...documentTypes.slice(36, 56), documentTypes[62]!, documentTypes[30]!], + }, + { + name: "Acte de divorce", + archived_at: null, + description: "Acte de divorce", + office: offices[0], + created_at: new Date(), + updated_at: new Date(), + document_types: [...documentTypes.slice(57, 62), documentTypes[30]!, documentTypes[0]!], + }, + { + name: "Acte de donation", + archived_at: null, + description: "Acte de donation", + office: offices[0], + created_at: new Date(), + updated_at: new Date(), + document_types: [documentTypes[0]!, documentTypes[62]!, documentTypes[57]!], + }, + { + name: "Bail d'habitation", + archived_at: null, + description: "Bail d'habitation", + office: offices[0], + created_at: new Date(), + updated_at: new Date(), + document_types: [documentTypes[0]!, documentTypes[30]!, documentTypes[57]!, ...documentTypes.slice(62)], + }, + ]; + + const deeds: Deed[] = [ + { + deed_type: deedTypes[0], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[0], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[0], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[0], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[0], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[0], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[0], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[1], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[1], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[1], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[1], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[1], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[1], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[1], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[2], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[2], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[2], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[2], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[2], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[2], + created_at: new Date(), + updated_at: new Date(), + }, + { + deed_type: deedTypes[2], + created_at: new Date(), + updated_at: new Date(), + }, + ]; + + for (const office of offices) { + const officeCreated = await prisma.offices.create({ + data: { + idNot: office.idNot!, + name: office.name, + crpcen: office.crpcen, + address: { + create: { + address: office.address!.address, + zip_code: office.address!.zip_code, + city: office.address!.city, + }, + }, + office_status: EOfficeStatus.ACTIVATED, + }, + }); + office.uid = officeCreated.uid; + } + + for (const rule of rules) { + const ruleCreated = await prisma.rules.create({ + data: { + name: rule.name, + label: rule.label, + namespace: rule.namespace, + }, + }); + rule.uid = ruleCreated.uid; + } + + for (const role of roles) { + const roleCreated = await prisma.roles.create({ + data: { + name: role.name, + label: role.label, + rules: { + connect: role.rules?.map((rule) => ({ + uid: rule.uid!, + })), + }, + }, + }); + role.uid = roleCreated.uid; + } + + for (const officeRole of officeRoles) { + const officeRoleCreated = await prisma.officeRoles.create({ + data: { + name: officeRole.name, + office: { + connect: { + uid: officeRole.office.uid, + }, + }, + rules: { + connect: officeRole.rules?.map((rule) => ({ + uid: rule.uid!, + })), + }, + }, + }); + officeRole.uid = officeRoleCreated.uid; + } + + for (const documentType of documentTypes) { + const documentTypeCreated = await prisma.documentTypes.create({ + data: { + name: documentType.name, + public_description: documentType.public_description, + private_description: documentType.private_description, + office: { + connect: { + uid: documentType.office!.uid, + }, + }, + }, + }); + documentType.uid = documentTypeCreated.uid; + } + + for (const deedType of deedTypes) { + const createArgs: Prisma.DeedTypesCreateArgs = { + data: { + name: deedType.name, + description: deedType.description, + office: { + connect: { + uid: deedType.office!.uid, + }, + }, + }, + }; + if (deedType.document_types) { + createArgs.data.document_types = { + connect: deedType.document_types.map((documentType) => ({ + uid: documentType.uid, + })), + }; + } + const deedTypeCreated = await prisma.deedTypes.create(createArgs); + deedType.uid = deedTypeCreated.uid; + } + + for (const deed of deeds) { + const createArgs: Prisma.DeedsCreateArgs = { + data: { + deed_type: { + connect: { + uid: deed.deed_type!.uid, + }, + }, + }, + }; + const deedTypeWithDocumentTypes = await prisma.deedTypes.findUniqueOrThrow({ + where: { + uid: deed.deed_type!.uid, + }, + include: { document_types: true }, + }); + + if (deedTypeWithDocumentTypes.document_types) { + createArgs.data.document_types = { + connect: deedTypeWithDocumentTypes.document_types.map((documentType) => ({ + uid: documentType.uid, + })), + }; + } + const deedCreated = await prisma.deeds.create(createArgs); + deed.uid = deedCreated.uid; + } + + console.log(">MOCK DATA - Seeding completed!"); + } catch (error) { + console.log(error); + console.log("Data already seeded, skiping"); + } +} +main();