From 004c4b0c68268ea772bfd149c2cc718055751689 Mon Sep 17 00:00:00 2001 From: sroccaserra Date: Fri, 2 Dec 2022 15:31:21 +0100 Subject: [PATCH] =?UTF-8?q?chore:=20S=C3=A9pare=20les=20migrations=20prism?= =?UTF-8?q?a=20de=20la=20webapp=20et=20de=20l'ELT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Car les deux écrivent dans des schémas séparés, et que la feature "multiSchema" de prisma est encore en preview et ne supporte pas les migration (on a eu des erreurs PG 42P07 lors des prisma migrate reset) - https://github.com/prisma/prisma/issues/15077#issuecomment-1251371544 --- data/README.md | 10 ++++++ .../20221202142049_init}/migration.sql | 24 ++------------ data/prisma/migrations/migration_lock.toml | 3 ++ data/prisma/schema.prisma | 32 +++++++++++++++++++ data/prisma/seed.ts | 15 +++++++++ package.json | 2 +- .../20221202143013_init/migration.sql | 16 ++++++++++ prisma/schema.prisma | 31 ------------------ scripts/drop_raw_data.sql | 1 - 9 files changed, 79 insertions(+), 55 deletions(-) rename {prisma/migrations/20221201133748_init => data/prisma/migrations/20221202142049_init}/migration.sql (55%) create mode 100644 data/prisma/migrations/migration_lock.toml create mode 100644 data/prisma/schema.prisma create mode 100644 data/prisma/seed.ts create mode 100644 prisma/migrations/20221202143013_init/migration.sql delete mode 100644 scripts/drop_raw_data.sql diff --git a/data/README.md b/data/README.md index 423da8b27..d585b4c14 100644 --- a/data/README.md +++ b/data/README.md @@ -23,6 +23,16 @@ data/input_data/ └── views ``` +# Initialisation de la base de données + +Pré-requis : avoir configuré et initialisé votre base de données de Webapp comme précisé dans le README.md de la racine. + +Sur un poste de dev, depuis le répertoire data : + +```bash +npx prisma migrate dev +``` + # Schéma des flux de données Ce document souhaite poser les bases des flux de données alimentant l'application [Pilote 2](). @Fabien ajouter lien vers l'app diff --git a/prisma/migrations/20221201133748_init/migration.sql b/data/prisma/migrations/20221202142049_init/migration.sql similarity index 55% rename from prisma/migrations/20221201133748_init/migration.sql rename to data/prisma/migrations/20221202142049_init/migration.sql index f871b1a90..571373a70 100644 --- a/prisma/migrations/20221201133748_init/migration.sql +++ b/data/prisma/migrations/20221202142049_init/migration.sql @@ -1,8 +1,5 @@ --- CreateSchema -CREATE SCHEMA IF NOT EXISTS "raw_data"; - -- CreateTable -CREATE TABLE "raw_data"."metadata_chantier" ( +CREATE TABLE "metadata_chantier" ( "chantier_id" TEXT NOT NULL, "ch_code" TEXT, "ch_descr" TEXT, @@ -19,7 +16,7 @@ CREATE TABLE "raw_data"."metadata_chantier" ( ); -- CreateTable -CREATE TABLE "raw_data"."metadata_perimetre" ( +CREATE TABLE "metadata_perimetre" ( "perimetre_id" TEXT NOT NULL, "per_nom" TEXT NOT NULL, "per_short" TEXT, @@ -27,20 +24,3 @@ CREATE TABLE "raw_data"."metadata_perimetre" ( CONSTRAINT "metadata_perimetre_pkey" PRIMARY KEY ("perimetre_id") ); - --- CreateTable -CREATE TABLE "public"."chantier" ( - "id" TEXT NOT NULL, - "nom" TEXT NOT NULL, - "id_perimetre" TEXT NOT NULL, - - CONSTRAINT "chantier_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "public"."perimetre" ( - "id" TEXT NOT NULL, - "nom" TEXT NOT NULL, - - CONSTRAINT "perimetre_pkey" PRIMARY KEY ("id") -); diff --git a/data/prisma/migrations/migration_lock.toml b/data/prisma/migrations/migration_lock.toml new file mode 100644 index 000000000..fbffa92c2 --- /dev/null +++ b/data/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" \ No newline at end of file diff --git a/data/prisma/schema.prisma b/data/prisma/schema.prisma new file mode 100644 index 000000000..7c6e3b08e --- /dev/null +++ b/data/prisma/schema.prisma @@ -0,0 +1,32 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("ELT_DATABASE_URL") +} + +model metadata_chantier { + chantier_id String @id + ch_code String? + ch_descr String? + ch_nom String + ch_ppg String + ch_perseverant String? + porteur_shorts_noDAC String + porteur_ids_noDAC String + porteur_shorts_DAC String? + porteur_ids_DAC String? + ch_per String +} + +model metadata_perimetre { + perimetre_id String @id + per_nom String + per_short String? + per_picto String? +} diff --git a/data/prisma/seed.ts b/data/prisma/seed.ts new file mode 100644 index 000000000..952c77e14 --- /dev/null +++ b/data/prisma/seed.ts @@ -0,0 +1,15 @@ +import { PrismaClient } from '@prisma/client'; + +const prisma = new PrismaClient(); + +async function main() { +} +main() + .then(async () => { + await prisma.$disconnect(); + }) + .catch(async (error) => { + console.error(error); + await prisma.$disconnect(); + process.exit(1); + }); diff --git a/package.json b/package.json index d6f58774c..29a92307e 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "test:server": "npm run test:server:unit && npm run test:server:integration", "test:server:unit": "jest src/server/.*.unit.test.* src/utils/.*.unit.test.*", "test:server:integration": "jest --config=jest.integration.config.js src/server/.*.integration.test.*", - "database:init": "prisma db execute --file scripts/drop.sql && prisma migrate reset" + "database:init": "prisma migrate reset" }, "browserslist": { "production": [ diff --git a/prisma/migrations/20221202143013_init/migration.sql b/prisma/migrations/20221202143013_init/migration.sql new file mode 100644 index 000000000..366072bb4 --- /dev/null +++ b/prisma/migrations/20221202143013_init/migration.sql @@ -0,0 +1,16 @@ +-- CreateTable +CREATE TABLE "chantier" ( + "id" TEXT NOT NULL, + "nom" TEXT NOT NULL, + "id_perimetre" TEXT NOT NULL, + + CONSTRAINT "chantier_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "perimetre" ( + "id" TEXT NOT NULL, + "nom" TEXT NOT NULL, + + CONSTRAINT "perimetre_pkey" PRIMARY KEY ("id") +); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 64fb12e4f..d7b84ee4b 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -3,51 +3,20 @@ generator client { provider = "prisma-client-js" - previewFeatures = ["multiSchema"] } datasource db { provider = "postgresql" url = env("DATABASE_URL") - schemas = ["raw_data", "public"] -} - -model metadata_chantier { - chantier_id String @id - ch_code String? - ch_descr String? - ch_nom String - ch_ppg String - ch_perseverant String? - porteur_shorts_noDAC String - porteur_ids_noDAC String - porteur_shorts_DAC String? - porteur_ids_DAC String? - ch_per String - - @@schema("raw_data") -} - -model metadata_perimetre { - perimetre_id String @id - per_nom String - per_short String? - per_picto String? - - @@schema("raw_data") } model chantier { id String @id nom String id_perimetre String - - @@schema("public") } model perimetre { id String @id nom String - - @@schema("public") } diff --git a/scripts/drop_raw_data.sql b/scripts/drop_raw_data.sql deleted file mode 100644 index 53d34c3d1..000000000 --- a/scripts/drop_raw_data.sql +++ /dev/null @@ -1 +0,0 @@ -drop schema if exists raw_data cascade;