diff --git a/AGENTS.md b/AGENTS.md index 1602cf9d07..45f4c60512 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -35,7 +35,7 @@ Plugins use TS module augmentation to extend `ProjectStore` and `Config` interfa ## Database (Prisma) -Multi-file schema in `apps/server/src/prisma/schema/*.prisma` (project, user, token, admin, topography). +Multi-file schema in `packages/database/prisma/schema/*.prisma` (project, user, token, admin, topography). Migrations: standard Prisma Migrate. Major version data migrations in `migrations/v9/`. ## Environment config diff --git a/apps/client/src/utils/env.ts b/apps/client/src/utils/env.ts index a6f6ffd166..57ad1f789f 100644 --- a/apps/client/src/utils/env.ts +++ b/apps/client/src/utils/env.ts @@ -1,18 +1,18 @@ export const serverHost: string = process.env.SERVER_HOST ?? 'dso-server-host' -export const serverPort: string = process.env.SERVER_PORT ?? 'dso-server-port' +export const serverPort: string = '4001' export const clientPort: string = process.env.CLIENT_PORT ?? 'dso-client-port' -export const keycloakProtocol: string = process.env.KEYCLOAK_PROTOCOL ?? 'dso-keycloak-protocol' +export const keycloakProtocol: string = 'https' -export const keycloakDomain: string = process.env.KEYCLOAK_DOMAIN ?? 'dso-keycloak-domain' +export const keycloakDomain: string = 'keycloak.dso.cpin-hp.numerique-interieur.fr' -export const keycloakRealm: string = process.env.KEYCLOAK_REALM ?? 'dso-keycloak-realm' +export const keycloakRealm: string = 'dso' -export const keycloakClientId: string = process.env.KEYCLOAK_CLIENT_ID ?? 'dso-keycloak-client-id' +export const keycloakClientId: string = 'console-frontend' -export const keycloakRedirectUri: string = process.env.KEYCLOAK_REDIRECT_URI ?? 'dso-keycloak-redirect-uri' +export const keycloakRedirectUri: string = 'http://localhost:8080' export const contactEmail: string = process.env.CONTACT_EMAIL ?? 'cloudpinative-relations@interieur.gouv.fr' diff --git a/apps/server-nestjs/Dockerfile b/apps/server-nestjs/Dockerfile index 239c894696..ebcc09e64f 100644 --- a/apps/server-nestjs/Dockerfile +++ b/apps/server-nestjs/Dockerfile @@ -18,6 +18,7 @@ COPY --chown=node:root apps/server-nestjs/package.json ./apps/server-n COPY --chown=node:root packages/eslintconfig/package.json ./packages/eslintconfig/package.json COPY --chown=node:root packages/shared/package.json ./packages/shared/package.json COPY --chown=node:root packages/logger/package.json ./packages/logger/package.json +COPY --chown=node:root packages/database/package.json ./packages/database/package.json COPY --chown=node:root packages/hooks/package.json ./packages/hooks/package.json COPY --chown=node:root packages/test-utils/package.json ./packages/test-utils/package.json COPY --chown=node:root packages/tsconfig/package.json ./packages/tsconfig/package.json @@ -37,11 +38,10 @@ COPY --chown=node:root plugins/ ./plugins/ COPY --chown=node:root packages/ ./packages/ COPY --chown=node:root apps/server-nestjs/ ./apps/server-nestjs/ -# Générer le client Prisma (schéma multi-fichiers : pointer sur le dossier) -RUN pnpm --filter @cpn-console/server-nestjs exec prisma generate \ - --schema=src/prisma/schema +# Générer le client Prisma depuis le package partagé +RUN pnpm --filter @cpn-console/database run generate -ENTRYPOINT ["pnpm", "--filter", "server-nestjs", "run"] +ENTRYPOINT ["pnpm", "--filter", "@cpn-console/server-nestjs", "run"] CMD ["start:dev"] # Build stage ---------------------------------------------------------------------- @@ -59,6 +59,7 @@ RUN pnpm --filter @cpn-console/server-nestjs run build # Export @cpn-console/server to target build directory RUN pnpm --filter @cpn-console/server-nestjs --prod deploy build +RUN cd /app/build && /app/packages/database/node_modules/.bin/prisma generate --schema=node_modules/@cpn-console/database/prisma/schema # Prod stage ----------------------------------------------------------------------- FROM docker.io/node:24.13.1-bullseye-slim AS prod @@ -79,8 +80,6 @@ COPY --chown=node:root --from=build /app/apps/server-nestjs/dist ./dist # COPY --chown=node:root --from=build /app/build/node_modules ./node_modules # Regénérer le client Prisma dans l'image de production -RUN npm run db:generate - USER node EXPOSE 3001 diff --git a/apps/server-nestjs/Makefile b/apps/server-nestjs/Makefile new file mode 100644 index 0000000000..04093bc312 --- /dev/null +++ b/apps/server-nestjs/Makefile @@ -0,0 +1,24 @@ +PNPM = corepack pnpm + +-include .env +ifeq ($(DOCKER),true) +-include .env.docker +endif +ifeq ($(INTEGRATION),true) +-include .env.integ +endif + +db-generate: + $(PNPM) --filter @cpn-console/database run generate + +db-migrate: + $(PNPM) --filter @cpn-console/database run migrate + +db-deploy: + $(PNPM) --filter @cpn-console/database run deploy + +db-diff: + $(PNPM) --filter @cpn-console/database run diff + +db-reset: + $(PNPM) --filter @cpn-console/database run reset diff --git a/apps/server-nestjs/documentation/mise-en-place-nginx-etrangleur/PLAN.md b/apps/server-nestjs/documentation/mise-en-place-nginx-etrangleur/PLAN.md index b7ba2c4258..85bbf75839 100644 --- a/apps/server-nestjs/documentation/mise-en-place-nginx-etrangleur/PLAN.md +++ b/apps/server-nestjs/documentation/mise-en-place-nginx-etrangleur/PLAN.md @@ -62,7 +62,7 @@ - Le nginx existant dans l'image `client` proxifiait directement vers `server:8080` — upstream changé vers `nginx-strangler:8080` - `server-nestjs/src/main.ts` utilisait `process.env.PORT ?? 0` au lieu de `ConfigurationService.port` — corrigé -- Le schéma Prisma de `server-nestjs` est multi-fichiers dans `src/prisma/schema/` — `prisma generate` doit pointer sur le dossier, pas sur `schema.prisma` +- Le schéma Prisma est multi-fichiers dans `packages/database/prisma/schema/` — `prisma generate` doit pointer sur le dossier, pas sur `schema.prisma` - En CI (`job-lint.yml`), `nginx -t` échoue si `apt-get update -qq` n'est pas exécuté avant l'install, et si les chemins `pid`/`error_log`/`access_log` ne sont pas patchés vers `/tmp/` (runner non-root) - En CI (`job-playwright.yml`), les images `server-nestjs:ci` et `nginx-strangler:ci` doivent être buildées localement avant le `docker compose up --no-build` (même pattern que `opencds-mockoon`) @@ -134,7 +134,7 @@ location = /api/v1/system/health { ### Tâche 2.2 : Créer `apps/server-nestjs/Dockerfile` ✅ -Multi-stage : `base` → `deps` → `build` → `prod`. `prisma generate --schema=src/prisma/schema` (dossier multi-fichiers). `USER node`, `HEALTHCHECK`, `EXPOSE 3001`. +Multi-stage : `base` → `deps` → `build` → `prod`. `pnpm --filter @cpn-console/database run generate` (schéma multi-fichiers). `USER node`, `HEALTHCHECK`, `EXPOSE 3001`. ### Tâche 2.3 : `apps/server-nestjs/.env.docker-example` ✅ diff --git a/apps/server-nestjs/package.json b/apps/server-nestjs/package.json index c5cff207fc..9bfd330bbc 100644 --- a/apps/server-nestjs/package.json +++ b/apps/server-nestjs/package.json @@ -11,24 +11,20 @@ }, "scripts": { "build": "nest build", - "db:generate": "prisma generate", - "db:migrate": "prisma migrate dev --name dso", - "db:reset": "prisma migrate reset", "format": "eslint ./ --fix", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "start": "nest start", "start:debug": "nest start --debug --watch", "start:dev": "nest start --watch", "start:prod": "node dist/main", - "pretest": "pnpm run db:generate", "test": "vitest run", "test:watch": "vitest", - "pretest:cov": "pnpm run db:generate", "test:cov": "vitest run --coverage", "test:debug": "vitest --inspect" }, "dependencies": { "@cpn-console/argocd-plugin": "workspace:^", + "@cpn-console/database": "workspace:^", "@cpn-console/gitlab-plugin": "workspace:^", "@cpn-console/harbor-plugin": "workspace:^", "@cpn-console/hooks": "workspace:^", @@ -63,7 +59,6 @@ "@opentelemetry/sdk-metrics": "^2.5.1", "@opentelemetry/sdk-node": "^0.212.0", "@opentelemetry/sdk-trace-node": "^2.5.1", - "@prisma/client": "^6.19.2", "@ts-rest/core": "^3.52.1", "@ts-rest/fastify": "^3.52.1", "@ts-rest/open-api": "^3.52.1", @@ -76,7 +71,6 @@ "mustache": "^4.2.0", "nestjs-pino": "^4.6.0", "pino-http": "^11.0.0", - "prisma": "^6.19.2", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.2", "undici": "^7.24.0", diff --git a/apps/server-nestjs/prisma.config.ts b/apps/server-nestjs/prisma.config.ts deleted file mode 100644 index 34e0d644d9..0000000000 --- a/apps/server-nestjs/prisma.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -import path from 'node:path' -import * as dotenv from 'dotenv' -import { defineConfig } from 'prisma/config' - -if (process.env.DOCKER !== 'true') { - dotenv.config({ path: '.env' }) -} - -if (process.env.INTEGRATION === 'true') { - const envInteg = dotenv.config({ path: '.env.integ' }) - process.env = { - ...process.env, - ...(envInteg?.parsed ?? {}), - } -} - -export default defineConfig({ - schema: path.join('src', 'prisma', 'schema'), - migrations: { - path: path.join('src', 'prisma', 'migrations'), - }, -}) diff --git a/apps/server-nestjs/src/__mocks__/prisma.ts b/apps/server-nestjs/src/__mocks__/prisma.ts index 075578c96c..47305cede3 100644 --- a/apps/server-nestjs/src/__mocks__/prisma.ts +++ b/apps/server-nestjs/src/__mocks__/prisma.ts @@ -1,4 +1,4 @@ -import type { PrismaClient } from '@prisma/client' +import type { PrismaClient } from '@cpn-console/database' import { beforeEach, vi } from 'vitest' import { mockDeep, mockReset } from 'vitest-mock-extended' diff --git a/apps/server-nestjs/src/cpin-module/application-initialization/database-initialization/utils.ts b/apps/server-nestjs/src/cpin-module/application-initialization/database-initialization/utils.ts index 2f4e699581..a7781e555e 100644 --- a/apps/server-nestjs/src/cpin-module/application-initialization/database-initialization/utils.ts +++ b/apps/server-nestjs/src/cpin-module/application-initialization/database-initialization/utils.ts @@ -1,5 +1,5 @@ // @ts-nocheck -import { Prisma } from '@prisma/client' +import { Prisma } from '@cpn-console/database' // eslint-disable-next-line no-extend-native BigInt.prototype.toJSON = function () { diff --git a/apps/server-nestjs/src/cpin-module/infrastructure/database/prisma.service.ts b/apps/server-nestjs/src/cpin-module/infrastructure/database/prisma.service.ts index f10a31e573..70b63b5049 100644 --- a/apps/server-nestjs/src/cpin-module/infrastructure/database/prisma.service.ts +++ b/apps/server-nestjs/src/cpin-module/infrastructure/database/prisma.service.ts @@ -1,6 +1,6 @@ import type { OnModuleDestroy, OnModuleInit } from '@nestjs/common' +import { PrismaClient } from '@cpn-console/database' import { Injectable } from '@nestjs/common' -import { PrismaClient } from '@prisma/client' @Injectable() export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy { diff --git a/apps/server-nestjs/src/modules/keycloak/keycloak-datastore.service.ts b/apps/server-nestjs/src/modules/keycloak/keycloak-datastore.service.ts index 81673c5267..c4b266be3e 100644 --- a/apps/server-nestjs/src/modules/keycloak/keycloak-datastore.service.ts +++ b/apps/server-nestjs/src/modules/keycloak/keycloak-datastore.service.ts @@ -1,4 +1,4 @@ -import type { Prisma } from '@prisma/client' +import type { Prisma } from '@cpn-console/database' import { Inject, Injectable } from '@nestjs/common' import { PrismaService } from '../../cpin-module/infrastructure/database/prisma.service' diff --git a/apps/server-nestjs/src/prisma/migrations/migration_lock.toml b/apps/server-nestjs/src/prisma/migrations/migration_lock.toml deleted file mode 100644 index 648c57fd59..0000000000 --- a/apps/server-nestjs/src/prisma/migrations/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (e.g., Git) -provider = "postgresql" \ No newline at end of file diff --git a/apps/server-nestjs/src/prisma/schema/admin.prisma b/apps/server-nestjs/src/prisma/schema/admin.prisma deleted file mode 100644 index 71cfb1754a..0000000000 --- a/apps/server-nestjs/src/prisma/schema/admin.prisma +++ /dev/null @@ -1,20 +0,0 @@ -model AdminPlugin { - pluginName String - key String - value String - - @@unique([pluginName, key]) -} - -model AdminRole { - id String @id @unique @default(uuid()) @db.Uuid - name String - permissions BigInt - position Int @db.SmallInt - oidcGroup String @default("") -} - -model SystemSetting { - key String @id @unique - value String -} diff --git a/apps/server-nestjs/src/prisma/schema/project.prisma b/apps/server-nestjs/src/prisma/schema/project.prisma deleted file mode 100644 index 833845eee1..0000000000 --- a/apps/server-nestjs/src/prisma/schema/project.prisma +++ /dev/null @@ -1,108 +0,0 @@ -model Environment { - id String @id @default(uuid()) @db.Uuid - name String @db.VarChar(11) - projectId String @db.Uuid - memory Float @db.Real - cpu Float @db.Real - gpu Float @db.Real - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - clusterId String @db.Uuid - stageId String @db.Uuid - cluster Cluster @relation(fields: [clusterId], references: [id]) - project Project @relation(fields: [projectId], references: [id], onDelete: Cascade) - stage Stage @relation(fields: [stageId], references: [id]) - - @@unique([projectId, name]) -} - -model Repository { - id String @id @default(uuid()) @db.Uuid - projectId String @db.Uuid - internalRepoName String - externalRepoUrl String @default("") - externalUserName String @default("") - isInfra Boolean @default(false) - isPrivate Boolean @default(false) - deployRevision String @default("") - deployPath String @default("") - helmValuesFiles String @default("") - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - project Project @relation(fields: [projectId], references: [id], onDelete: Cascade) -} - -model ProjectClusterHistory { - projectId String @db.Uuid - clusterId String @db.Uuid - - @@unique([projectId, clusterId]) -} - -model ProjectMembers { - projectId String @db.Uuid - userId String @db.Uuid - roleIds String[] - project Project @relation(fields: [projectId], references: [id]) - user User @relation(fields: [userId], references: [id]) - - @@unique([projectId, userId]) -} - -model ProjectPlugin { - pluginName String - projectId String @db.Uuid - key String - value String - project Project @relation(fields: [projectId], references: [id], onDelete: Cascade) - - @@unique([projectId, pluginName, key]) -} - -model ProjectRole { - id String @id @unique @default(uuid()) @db.Uuid - name String - permissions BigInt - projectId String @db.Uuid - position Int @db.SmallInt - oidcGroup String @default("") - type String @default("managed") - project Project @relation(fields: [projectId], references: [id]) -} - -model Project { - id String @id @unique @default(uuid()) @db.Uuid - name String - description String @default("") - status ProjectStatus @default(initializing) - locked Boolean @default(false) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - everyonePerms BigInt @default(896) - ownerId String @db.Uuid - environments Environment[] - logs Log[] - owner User @relation(fields: [ownerId], references: [id]) - members ProjectMembers[] - plugins ProjectPlugin[] - roles ProjectRole[] - repositories Repository[] - clusters Cluster[] @relation("ClusterToProject") - slug String @unique - limitless Boolean @default(true) - hprodCpu Float @db.Real - hprodGpu Float @db.Real - hprodMemory Float @db.Real - prodCpu Float @db.Real - prodGpu Float @db.Real - prodMemory Float @db.Real - lastSuccessProvisionningVersion String? -} - -enum ProjectStatus { - initializing - created - failed - archived - warning -} diff --git a/apps/server/Dockerfile b/apps/server/Dockerfile index 6e27b95fd9..de9a5e8554 100644 --- a/apps/server/Dockerfile +++ b/apps/server/Dockerfile @@ -15,6 +15,7 @@ COPY --chown=node:root apps/server/package.json ./apps/server/package.json COPY --chown=node:root packages/eslintconfig/package.json ./packages/eslintconfig/package.json COPY --chown=node:root packages/shared/package.json ./packages/shared/package.json COPY --chown=node:root packages/logger/package.json ./packages/logger/package.json +COPY --chown=node:root packages/database/package.json ./packages/database/package.json COPY --chown=node:root packages/hooks/package.json ./packages/hooks/package.json COPY --chown=node:root packages/test-utils/package.json ./packages/test-utils/package.json COPY --chown=node:root packages/tsconfig/package.json ./packages/tsconfig/package.json @@ -33,8 +34,8 @@ COPY --chown=node:root packages/ ./packages/ COPY --chown=node:root apps/server/ ./apps/server/ # Generate Prisma client -RUN pnpm --filter server run db:generate -ENTRYPOINT [ "pnpm", "--filter", "server", "run" ] +RUN pnpm --filter @cpn-console/server run db:generate +ENTRYPOINT [ "pnpm", "--filter", "@cpn-console/server", "run" ] CMD [ "dev" ] @@ -47,6 +48,7 @@ RUN pnpm run build RUN pnpm --filter @cpn-console/server run build # Export @cpn-console/server to target build directory RUN pnpm --filter @cpn-console/server --prod deploy build +RUN cd /app/build && /app/packages/database/node_modules/.bin/prisma generate --schema=node_modules/@cpn-console/database/prisma/schema # Prod stage ----------------------------------------------------------------------- @@ -61,7 +63,6 @@ RUN mkdir -p /home/node/logs && chmod 770 -R /home/node/logs \ && mkdir -p /home/node/.npm && chmod 770 -R /home/node/.npm \ && chown node:root /app COPY --chown=node:root --from=build /app/build . -RUN npm run db:generate USER node EXPOSE 8080 ENTRYPOINT ["npm", "start"] diff --git a/apps/server/Makefile b/apps/server/Makefile new file mode 100644 index 0000000000..04093bc312 --- /dev/null +++ b/apps/server/Makefile @@ -0,0 +1,24 @@ +PNPM = corepack pnpm + +-include .env +ifeq ($(DOCKER),true) +-include .env.docker +endif +ifeq ($(INTEGRATION),true) +-include .env.integ +endif + +db-generate: + $(PNPM) --filter @cpn-console/database run generate + +db-migrate: + $(PNPM) --filter @cpn-console/database run migrate + +db-deploy: + $(PNPM) --filter @cpn-console/database run deploy + +db-diff: + $(PNPM) --filter @cpn-console/database run diff + +db-reset: + $(PNPM) --filter @cpn-console/database run reset diff --git a/apps/server/package.json b/apps/server/package.json index 2bf3d978ca..3aa4efbe29 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -12,37 +12,30 @@ "types": "types/bootstrap.d.ts", "files": [ "dist", - "prisma.config.ts", "src" ], "scripts": { "build": "tspc", "build:clean": "rimraf ./dist ./types ./tsconfig.tsbuildinfo", - "db:deploy": "prisma migrate deploy", - "db:diff": "prisma migrate diff", - "db:generate": "prisma generate", - "db:migrate": "prisma migrate dev --name dso", - "db:reset": "prisma migrate reset", - "predev": "pnpm run db:deploy", + "predev": "make db-deploy", + "predebug": "make db-migrate", "dev": "nodemon --exec 'vite-node src/bootstrap.ts'", - "predebug": "pnpm run db:migrate", "debug": "nodemon --exec 'NODE_OPTIONS=\"--inspect-brk=0.0.0.0\" vite-node src/bootstrap.ts'", "format": "eslint ./ --fix", - "preinteg": "INTEGRATION=true pnpm run db:migrate", - "integ": "INTEGRATION=true nodemon --exec 'vite-node src/bootstrap.ts'", + "preinteg": "INTEGRATION=true make db-migrate", "lint": "eslint ./", - "prepublishOnly": "pnpm run db:generate", - "prestart": "npm run db:deploy", + "prepublishOnly": "make db-generate", + "prestart": "make db-deploy", + "integ": "INTEGRATION=true nodemon --exec 'vite-node src/bootstrap.ts'", "start": "node --enable-source-maps dist/bootstrap.js", - "pretest": "pnpm run db:generate", "test": "vitest run", - "pretest:cov": "pnpm run db:generate", "test:cov": "vitest run --coverage", "test:e2e": "pnpm run dev", "test:e2e-ci": "pnpm run start" }, "dependencies": { "@cpn-console/argocd-plugin": "workspace:^", + "@cpn-console/database": "workspace:^", "@cpn-console/gitlab-plugin": "workspace:^", "@cpn-console/harbor-plugin": "workspace:^", "@cpn-console/hooks": "workspace:^", @@ -66,7 +59,6 @@ "@opentelemetry/exporter-trace-otlp-proto": "^0.213.0", "@opentelemetry/sdk-metrics": "^2.5.1", "@opentelemetry/sdk-node": "^0.212.0", - "@prisma/client": "^6.19.2", "@ts-rest/core": "^3.52.1", "@ts-rest/fastify": "^3.52.1", "@ts-rest/open-api": "^3.52.1", @@ -77,7 +69,6 @@ "fastify-keycloak-adapter": "2.3.2", "json-2-csv": "^5.5.10", "mustache": "^4.2.0", - "prisma": "^6.19.2", "undici": "^7.24.0", "vitest-mock-extended": "^2.0.2" }, diff --git a/apps/server/prisma.config.ts b/apps/server/prisma.config.ts deleted file mode 100644 index 34e0d644d9..0000000000 --- a/apps/server/prisma.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -import path from 'node:path' -import * as dotenv from 'dotenv' -import { defineConfig } from 'prisma/config' - -if (process.env.DOCKER !== 'true') { - dotenv.config({ path: '.env' }) -} - -if (process.env.INTEGRATION === 'true') { - const envInteg = dotenv.config({ path: '.env.integ' }) - process.env = { - ...process.env, - ...(envInteg?.parsed ?? {}), - } -} - -export default defineConfig({ - schema: path.join('src', 'prisma', 'schema'), - migrations: { - path: path.join('src', 'prisma', 'migrations'), - }, -}) diff --git a/apps/server/src/__mocks__/prisma.ts b/apps/server/src/__mocks__/prisma.ts index 075578c96c..47305cede3 100644 --- a/apps/server/src/__mocks__/prisma.ts +++ b/apps/server/src/__mocks__/prisma.ts @@ -1,4 +1,4 @@ -import type { PrismaClient } from '@prisma/client' +import type { PrismaClient } from '@cpn-console/database' import { beforeEach, vi } from 'vitest' import { mockDeep, mockReset } from 'vitest-mock-extended' diff --git a/apps/server/src/connect.spec.ts b/apps/server/src/connect.spec.ts index e64228a561..d6fb113aef 100644 --- a/apps/server/src/connect.spec.ts +++ b/apps/server/src/connect.spec.ts @@ -1,5 +1,5 @@ +import { PrismaClientInitializationError } from '@cpn-console/database' import { logger } from '@cpn-console/logger' -import { PrismaClientInitializationError } from '@prisma/client/runtime/library.js' import { beforeEach, describe, expect, it, vi } from 'vitest' import prisma from './__mocks__/prisma.js' import app from './app.js' diff --git a/apps/server/src/init/db/dump.ts b/apps/server/src/init/db/dump.ts index 6709946605..38d37ad9a7 100644 --- a/apps/server/src/init/db/dump.ts +++ b/apps/server/src/init/db/dump.ts @@ -8,7 +8,7 @@ */ import { writeFileSync } from 'node:fs' -import { Prisma } from '@prisma/client' +import { Prisma } from '@cpn-console/database' import prisma from '@/prisma.js' import { associations, manyToManyRelation, modelKeys, models, resourceListToDict } from './utils.js' diff --git a/apps/server/src/init/db/utils.ts b/apps/server/src/init/db/utils.ts index e4b941089f..593c123eaf 100644 --- a/apps/server/src/init/db/utils.ts +++ b/apps/server/src/init/db/utils.ts @@ -1,5 +1,5 @@ // @ts-nocheck -import { Prisma } from '@prisma/client' +import { Prisma } from '@cpn-console/database' // eslint-disable-next-line no-extend-native BigInt.prototype.toJSON = function () { diff --git a/apps/server/src/mocks/prisma.ts b/apps/server/src/mocks/prisma.ts index 075578c96c..47305cede3 100644 --- a/apps/server/src/mocks/prisma.ts +++ b/apps/server/src/mocks/prisma.ts @@ -1,4 +1,4 @@ -import type { PrismaClient } from '@prisma/client' +import type { PrismaClient } from '@cpn-console/database' import { beforeEach, vi } from 'vitest' import { mockDeep, mockReset } from 'vitest-mock-extended' diff --git a/apps/server/src/prisma.ts b/apps/server/src/prisma.ts index 4590932b68..ebdfbc113d 100644 --- a/apps/server/src/prisma.ts +++ b/apps/server/src/prisma.ts @@ -1,4 +1,4 @@ -import { PrismaClient } from '@prisma/client' +import { PrismaClient } from '@cpn-console/database' const prisma = new PrismaClient() diff --git a/apps/server/src/prisma/migrations/20230706084346_dso/migration.sql b/apps/server/src/prisma/migrations/20230706084346_dso/migration.sql deleted file mode 100644 index f2f4e7b0b7..0000000000 --- a/apps/server/src/prisma/migrations/20230706084346_dso/migration.sql +++ /dev/null @@ -1,151 +0,0 @@ --- CreateTable -CREATE TABLE "Environment" ( - "id" UUID NOT NULL, - "name" TEXT NOT NULL, - "projectId" UUID NOT NULL, - "status" TEXT NOT NULL DEFAULT 'initializing', - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Environment_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Log" ( - "id" UUID NOT NULL, - "data" JSONB NOT NULL, - "action" TEXT NOT NULL DEFAULT '', - "userId" UUID NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Log_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Organization" ( - "id" UUID NOT NULL, - "source" TEXT NOT NULL, - "name" TEXT NOT NULL, - "label" TEXT NOT NULL, - "active" BOOLEAN NOT NULL DEFAULT true, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Organization_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Permission" ( - "id" UUID NOT NULL, - "userId" UUID NOT NULL, - "environmentId" UUID NOT NULL, - "level" INTEGER NOT NULL DEFAULT 0, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Permission_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Project" ( - "id" UUID NOT NULL, - "name" TEXT NOT NULL, - "organizationId" UUID NOT NULL, - "description" TEXT, - "status" TEXT NOT NULL, - "locked" BOOLEAN NOT NULL DEFAULT false, - "services" JSONB NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Project_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Repository" ( - "id" UUID NOT NULL, - "projectId" UUID NOT NULL, - "internalRepoName" TEXT NOT NULL, - "externalRepoUrl" TEXT NOT NULL, - "externalUserName" TEXT, - "externalToken" TEXT, - "isInfra" BOOLEAN NOT NULL DEFAULT false, - "isPrivate" BOOLEAN NOT NULL DEFAULT false, - "status" TEXT NOT NULL DEFAULT 'initializing', - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Repository_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "User" ( - "id" UUID NOT NULL, - "firstName" TEXT NOT NULL, - "lastName" TEXT NOT NULL, - "email" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "User_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Role" ( - "userId" UUID NOT NULL, - "projectId" UUID NOT NULL, - "role" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Role_pkey" PRIMARY KEY ("userId","projectId") -); - --- CreateIndex -CREATE UNIQUE INDEX "Organization_id_key" ON "Organization"("id"); - --- CreateIndex -CREATE UNIQUE INDEX "Organization_name_key" ON "Organization"("name"); - --- CreateIndex -CREATE UNIQUE INDEX "Organization_label_key" ON "Organization"("label"); - --- CreateIndex -CREATE UNIQUE INDEX "Permission_id_key" ON "Permission"("id"); - --- CreateIndex -CREATE UNIQUE INDEX "Permission_userId_environmentId_key" ON "Permission"("userId", "environmentId"); - --- CreateIndex -CREATE UNIQUE INDEX "Project_id_key" ON "Project"("id"); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "Role_userId_projectId_key" ON "Role"("userId", "projectId"); - --- AddForeignKey -ALTER TABLE "Environment" ADD CONSTRAINT "Environment_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Log" ADD CONSTRAINT "Log_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Permission" ADD CONSTRAINT "Permission_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Permission" ADD CONSTRAINT "Permission_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "Environment"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Project" ADD CONSTRAINT "Project_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "Organization"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Repository" ADD CONSTRAINT "Repository_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Role" ADD CONSTRAINT "Role_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Role" ADD CONSTRAINT "Role_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/server/src/prisma/migrations/20230710181052_dso/migration.sql b/apps/server/src/prisma/migrations/20230710181052_dso/migration.sql deleted file mode 100644 index 26e1ade3f2..0000000000 --- a/apps/server/src/prisma/migrations/20230710181052_dso/migration.sql +++ /dev/null @@ -1,85 +0,0 @@ --- CreateEnum -CREATE TYPE "ClusterPrivacy" AS ENUM ('public', 'dedicated'); - --- CreateTable -CREATE TABLE "Cluster" ( - "id" UUID NOT NULL, - "label" VARCHAR(50) NOT NULL, - "privacy" "ClusterPrivacy" NOT NULL DEFAULT 'dedicated', - "secretName" VARCHAR(50) NOT NULL, - "clusterResources" BOOLEAN NOT NULL DEFAULT false, - "kubeConfigId" UUID NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Cluster_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Kubeconfig" ( - "id" UUID NOT NULL, - "user" JSONB NOT NULL, - "cluster" JSONB NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "parentClusterId" UUID, - - CONSTRAINT "Kubeconfig_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "_ClusterToEnvironment" ( - "A" UUID NOT NULL, - "B" UUID NOT NULL -); - --- CreateTable -CREATE TABLE "_ClusterToProject" ( - "A" UUID NOT NULL, - "B" UUID NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX "Cluster_id_key" ON "Cluster"("id"); - --- CreateIndex -CREATE UNIQUE INDEX "Cluster_label_key" ON "Cluster"("label"); - --- CreateIndex -CREATE UNIQUE INDEX "Cluster_secretName_key" ON "Cluster"("secretName"); - --- CreateIndex -CREATE UNIQUE INDEX "Cluster_kubeConfigId_key" ON "Cluster"("kubeConfigId"); - --- CreateIndex -CREATE UNIQUE INDEX "Kubeconfig_id_key" ON "Kubeconfig"("id"); - --- CreateIndex -CREATE UNIQUE INDEX "Kubeconfig_parentClusterId_key" ON "Kubeconfig"("parentClusterId"); - --- CreateIndex -CREATE UNIQUE INDEX "_ClusterToEnvironment_AB_unique" ON "_ClusterToEnvironment"("A", "B"); - --- CreateIndex -CREATE INDEX "_ClusterToEnvironment_B_index" ON "_ClusterToEnvironment"("B"); - --- CreateIndex -CREATE UNIQUE INDEX "_ClusterToProject_AB_unique" ON "_ClusterToProject"("A", "B"); - --- CreateIndex -CREATE INDEX "_ClusterToProject_B_index" ON "_ClusterToProject"("B"); - --- AddForeignKey -ALTER TABLE "Cluster" ADD CONSTRAINT "Cluster_kubeConfigId_fkey" FOREIGN KEY ("kubeConfigId") REFERENCES "Kubeconfig"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_ClusterToEnvironment" ADD CONSTRAINT "_ClusterToEnvironment_A_fkey" FOREIGN KEY ("A") REFERENCES "Cluster"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_ClusterToEnvironment" ADD CONSTRAINT "_ClusterToEnvironment_B_fkey" FOREIGN KEY ("B") REFERENCES "Environment"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_ClusterToProject" ADD CONSTRAINT "_ClusterToProject_A_fkey" FOREIGN KEY ("A") REFERENCES "Cluster"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_ClusterToProject" ADD CONSTRAINT "_ClusterToProject_B_fkey" FOREIGN KEY ("B") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/server/src/prisma/migrations/20230711132934_dso/migration.sql b/apps/server/src/prisma/migrations/20230711132934_dso/migration.sql deleted file mode 100644 index 8f3fb5ff9f..0000000000 --- a/apps/server/src/prisma/migrations/20230711132934_dso/migration.sql +++ /dev/null @@ -1,11 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `parentClusterId` on the `Kubeconfig` table. All the data in the column will be lost. - -*/ --- DropIndex -DROP INDEX "Kubeconfig_parentClusterId_key"; - --- AlterTable -ALTER TABLE "Kubeconfig" DROP COLUMN "parentClusterId"; diff --git a/apps/server/src/prisma/migrations/20230802143822_dso/migration.sql b/apps/server/src/prisma/migrations/20230802143822_dso/migration.sql deleted file mode 100644 index 4eb37edc53..0000000000 --- a/apps/server/src/prisma/migrations/20230802143822_dso/migration.sql +++ /dev/null @@ -1,10 +0,0 @@ -CREATE TYPE "ProjectStatus" AS ENUM ('initializing', 'created', 'failed', 'archived'); - -ALTER TABLE public."Project" ALTER COLUMN status TYPE "ProjectStatus" USING - case - when status = 'created' then 'created'::"ProjectStatus" - when status = 'failed' then 'failed'::"ProjectStatus" - when status = 'archived' then 'archived'::"ProjectStatus" - else 'initializing'::"ProjectStatus" - end; -ALTER TABLE public."Project" ALTER COLUMN status SET DEFAULT 'initializing'; diff --git a/apps/server/src/prisma/migrations/20230912084459_dso/migration.sql b/apps/server/src/prisma/migrations/20230912084459_dso/migration.sql deleted file mode 100644 index f402a0e3d4..0000000000 --- a/apps/server/src/prisma/migrations/20230912084459_dso/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Cluster" ADD COLUMN "infos" VARCHAR(200); diff --git a/apps/server/src/prisma/migrations/20231010111515_dso/migration.sql b/apps/server/src/prisma/migrations/20231010111515_dso/migration.sql deleted file mode 100644 index f553e7880e..0000000000 --- a/apps/server/src/prisma/migrations/20231010111515_dso/migration.sql +++ /dev/null @@ -1,8 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `externalToken` on the `Repository` table. All the data in the column will be lost. - -*/ --- AlterTable -ALTER TABLE "Repository" DROP COLUMN "externalToken"; diff --git a/apps/server/src/prisma/migrations/20231011125838_dso/migration.sql b/apps/server/src/prisma/migrations/20231011125838_dso/migration.sql deleted file mode 100644 index 394b650a51..0000000000 --- a/apps/server/src/prisma/migrations/20231011125838_dso/migration.sql +++ /dev/null @@ -1,81 +0,0 @@ --- CreateEnum -CREATE TYPE "QuotaStageStatus" AS ENUM -('active', 'pendingDelete'); - --- Create new tables --- CreateTable -CREATE TABLE "Quota" -( - "id" UUID NOT NULL, - "memory" VARCHAR NOT NULL, - "cpu" REAL NOT NULL, - "name" VARCHAR NOT NULL, - "isPrivate" BOOLEAN NOT NULL DEFAULT false, - - CONSTRAINT "Quota_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Stage" -( - "id" UUID NOT NULL, - "name" VARCHAR NOT NULL, - - CONSTRAINT "Stage_pkey" PRIMARY KEY ("id") -); - --- Associate Quotas and Stages --- CreateTable -CREATE TABLE "QuotaStage" -( - "id" UUID NOT NULL, - "quotaId" UUID NOT NULL, - "stageId" UUID NOT NULL, - "status" "QuotaStageStatus" NOT NULL DEFAULT 'active', - - CONSTRAINT "QuotaStage_pkey" PRIMARY KEY ("id") -); -CREATE UNIQUE INDEX "Quota_id_key" ON "Quota"("id"); -CREATE UNIQUE INDEX "Quota_name_key" ON "Quota"("name"); -CREATE UNIQUE INDEX "Stage_id_key" ON "Stage"("id"); -CREATE UNIQUE INDEX "Stage_name_key" ON "Stage"("name"); -CREATE UNIQUE INDEX "QuotaStage_id_key" ON "QuotaStage"("id"); -CREATE UNIQUE INDEX "QuotaStage_quotaId_stageId_key" ON "QuotaStage"("quotaId", "stageId"); -ALTER TABLE "QuotaStage" ADD CONSTRAINT "QuotaStage_quotaId_fkey" FOREIGN KEY ("quotaId") REFERENCES "Quota"("id") ON DELETE CASCADE ON UPDATE CASCADE; -ALTER TABLE "QuotaStage" ADD CONSTRAINT "QuotaStage_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- Create default values for Quotas and Stages --- Quota -INSERT INTO "Quota" - (id, cpu, memory, "name", "isPrivate") -VALUES - ('5a57b62f-2465-4fb6-a853-5a751d099199', 2, '4Gi', 'small', false), - ('08770663-3b76-4af6-8978-9f75eda4faa7', 4, '8Gi', 'medium', false), - ('b7b4d9bd-7a8f-4287-bb12-5ce2dadb4ff2', 6, '12Gi', 'large', false), - ('97b851e8-9067-4a3d-a0e8-c3a6820c49be', 8, '16Gi', 'xlarge', false); - --- Stage -INSERT INTO "Stage" - (id, "name") -VALUES - ('4a9ad694-4c54-4a3c-9579-548bf4b7b1b9', 'dev'), - ('38fa869d-6267-441d-af7f-e0548fd06b7e', 'staging'), - ('d434310e-7850-4d59-b47f-0772edf50582', 'integration'), - ('9b3e9991-896d-4d90-bdc5-a34be8c06b8f', 'prod'); - --- QuotaStage -INSERT INTO "QuotaStage" - (id, "quotaId", "stageId") -VALUES - ('0cb0c549-560e-4f26-8f4e-832dd722f68a', '5a57b62f-2465-4fb6-a853-5a751d099199', '4a9ad694-4c54-4a3c-9579-548bf4b7b1b9'), - ('0530e9c9-b37d-4dec-93e6-1895f700e61c', '5a57b62f-2465-4fb6-a853-5a751d099199', '38fa869d-6267-441d-af7f-e0548fd06b7e'), - ('8a99db49-b7b1-44bf-865d-5e709e8aa0fc', '5a57b62f-2465-4fb6-a853-5a751d099199', 'd434310e-7850-4d59-b47f-0772edf50582'), - ('67561f00-d219-4ca6-b94a-3ee83f09d2d6', '5a57b62f-2465-4fb6-a853-5a751d099199', '9b3e9991-896d-4d90-bdc5-a34be8c06b8f'), - ('8b3c201e-7518-4254-a94a-16c404e46936', '08770663-3b76-4af6-8978-9f75eda4faa7', '4a9ad694-4c54-4a3c-9579-548bf4b7b1b9'), - ('9157ae12-3e39-43f8-a24f-ae5d9c6b69b7', '08770663-3b76-4af6-8978-9f75eda4faa7', '38fa869d-6267-441d-af7f-e0548fd06b7e'), - ('c733a1dd-c9fd-4def-b29e-df49ef7b6698', '08770663-3b76-4af6-8978-9f75eda4faa7', 'd434310e-7850-4d59-b47f-0772edf50582'), - ('15a51f47-0ab2-4a94-a808-722639d8c092', '08770663-3b76-4af6-8978-9f75eda4faa7', '9b3e9991-896d-4d90-bdc5-a34be8c06b8f'), - ('cb66e80c-2304-472d-bc19-a411011674ca', 'b7b4d9bd-7a8f-4287-bb12-5ce2dadb4ff2', 'd434310e-7850-4d59-b47f-0772edf50582'), - ('59fb0e79-3a76-4b96-81d4-63f4caa98cfa', 'b7b4d9bd-7a8f-4287-bb12-5ce2dadb4ff2', '9b3e9991-896d-4d90-bdc5-a34be8c06b8f'), - ('4174b22c-2bee-4f4a-9d85-da7b5463f214', '97b851e8-9067-4a3d-a0e8-c3a6820c49be', 'd434310e-7850-4d59-b47f-0772edf50582'), - ('de0589b6-7cf5-4f1e-ab44-53e71a6cdb7a', '97b851e8-9067-4a3d-a0e8-c3a6820c49be', '9b3e9991-896d-4d90-bdc5-a34be8c06b8f'); diff --git a/apps/server/src/prisma/migrations/20231011125839_dso/migration.sql b/apps/server/src/prisma/migrations/20231011125839_dso/migration.sql deleted file mode 100644 index 8c98a7f74e..0000000000 --- a/apps/server/src/prisma/migrations/20231011125839_dso/migration.sql +++ /dev/null @@ -1,35 +0,0 @@ --- Multiplication des environnements par clusteurs -ALTER TABLE "Environment" ADD COLUMN "clusterId" UUID; - -DO -$$ -DECLARE - perm record; - cte record; - env_uuid UUID; -BEGIN - FOR cte IN SELECT "B" AS environmentId, "A" AS "clusterId", "name", "projectId", status, "updatedAt", "createdAt" - FROM public."_ClusterToEnvironment", public."Environment" - WHERE public."Environment".id = "B" - LOOP - env_uuid := gen_random_uuid(); - INSERT INTO public."Environment" (id, "name", "projectId", "clusterId", status, "createdAt", "updatedAt") VALUES - (env_uuid, cte."name", cte."projectId", cte."clusterId", cte.status, cte."createdAt", cte."updatedAt"); - - FOR perm in SELECT * FROM public."Permission" WHERE "environmentId" = cte.environmentId - LOOP - INSERT INTO public."Permission" (id, "level", "createdAt", "updatedAt", "environmentId", "userId") VALUES - (gen_random_uuid(), perm."level", perm."createdAt", perm."updatedAt", env_uuid, perm."userId"); - END LOOP; - END LOOP; -END; -$$ -; -DELETE FROM public."Environment" WHERE "clusterId" is null; -ALTER TABLE public."Environment" ALTER COLUMN "clusterId" SET NOT NULL; -ALTER TABLE "Environment" ADD CONSTRAINT "Environment_clusterId_fkey" FOREIGN KEY ("clusterId") REFERENCES "Cluster"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- Delete old _ClusterToEnvironment -ALTER TABLE "_ClusterToEnvironment" DROP CONSTRAINT "_ClusterToEnvironment_A_fkey"; -ALTER TABLE "_ClusterToEnvironment" DROP CONSTRAINT "_ClusterToEnvironment_B_fkey"; -DROP TABLE "_ClusterToEnvironment"; diff --git a/apps/server/src/prisma/migrations/20231011125841_dso/migration.sql b/apps/server/src/prisma/migrations/20231011125841_dso/migration.sql deleted file mode 100644 index 035cd1c855..0000000000 --- a/apps/server/src/prisma/migrations/20231011125841_dso/migration.sql +++ /dev/null @@ -1,36 +0,0 @@ --- Associate cluster to Stages --- CreateTable -CREATE TABLE "_ClusterToStage" ( - "A" UUID NOT NULL, - "B" UUID NOT NULL -); --- AddForeignKey -ALTER TABLE "_ClusterToStage" ADD CONSTRAINT "_ClusterToStage_A_fkey" FOREIGN KEY ("A") REFERENCES "Cluster"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_ClusterToStage" ADD CONSTRAINT "_ClusterToStage_B_fkey" FOREIGN KEY ("B") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- CreateIndex -CREATE UNIQUE INDEX "_ClusterToStage_AB_unique" ON "_ClusterToStage"("A", "B"); - --- CreateIndex -CREATE INDEX "_ClusterToStage_B_index" ON "_ClusterToStage"("B"); - -DO -$$ -DECLARE - cluster record; - cte record; - env_uuid UUID; -BEGIN - FOR cluster IN SELECT id - FROM public."Cluster" - LOOP - INSERT INTO public."_ClusterToStage" ("A", "B") VALUES - (cluster.id, '4a9ad694-4c54-4a3c-9579-548bf4b7b1b9'), - (cluster.id, '38fa869d-6267-441d-af7f-e0548fd06b7e'), - (cluster.id, 'd434310e-7850-4d59-b47f-0772edf50582'), - (cluster.id, '9b3e9991-896d-4d90-bdc5-a34be8c06b8f'); - END LOOP; -END; -$$ diff --git a/apps/server/src/prisma/migrations/20231012105520_dso/migration.sql b/apps/server/src/prisma/migrations/20231012105520_dso/migration.sql deleted file mode 100644 index 43793bdb49..0000000000 --- a/apps/server/src/prisma/migrations/20231012105520_dso/migration.sql +++ /dev/null @@ -1,11 +0,0 @@ --- AlterTable -ALTER TABLE "Environment" ADD COLUMN "quotaStageId" UUID; -UPDATE "Environment" SET "quotaStageId" = '8b3c201e-7518-4254-a94a-16c404e46936' WHERE "name" = 'dev'; -UPDATE "Environment" SET "quotaStageId" = '9157ae12-3e39-43f8-a24f-ae5d9c6b69b7' WHERE "name" = 'staging'; -UPDATE "Environment" SET "quotaStageId" = '4174b22c-2bee-4f4a-9d85-da7b5463f214' WHERE "name" = 'integration'; -UPDATE "Environment" SET "quotaStageId" = 'de0589b6-7cf5-4f1e-ab44-53e71a6cdb7a' WHERE "name" = 'prod'; -ALTER TABLE "Environment" ALTER COLUMN "name" SET DATA TYPE VARCHAR(11); -ALTER TABLE "Environment" ALTER COLUMN "quotaStageId" SET NOT NULL; - --- AddForeignKey -ALTER TABLE "Environment" ADD CONSTRAINT "Environment_quotaStageId_fkey" FOREIGN KEY ("quotaStageId") REFERENCES "QuotaStage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/apps/server/src/prisma/migrations/20231024155020_dso/migration.sql b/apps/server/src/prisma/migrations/20231024155020_dso/migration.sql deleted file mode 100644 index 9af004b6a3..0000000000 --- a/apps/server/src/prisma/migrations/20231024155020_dso/migration.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Please read 6.0.0 Release notes ! --- lock all projects -UPDATE public."Project" SET "locked"=true \ No newline at end of file diff --git a/apps/server/src/prisma/migrations/20231026150220_dso/migration.sql b/apps/server/src/prisma/migrations/20231026150220_dso/migration.sql deleted file mode 100644 index d970d3965a..0000000000 --- a/apps/server/src/prisma/migrations/20231026150220_dso/migration.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Please read 6.0.0 Release notes ! --- set all projects to failed to avoid unlock them -UPDATE public."Project" SET "status" = 'failed' WHERE "status" != 'archived' \ No newline at end of file diff --git a/apps/server/src/prisma/migrations/20240112135751_dso/migration.sql b/apps/server/src/prisma/migrations/20240112135751_dso/migration.sql deleted file mode 100644 index c387d9885c..0000000000 --- a/apps/server/src/prisma/migrations/20240112135751_dso/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Log" ADD COLUMN "requestId" VARCHAR(21); diff --git a/apps/server/src/prisma/migrations/20240321123436_dso/migration.sql b/apps/server/src/prisma/migrations/20240321123436_dso/migration.sql deleted file mode 100644 index 18e20262c8..0000000000 --- a/apps/server/src/prisma/migrations/20240321123436_dso/migration.sql +++ /dev/null @@ -1,12 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `status` on the `Environment` table. All the data in the column will be lost. - - You are about to drop the column `status` on the `Repository` table. All the data in the column will be lost. - -*/ --- AlterTable -ALTER TABLE "Environment" DROP COLUMN "status"; - --- AlterTable -ALTER TABLE "Repository" DROP COLUMN "status"; diff --git a/apps/server/src/prisma/migrations/20240329172938_dso/migration.sql b/apps/server/src/prisma/migrations/20240329172938_dso/migration.sql deleted file mode 100644 index f784b21567..0000000000 --- a/apps/server/src/prisma/migrations/20240329172938_dso/migration.sql +++ /dev/null @@ -1,46 +0,0 @@ --- AlterTable -ALTER TABLE "Cluster" ADD COLUMN "zoneId" UUID; - --- CreateTable -CREATE TABLE "Zone" -( - "id" UUID NOT NULL, - "slug" VARCHAR(10) NOT NULL, - "label" VARCHAR(50) NOT NULL, - "description" VARCHAR(200), - "createdAt" TIMESTAMP -(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP -(3) NOT NULL, - - CONSTRAINT "Zone_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "Zone_id_key" ON "Zone"("id"); - --- CreateIndex -CREATE UNIQUE INDEX "Zone_slug_key" ON "Zone"("slug"); - --- Create default zone -INSERT INTO "Zone" - (id, "slug", "label", "description", "updatedAt") -VALUES - ('a66c4230-eba6-41f1-aae5-bb1e4f90cce0', 'default', 'Zone Défaut', 'Zone par défaut, à changer', CURRENT_TIMESTAMP); - --- Set default zoneId for current clusters -UPDATE "Cluster" -SET "zoneId" -= 'a66c4230-eba6-41f1-aae5-bb1e4f90cce0' -WHERE "zoneId" -IS NULL; - --- AlterTable -ALTER TABLE "Cluster" ALTER COLUMN "zoneId" -SET -NOT NULL; - --- AddForeignKey -ALTER TABLE "Cluster" ADD CONSTRAINT "Cluster_zoneId_fkey" FOREIGN KEY ("zoneId") REFERENCES "Zone"("id") -ON DELETE RESTRICT ON -UPDATE CASCADE; diff --git a/apps/server/src/prisma/migrations/20240424093852_dso/migration.sql b/apps/server/src/prisma/migrations/20240424093852_dso/migration.sql deleted file mode 100644 index cb4f7ad968..0000000000 --- a/apps/server/src/prisma/migrations/20240424093852_dso/migration.sql +++ /dev/null @@ -1,23 +0,0 @@ --- CreateTable -CREATE TABLE "ProjectPlugin" ( - "pluginName" TEXT NOT NULL, - "projectId" UUID NOT NULL, - "key" TEXT NOT NULL, - "value" TEXT NOT NULL -); - --- CreateTable -CREATE TABLE "AdminPlugin" ( - "pluginName" TEXT NOT NULL, - "key" TEXT NOT NULL, - "value" TEXT NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX "ProjectPlugin_projectId_pluginName_key_key" ON "ProjectPlugin"("projectId", "pluginName", "key"); - --- CreateIndex -CREATE UNIQUE INDEX "AdminPlugin_pluginName_key_key" ON "AdminPlugin"("pluginName", "key"); - --- AddForeignKey -ALTER TABLE "ProjectPlugin" ADD CONSTRAINT "ProjectPlugin_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/server/src/prisma/migrations/20240427181037_dso/migration.sql b/apps/server/src/prisma/migrations/20240427181037_dso/migration.sql deleted file mode 100644 index 11672324f8..0000000000 --- a/apps/server/src/prisma/migrations/20240427181037_dso/migration.sql +++ /dev/null @@ -1,19 +0,0 @@ -DO $$ -DECLARE - project_row RECORD; - registry_id INT; -BEGIN - -- Début de la boucle sur chaque ligne de la table 'Project' - FOR project_row IN SELECT id, services FROM public."Project" LOOP - -- Extrait 'registry.id' de la colonne JSON 'services' - registry_id := (SELECT (project_row.services -> 'registry' ->> 'id')::TEXT); - -- Si 'registry.id' existe, insérer dans la table 'config' - IF registry_id IS NOT NULL THEN - INSERT INTO public."ProjectPlugin" ("projectId", "pluginName", "key", "value") - VALUES (project_row.id, 'registry', 'projectId', registry_id::TEXT); - END IF; - END LOOP; -END $$; - --- AlterTable -ALTER TABLE "Project" DROP COLUMN "services"; diff --git a/apps/server/src/prisma/migrations/20240605135052_dso/migration.sql b/apps/server/src/prisma/migrations/20240605135052_dso/migration.sql deleted file mode 100644 index 9c7d5a8f8f..0000000000 --- a/apps/server/src/prisma/migrations/20240605135052_dso/migration.sql +++ /dev/null @@ -1,9 +0,0 @@ --- CreateEnum -CREATE TYPE "RoleList" AS ENUM ('owner', 'user'); - --- AlterTable -ALTER TABLE public."Role" ALTER COLUMN "role" TYPE "RoleList" USING - case - when role = 'owner' then 'owner'::"RoleList" - else 'user'::"RoleList" - end; \ No newline at end of file diff --git a/apps/server/src/prisma/migrations/20240612123132_dso/migration.sql b/apps/server/src/prisma/migrations/20240612123132_dso/migration.sql deleted file mode 100644 index 45a4a5d1ea..0000000000 --- a/apps/server/src/prisma/migrations/20240612123132_dso/migration.sql +++ /dev/null @@ -1,8 +0,0 @@ --- CreateTable -CREATE TABLE "ProjectClusterHistory" ( - "projectId" UUID NOT NULL, - "clusterId" UUID NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX "ProjectClusterHistory_projectId_clusterId_key" ON "ProjectClusterHistory"("projectId", "clusterId"); diff --git a/apps/server/src/prisma/migrations/20240614222908_dso/migration.sql b/apps/server/src/prisma/migrations/20240614222908_dso/migration.sql deleted file mode 100644 index 2b1641a657..0000000000 --- a/apps/server/src/prisma/migrations/20240614222908_dso/migration.sql +++ /dev/null @@ -1,11 +0,0 @@ -DO $$ -DECLARE - env_row RECORD; -BEGIN - -- Début de la boucle sur chaque ligne de la table 'Project' - FOR env_row IN SELECT "projectId", "clusterId" FROM public."Environment" LOOP - INSERT INTO public."ProjectClusterHistory" ("projectId", "clusterId") - VALUES (env_row."projectId", env_row."clusterId") - ON CONFLICT DO NOTHING; - END LOOP; -END $$; \ No newline at end of file diff --git a/apps/server/src/prisma/migrations/20240618112205_dso/migration.sql b/apps/server/src/prisma/migrations/20240618112205_dso/migration.sql deleted file mode 100644 index 5e7ff03d45..0000000000 --- a/apps/server/src/prisma/migrations/20240618112205_dso/migration.sql +++ /dev/null @@ -1,58 +0,0 @@ --- AlterTable -ALTER TABLE "Environment" ADD COLUMN "quotaId" UUID, -ADD COLUMN "stageId" UUID; - --- AddForeignKey -ALTER TABLE "Environment" ADD CONSTRAINT "Environment_quotaId_fkey" FOREIGN KEY ("quotaId") REFERENCES "Quota"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Environment" ADD CONSTRAINT "Environment_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- CreateTable -CREATE TABLE "_QuotaToStage" ( - "A" UUID NOT NULL, - "B" UUID NOT NULL -); - --- CreateIndex -CREATE UNIQUE INDEX "_QuotaToStage_AB_unique" ON "_QuotaToStage"("A", "B"); - --- CreateIndex -CREATE INDEX "_QuotaToStage_B_index" ON "_QuotaToStage"("B"); - --- AddForeignKey -ALTER TABLE "_QuotaToStage" ADD CONSTRAINT "_QuotaToStage_A_fkey" FOREIGN KEY ("A") REFERENCES "Quota"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_QuotaToStage" ADD CONSTRAINT "_QuotaToStage_B_fkey" FOREIGN KEY ("B") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; - -DO $$ -DECLARE - quota_stage_row RECORD; -BEGIN - FOR quota_stage_row IN SELECT * FROM public."QuotaStage" loop - UPDATE public."Environment" SET "stageId" = quota_stage_row."stageId" WHERE "Environment"."quotaStageId" = quota_stage_row.id; - UPDATE public."Environment" SET "quotaId" = quota_stage_row."quotaId" WHERE "Environment"."quotaStageId" = quota_stage_row.id; - insert into public."_QuotaToStage" values (quota_stage_row."quotaId", quota_stage_row."stageId"); - END LOOP; -END $$; - --- DropForeignKey -ALTER TABLE "Environment" DROP CONSTRAINT "Environment_quotaStageId_fkey"; - --- AlterTable -ALTER TABLE "Environment" ALTER COLUMN "quotaId" SET NOT NULL, -ALTER COLUMN "stageId" SET NOT NULL, -DROP COLUMN "quotaStageId"; - --- DropForeignKey -ALTER TABLE "QuotaStage" DROP CONSTRAINT "QuotaStage_quotaId_fkey"; - --- DropForeignKey -ALTER TABLE "QuotaStage" DROP CONSTRAINT "QuotaStage_stageId_fkey"; - --- DropTable -DROP TABLE "QuotaStage"; - --- DropEnum -DROP TYPE "QuotaStageStatus"; diff --git a/apps/server/src/prisma/migrations/20240717084709_dso/migration.sql b/apps/server/src/prisma/migrations/20240717084709_dso/migration.sql deleted file mode 100644 index 0036da8a12..0000000000 --- a/apps/server/src/prisma/migrations/20240717084709_dso/migration.sql +++ /dev/null @@ -1,9 +0,0 @@ -/* - Warnings: - - - Made the column `description` on table `Project` required. This step will fail if there are existing NULL values in that column. - -*/ --- AlterTable -ALTER TABLE "Project" ALTER COLUMN "description" SET NOT NULL, -ALTER COLUMN "description" SET DEFAULT ''; diff --git a/apps/server/src/prisma/migrations/20240723135420_dso/migration.sql b/apps/server/src/prisma/migrations/20240723135420_dso/migration.sql deleted file mode 100644 index ed6ae9b84e..0000000000 --- a/apps/server/src/prisma/migrations/20240723135420_dso/migration.sql +++ /dev/null @@ -1,198 +0,0 @@ --- DropForeignKey if exists -DO $$ BEGIN - IF EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'Permission_environmentId_fkey') THEN - ALTER TABLE "Permission" DROP CONSTRAINT "Permission_environmentId_fkey"; - END IF; -END $$; - --- DropForeignKey if exists -DO $$ BEGIN - IF EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'Permission_userId_fkey') THEN - ALTER TABLE "Permission" DROP CONSTRAINT "Permission_userId_fkey"; - END IF; -END $$; - --- DropForeignKey if exists -DO $$ BEGIN - IF EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'Role_projectId_fkey') THEN - ALTER TABLE "Role" DROP CONSTRAINT "Role_projectId_fkey"; - END IF; -END $$; - --- DropForeignKey if exists -DO $$ BEGIN - IF EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'Role_userId_fkey') THEN - ALTER TABLE "Role" DROP CONSTRAINT "Role_userId_fkey"; - END IF; -END $$; - --- CreateTable if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ProjectMembers') THEN - CREATE TABLE "ProjectMembers" ( - "projectId" UUID NOT NULL, - "userId" UUID NOT NULL, - "roleIds" TEXT[] - ); - END IF; -END $$; - --- AlterTable -ALTER TABLE "Log" ADD COLUMN IF NOT EXISTS "projectId" UUID; - -INSERT INTO public."User" (id, "firstName", "lastName", email, "createdAt", "updatedAt") -VALUES('04ac168a-2c4f-4816-9cce-af6c612e5912'::uuid, 'Anonymous', 'User', 'anon@user', '2023-07-03 14:46:56.770', '2023-07-03 14:46:56.770') -ON CONFLICT (id) DO NOTHING; - --- AlterTable -ALTER TABLE "Project" ADD COLUMN IF NOT EXISTS "everyonePerms" BIGINT NOT NULL DEFAULT 896, -ADD COLUMN IF NOT EXISTS "ownerId" UUID; - -DO $$ -DECLARE - role_row RECORD; -BEGIN - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'Role') THEN - -- Début de la boucle sur chaque ligne de la table 'Project' - FOR role_row IN SELECT "userId", "projectId", "role" FROM public."Role" LOOP - INSERT INTO public."ProjectMembers" ("userId", "projectId", "roleIds") VALUES (role_row."userId", role_row."projectId", '{}'); - IF role_row."role" = 'owner'::public."RoleList" THEN - UPDATE public."Project" - SET "ownerId"=role_row."userId" - WHERE id=role_row."projectId"::uuid; - END IF; - END LOOP; - END IF; -END $$; - -UPDATE public."Project" -SET "ownerId"='04ac168a-2c4f-4816-9cce-af6c612e5912' -WHERE "ownerId" IS NULL; - -ALTER TABLE public."Project" ALTER COLUMN "ownerId" SET NOT NULL; - -DELETE FROM public."ProjectMembers" pm -USING public."Project" p -WHERE pm."userId" = p."ownerId" -AND pm."projectId" = p."id"; - --- DropTable if exists -DO $$ BEGIN - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'Permission') THEN - DROP TABLE "Permission"; - END IF; -END $$; - --- DropTable if exists -DO $$ BEGIN - IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'Role') THEN - DROP TABLE "Role"; - END IF; -END $$; - --- DropEnum if exists -DO $$ BEGIN - IF EXISTS (SELECT 1 FROM pg_type WHERE typname = 'RoleList') THEN - DROP TYPE "RoleList"; - END IF; -END $$; - --- CreateTable if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'AdminRole') THEN - CREATE TABLE "AdminRole" ( - "id" UUID NOT NULL, - "name" TEXT NOT NULL, - "permissions" BIGINT NOT NULL, - "position" SMALLINT NOT NULL, - CONSTRAINT "AdminRole_pkey" PRIMARY KEY ("id") - ); - END IF; -END $$; - --- CreateTable if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'ProjectRole') THEN - CREATE TABLE "ProjectRole" ( - "id" UUID NOT NULL, - "name" TEXT NOT NULL, - "permissions" BIGINT NOT NULL, - "projectId" UUID NOT NULL, - "position" SMALLINT NOT NULL, - CONSTRAINT "ProjectRole_pkey" PRIMARY KEY ("id") - ); - END IF; -END $$; - --- CreateIndex if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'AdminRole_id_key') THEN - CREATE UNIQUE INDEX "AdminRole_id_key" ON "AdminRole"("id"); - END IF; -END $$; - --- CreateIndex if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'AdminRole_name_key') THEN - CREATE UNIQUE INDEX "AdminRole_name_key" ON "AdminRole"("name"); - END IF; -END $$; - --- CreateIndex if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'ProjectMembers_projectId_userId_key') THEN - CREATE UNIQUE INDEX "ProjectMembers_projectId_userId_key" ON "ProjectMembers"("projectId", "userId"); - END IF; -END $$; - --- CreateIndex if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'ProjectRole_id_key') THEN - CREATE UNIQUE INDEX "ProjectRole_id_key" ON "ProjectRole"("id"); - END IF; -END $$; - --- CreateIndex if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'Environment_projectId_name_key') THEN - CREATE UNIQUE INDEX "Environment_projectId_name_key" ON "Environment"("projectId", "name"); - END IF; -END $$; - --- AddForeignKey if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'Log_projectId_fkey') THEN - ALTER TABLE "Log" ADD CONSTRAINT "Log_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE SET NULL ON UPDATE CASCADE; - END IF; -END $$; - --- AddForeignKey if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'Project_ownerId_fkey') THEN - ALTER TABLE "Project" ADD CONSTRAINT "Project_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - END IF; -END $$; - --- AddForeignKey if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'ProjectMembers_projectId_fkey') THEN - ALTER TABLE "ProjectMembers" ADD CONSTRAINT "ProjectMembers_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - END IF; -END $$; - --- AddForeignKey if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'ProjectMembers_userId_fkey') THEN - ALTER TABLE "ProjectMembers" ADD CONSTRAINT "ProjectMembers_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - END IF; -END $$; - --- AddForeignKey if not exists -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'ProjectRole_projectId_fkey') THEN - ALTER TABLE "ProjectRole" ADD CONSTRAINT "ProjectRole_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - END IF; -END $$; - --- AlterTable -ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "adminRoleIds" TEXT[]; diff --git a/apps/server/src/prisma/migrations/20240725162050_dso/migration.sql b/apps/server/src/prisma/migrations/20240725162050_dso/migration.sql deleted file mode 100644 index c9b41827bf..0000000000 --- a/apps/server/src/prisma/migrations/20240725162050_dso/migration.sql +++ /dev/null @@ -1,5 +0,0 @@ --- DropIndex -DROP INDEX "AdminRole_name_key"; - --- AlterTable -ALTER TABLE "AdminRole" ADD COLUMN "oidcGroup" TEXT; diff --git a/apps/server/src/prisma/migrations/20240726210139_dso/migration.sql b/apps/server/src/prisma/migrations/20240726210139_dso/migration.sql deleted file mode 100644 index 265f262abb..0000000000 --- a/apps/server/src/prisma/migrations/20240726210139_dso/migration.sql +++ /dev/null @@ -1,14 +0,0 @@ -/* - Warnings: - - - Made the column `oidcGroup` on table `AdminRole` required. This step will fail if there are existing NULL values in that column. - -*/ --- AlterTable - -UPDATE public."AdminRole" -SET "oidcGroup"='' -WHERE "oidcGroup" IS NULL; - -ALTER TABLE "AdminRole" ALTER COLUMN "oidcGroup" SET NOT NULL, -ALTER COLUMN "oidcGroup" SET DEFAULT ''; diff --git a/apps/server/src/prisma/migrations/20240808082632_dso/migration.sql b/apps/server/src/prisma/migrations/20240808082632_dso/migration.sql deleted file mode 100644 index 4fc2768605..0000000000 --- a/apps/server/src/prisma/migrations/20240808082632_dso/migration.sql +++ /dev/null @@ -1,17 +0,0 @@ --- CreateTable -CREATE TABLE "SystemSetting" -( - "key" TEXT NOT NULL, - "value" TEXT NOT NULL, - - CONSTRAINT "SystemSetting_pkey" PRIMARY KEY ("key") -); - --- CreateIndex -CREATE UNIQUE INDEX "SystemSetting_key_key" ON "SystemSetting"("key"); - --- Create maintenance setting -INSERT INTO "SystemSetting" - ("key", "value") -VALUES - ('maintenance', 'off'); diff --git a/apps/server/src/prisma/migrations/20240826143230_dso/migration.sql b/apps/server/src/prisma/migrations/20240826143230_dso/migration.sql deleted file mode 100644 index 95ab54869d..0000000000 --- a/apps/server/src/prisma/migrations/20240826143230_dso/migration.sql +++ /dev/null @@ -1,3 +0,0 @@ -INSERT INTO public."AdminRole" -(id, "name", permissions, "position", "oidcGroup") -VALUES('76229c96-4716-45bc-99da-00498ec9018c'::uuid, 'Admin', 2, 0, '/admin'); \ No newline at end of file diff --git a/apps/server/src/prisma/migrations/20240829085548_dso/migration.sql b/apps/server/src/prisma/migrations/20240829085548_dso/migration.sql deleted file mode 100644 index c116482186..0000000000 --- a/apps/server/src/prisma/migrations/20240829085548_dso/migration.sql +++ /dev/null @@ -1,12 +0,0 @@ -/* - Warnings: - - - Made the column `externalUserName` on table `Repository` required. This step will fail if there are existing NULL values in that column. - -*/ --- AlterTable -UPDATE "Repository" SET "externalUserName" = '' WHERE "externalUserName" IS NULL; - -ALTER TABLE "Repository" ALTER COLUMN "externalUserName" SET NOT NULL, -ALTER COLUMN "externalUserName" SET DEFAULT '', -ALTER COLUMN "externalRepoUrl" SET DEFAULT ''; diff --git a/apps/server/src/prisma/migrations/20240916141253_token/migration.sql b/apps/server/src/prisma/migrations/20240916141253_token/migration.sql deleted file mode 100644 index b0472cd806..0000000000 --- a/apps/server/src/prisma/migrations/20240916141253_token/migration.sql +++ /dev/null @@ -1,23 +0,0 @@ --- CreateEnum -CREATE TYPE "TokenStatus" AS ENUM ('active', 'revoked'); - --- CreateTable -CREATE TABLE "AdminToken" ( - "id" UUID NOT NULL, - "name" TEXT NOT NULL, - "permissions" BIGINT NOT NULL, - "userId" UUID, - "expirationDate" TIMESTAMP(3), - "lastUse" TIMESTAMP(3), - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "status" "TokenStatus" NOT NULL DEFAULT 'active', - "hash" TEXT NOT NULL, - - CONSTRAINT "AdminToken_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "AdminToken_id_key" ON "AdminToken"("id"); - --- AddForeignKey -ALTER TABLE "AdminToken" ADD CONSTRAINT "AdminToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/apps/server/src/prisma/migrations/20240919122331_optional_user_id/migration.sql b/apps/server/src/prisma/migrations/20240919122331_optional_user_id/migration.sql deleted file mode 100644 index 47488b00c5..0000000000 --- a/apps/server/src/prisma/migrations/20240919122331_optional_user_id/migration.sql +++ /dev/null @@ -1,8 +0,0 @@ --- DropForeignKey -ALTER TABLE "Log" DROP CONSTRAINT "Log_userId_fkey"; - --- AlterTable -ALTER TABLE "Log" ALTER COLUMN "userId" DROP NOT NULL; - --- AddForeignKey -ALTER TABLE "Log" ADD CONSTRAINT "Log_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/apps/server/src/prisma/migrations/20240923142722_dso/migration.sql b/apps/server/src/prisma/migrations/20240923142722_dso/migration.sql deleted file mode 100644 index 18eca3eadf..0000000000 --- a/apps/server/src/prisma/migrations/20240923142722_dso/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Log" ALTER COLUMN "requestId" SET DATA TYPE VARCHAR(36); diff --git a/apps/server/src/prisma/migrations/20240923155416_dso/migration.sql b/apps/server/src/prisma/migrations/20240923155416_dso/migration.sql deleted file mode 100644 index 74e0946f0a..0000000000 --- a/apps/server/src/prisma/migrations/20240923155416_dso/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Zone" ADD COLUMN "argocdUrl" TEXT NOT NULL DEFAULT 'https://example.com'; diff --git a/apps/server/src/prisma/migrations/20240928002900_dso/migration.sql b/apps/server/src/prisma/migrations/20240928002900_dso/migration.sql deleted file mode 100644 index 41dac75359..0000000000 --- a/apps/server/src/prisma/migrations/20240928002900_dso/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterEnum -ALTER TYPE "ProjectStatus" ADD VALUE 'warning'; diff --git a/apps/server/src/prisma/migrations/20241008125724_enabling_maven/migration.sql b/apps/server/src/prisma/migrations/20241008125724_enabling_maven/migration.sql deleted file mode 100644 index ef888d5e50..0000000000 --- a/apps/server/src/prisma/migrations/20241008125724_enabling_maven/migration.sql +++ /dev/null @@ -1,12 +0,0 @@ -DO $$ -DECLARE - project_row RECORD; - registry_id INT; -BEGIN - -- Début de la boucle sur chaque ligne de la table 'Project' - FOR project_row IN SELECT id FROM public."Project" WHERE status <> 'archived'::public."ProjectStatus" LOOP - INSERT INTO public."ProjectPlugin" ("projectId", "pluginName", "key", "value") - VALUES (project_row.id, 'nexus', 'activateMavenRepo', 'enabled') - ON CONFLICT DO NOTHING; - END LOOP; -END $$; \ No newline at end of file diff --git a/apps/server/src/prisma/migrations/20241104232540_add_usertype/migration.sql b/apps/server/src/prisma/migrations/20241104232540_add_usertype/migration.sql deleted file mode 100644 index a57e5956c3..0000000000 --- a/apps/server/src/prisma/migrations/20241104232540_add_usertype/migration.sql +++ /dev/null @@ -1,12 +0,0 @@ --- CreateEnum -CREATE TYPE "UserType" AS ENUM ('human', 'bot', 'ghost'); - --- AlterEnum -ALTER TYPE "TokenStatus" ADD VALUE 'inactive'; - --- AlterTable -ALTER TABLE "User" ADD COLUMN "type" "UserType" NOT NULL DEFAULT 'human'; -UPDATE "User" SET type = 'ghost' WHERE id = '04ac168a-2c4f-4816-9cce-af6c612e5912'; - --- AlterTable -ALTER TABLE "User" ALTER COLUMN "type" DROP DEFAULT; diff --git a/apps/server/src/prisma/migrations/20241104232541_add_pat/migration.sql b/apps/server/src/prisma/migrations/20241104232541_add_pat/migration.sql deleted file mode 100644 index 71e15a312c..0000000000 --- a/apps/server/src/prisma/migrations/20241104232541_add_pat/migration.sql +++ /dev/null @@ -1,84 +0,0 @@ --- CreateTable (idempotent) -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'PersonalAccessToken') THEN - CREATE TABLE "PersonalAccessToken" ( - "id" UUID NOT NULL, - "name" TEXT NOT NULL, - "userId" UUID NOT NULL, - "expirationDate" TIMESTAMP(3) NOT NULL, - "lastUse" TIMESTAMP(3), - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "status" "TokenStatus" NOT NULL DEFAULT 'active', - "hash" TEXT NOT NULL, - - CONSTRAINT "PersonalAccessToken_pkey" PRIMARY KEY ("id") - ); - END IF; -END $$; - --- CreateIndex (idempotent) -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'PersonalAccessToken_id_key') THEN - CREATE UNIQUE INDEX "PersonalAccessToken_id_key" ON "PersonalAccessToken"("id"); - END IF; -END $$; - --- AddForeignKey (idempotent) -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'PersonalAccessToken_userId_fkey') THEN - ALTER TABLE "PersonalAccessToken" ADD CONSTRAINT "PersonalAccessToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; - END IF; -END $$; - --- Process AdminToken (idempotent) -DO $$ -DECLARE - admin_token record; - user_uuid UUID; -BEGIN - FOR admin_token IN SELECT "name", "id" - FROM public."AdminToken" - LOOP - -- Generate new UUID if user does not exist - user_uuid := COALESCE( - (SELECT id FROM public."User" WHERE email = concat(admin_token.name, '@bot.id')), - gen_random_uuid() - ); - - -- Insert user if not already exists - INSERT INTO public."User" (id, "firstName", "lastName", email, "createdAt", "updatedAt", "type") - VALUES(user_uuid, 'Bot Admin', admin_token.name, concat(admin_token.name, '@bot.id'), CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'bot') - ON CONFLICT (id) DO NOTHING; - - -- Update AdminToken with the new user ID - UPDATE public."AdminToken" SET "userId" = user_uuid WHERE id = admin_token.id; - END LOOP; -END $$; - --- Alter AdminToken userId column to NOT NULL (idempotent) -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.columns - WHERE table_name = 'AdminToken' AND column_name = 'userId' AND is_nullable = 'NO') THEN - ALTER TABLE public."AdminToken" ALTER COLUMN "userId" SET NOT NULL; - END IF; -END $$; - --- DropForeignKey if exists (idempotent) -DO $$ -BEGIN - IF EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'AdminToken_userId_fkey') THEN - ALTER TABLE "AdminToken" DROP CONSTRAINT "AdminToken_userId_fkey"; - END IF; -END $$; - --- AddForeignKey (idempotent) -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'AdminToken_userId_fkey') THEN - ALTER TABLE "AdminToken" ADD CONSTRAINT "AdminToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; - END IF; -END $$; diff --git a/apps/server/src/prisma/migrations/20241107142721_user_last_login/migration.sql b/apps/server/src/prisma/migrations/20241107142721_user_last_login/migration.sql deleted file mode 100644 index 521b2b10ac..0000000000 --- a/apps/server/src/prisma/migrations/20241107142721_user_last_login/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "User" ADD COLUMN "lastLogin" TIMESTAMP(3); diff --git a/apps/server/src/prisma/migrations/20241112101945_add_slug/migration.sql b/apps/server/src/prisma/migrations/20241112101945_add_slug/migration.sql deleted file mode 100644 index a7500833b9..0000000000 --- a/apps/server/src/prisma/migrations/20241112101945_add_slug/migration.sql +++ /dev/null @@ -1,14 +0,0 @@ --- AlterTable -ALTER TABLE "Project" ADD COLUMN "slug" TEXT; - -UPDATE public."Project" p -SET slug = ( - SELECT concat(org.name, '-', subp.name) FROM public."Project" subp - LEFT JOIN public."Organization" org on org."id" = subp."organizationId" - WHERE subp.id = p.id -); - -ALTER TABLE public."Project" ALTER COLUMN "slug" SET NOT NULL; - --- CreateIndex -CREATE UNIQUE INDEX "Project_slug_key" ON "Project"("slug"); diff --git a/apps/server/src/prisma/migrations/20241112102015_add_provisionning_version/migration.sql b/apps/server/src/prisma/migrations/20241112102015_add_provisionning_version/migration.sql deleted file mode 100644 index b143cbeb9b..0000000000 --- a/apps/server/src/prisma/migrations/20241112102015_add_provisionning_version/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Project" ADD COLUMN "lastSuccessProvisionningVersion" TEXT; diff --git a/apps/server/src/prisma/migrations/20241216131342_dso/migration.sql b/apps/server/src/prisma/migrations/20241216131342_dso/migration.sql deleted file mode 100644 index 7a88681901..0000000000 --- a/apps/server/src/prisma/migrations/20241216131342_dso/migration.sql +++ /dev/null @@ -1,17 +0,0 @@ --- AlterTable -ALTER TABLE "_ClusterToProject" ADD CONSTRAINT "_ClusterToProject_AB_pkey" PRIMARY KEY ("A", "B"); - --- DropIndex -DROP INDEX "_ClusterToProject_AB_unique"; - --- AlterTable -ALTER TABLE "_ClusterToStage" ADD CONSTRAINT "_ClusterToStage_AB_pkey" PRIMARY KEY ("A", "B"); - --- DropIndex -DROP INDEX "_ClusterToStage_AB_unique"; - --- AlterTable -ALTER TABLE "_QuotaToStage" ADD CONSTRAINT "_QuotaToStage_AB_pkey" PRIMARY KEY ("A", "B"); - --- DropIndex -DROP INDEX "_QuotaToStage_AB_unique"; diff --git a/apps/server/src/prisma/migrations/20250107104749_dso/migration.sql b/apps/server/src/prisma/migrations/20250107104749_dso/migration.sql deleted file mode 100644 index 21ce77b8d5..0000000000 --- a/apps/server/src/prisma/migrations/20250107104749_dso/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Cluster" ADD COLUMN "external" BOOLEAN NOT NULL DEFAULT false; diff --git a/apps/server/src/prisma/migrations/20250121222953_prevent_upgrade/migration.sql b/apps/server/src/prisma/migrations/20250121222953_prevent_upgrade/migration.sql deleted file mode 100644 index ac63cd639d..0000000000 --- a/apps/server/src/prisma/migrations/20250121222953_prevent_upgrade/migration.sql +++ /dev/null @@ -1,25 +0,0 @@ --- Vérifie les versions dans la table Project -DO $$ -DECLARE - project_id TEXT; - project_name TEXT; - last_version TEXT; -BEGIN - -- Boucle sur les projets non archivés - FOR project_id, project_name, last_version IN ( - SELECT id, name, "lastSuccessProvisionningVersion" - FROM "Project" - WHERE "status" != 'archived' - ) - LOOP - -- Vérifie si la version est NULL - IF last_version IS NULL THEN - RAISE EXCEPTION 'Le projet % (ID: %) a une version NULL.', project_name, project_id; - END IF; - - -- Vérifie si la version est inférieure à 8.23.0 selon SemVer - IF (string_to_array(last_version, '.')::int[] < ARRAY[8,23,0]) THEN - RAISE EXCEPTION 'Le projet % (ID: %) a une version (%), inférieure à 8.23.0.', project_name, project_id, last_version; - END IF; - END LOOP; -END $$; diff --git a/apps/server/src/prisma/migrations/20250121222954_drop_organization/migration.sql b/apps/server/src/prisma/migrations/20250121222954_drop_organization/migration.sql deleted file mode 100644 index 54871c9017..0000000000 --- a/apps/server/src/prisma/migrations/20250121222954_drop_organization/migration.sql +++ /dev/null @@ -1,15 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `organizationId` on the `Project` table. All the data in the column will be lost. - - You are about to drop the `Organization` table. If the table is not empty, all the data it contains will be lost. - -*/ --- DropForeignKey -ALTER TABLE "Project" DROP CONSTRAINT "Project_organizationId_fkey"; - --- AlterTable -ALTER TABLE "Project" DROP COLUMN "organizationId"; - --- DropTable -DROP TABLE "Organization"; diff --git a/apps/server/src/prisma/migrations/20250723141246_dso/migration.sql b/apps/server/src/prisma/migrations/20250723141246_dso/migration.sql deleted file mode 100644 index 68ca0df2fa..0000000000 --- a/apps/server/src/prisma/migrations/20250723141246_dso/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "Cluster" ALTER COLUMN "infos" SET DATA TYPE VARCHAR(1000); diff --git a/apps/server/src/prisma/migrations/20250818095032_remove_quota/migration.sql b/apps/server/src/prisma/migrations/20250818095032_remove_quota/migration.sql deleted file mode 100644 index 8364090d8d..0000000000 --- a/apps/server/src/prisma/migrations/20250818095032_remove_quota/migration.sql +++ /dev/null @@ -1,44 +0,0 @@ --- AlterTable -ALTER TABLE "Environment" -ADD COLUMN "cpu" REAL NOT NULL DEFAULT 0, -ADD COLUMN "gpu" REAL NOT NULL DEFAULT 0, -ADD COLUMN "memory" REAL NOT NULL DEFAULT 0; - -COMMENT ON COLUMN "Environment".cpu IS 'CPU share as float (1 and 0.01 are valid values)'; -COMMENT ON COLUMN "Environment".gpu IS 'GPU share as float (1 and 0.01 are valid values)'; -COMMENT ON COLUMN "Environment".memory IS 'Memory value as GigaBytes (1 and 0.01 are valid values)'; - --- Use values from Quota. Memory is an extract of q.memory numeric value as it contains a unit (e.g. '2Gi'). -UPDATE "Environment" -SET cpu = q.cpu, memory = COALESCE(NULLIF(regexp_replace(q.memory, '\D', '','g'), ''), '0')::numeric -FROM "Quota" q -WHERE "quotaId" = q."id"; - -/* - Warnings: - - - You are about to drop the column `quotaId` on the `Environment` table. All the data in the column will be lost. - - You are about to drop the `Quota` table. If the table is not empty, all the data it contains will be lost. - - You are about to drop the `_QuotaToStage` table. If the table is not empty, all the data it contains will be lost. - -*/ --- DropForeignKey -ALTER TABLE "Environment" DROP CONSTRAINT "Environment_quotaId_fkey"; - --- DropForeignKey -ALTER TABLE "_QuotaToStage" DROP CONSTRAINT "_QuotaToStage_A_fkey"; - --- DropForeignKey -ALTER TABLE "_QuotaToStage" DROP CONSTRAINT "_QuotaToStage_B_fkey"; - --- AlterTable -ALTER TABLE "Environment" DROP COLUMN "quotaId", -ALTER COLUMN "cpu" DROP DEFAULT, -ALTER COLUMN "gpu" DROP DEFAULT, -ALTER COLUMN "memory" DROP DEFAULT; - --- DropTable -DROP TABLE "Quota"; - --- DropTable -DROP TABLE "_QuotaToStage"; diff --git a/apps/server/src/prisma/migrations/20250825150622_add_cluster_resources/migration.sql b/apps/server/src/prisma/migrations/20250825150622_add_cluster_resources/migration.sql deleted file mode 100644 index 77f32b5ab5..0000000000 --- a/apps/server/src/prisma/migrations/20250825150622_add_cluster_resources/migration.sql +++ /dev/null @@ -1,5 +0,0 @@ --- AlterTable -ALTER TABLE "Cluster" -ADD COLUMN "cpu" REAL NOT NULL DEFAULT 0, -ADD COLUMN "gpu" REAL NOT NULL DEFAULT 0, -ADD COLUMN "memory" REAL NOT NULL DEFAULT 0; diff --git a/apps/server/src/prisma/migrations/20250916134454_add_project_resources/migration.sql b/apps/server/src/prisma/migrations/20250916134454_add_project_resources/migration.sql deleted file mode 100644 index decca804aa..0000000000 --- a/apps/server/src/prisma/migrations/20250916134454_add_project_resources/migration.sql +++ /dev/null @@ -1,9 +0,0 @@ --- AlterTable -ALTER TABLE "Project" -ADD COLUMN "limitless" BOOLEAN NOT NULL DEFAULT true, -ADD COLUMN "hprodCpu" REAL NOT NULL DEFAULT 0, -ADD COLUMN "hprodGpu" REAL NOT NULL DEFAULT 0, -ADD COLUMN "hprodMemory" REAL NOT NULL DEFAULT 0, -ADD COLUMN "prodCpu" REAL NOT NULL DEFAULT 0, -ADD COLUMN "prodGpu" REAL NOT NULL DEFAULT 0, -ADD COLUMN "prodMemory" REAL NOT NULL DEFAULT 0; diff --git a/apps/server/src/prisma/migrations/20251028150522_rename_default_zone/migration.sql b/apps/server/src/prisma/migrations/20251028150522_rename_default_zone/migration.sql deleted file mode 100644 index 95f3a689db..0000000000 --- a/apps/server/src/prisma/migrations/20251028150522_rename_default_zone/migration.sql +++ /dev/null @@ -1,4 +0,0 @@ --- Rename default zone -UPDATE "Zone" -SET ("label", "description") = ('DSO', 'Zone par défaut') -WHERE slug = 'default'; diff --git a/apps/server/src/prisma/migrations/20251208140951_add_argocd_inputs/migration.sql b/apps/server/src/prisma/migrations/20251208140951_add_argocd_inputs/migration.sql deleted file mode 100644 index aadb6cdba9..0000000000 --- a/apps/server/src/prisma/migrations/20251208140951_add_argocd_inputs/migration.sql +++ /dev/null @@ -1,4 +0,0 @@ --- AlterTable -ALTER TABLE "Repository" ADD COLUMN "deployRevision" TEXT, -ADD COLUMN "deployPath" TEXT, -ADD COLUMN "helmValuesFiles" TEXT; diff --git a/apps/server/src/prisma/schema/schema.prisma b/apps/server/src/prisma/schema/schema.prisma deleted file mode 100644 index aadf7fea13..0000000000 --- a/apps/server/src/prisma/schema/schema.prisma +++ /dev/null @@ -1,21 +0,0 @@ -generator client { - provider = "prisma-client-js" -} - -datasource db { - provider = "postgresql" - url = env("DB_URL") -} - -model Log { - id String @id @default(uuid()) @db.Uuid - data Json - action String @default("") - userId String? @db.Uuid - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - requestId String? @db.VarChar(36) - projectId String? @db.Uuid - project Project? @relation(fields: [projectId], references: [id]) - user User? @relation(fields: [userId], references: [id]) -} diff --git a/apps/server/src/prisma/schema/token.prisma b/apps/server/src/prisma/schema/token.prisma deleted file mode 100644 index c0c55751c5..0000000000 --- a/apps/server/src/prisma/schema/token.prisma +++ /dev/null @@ -1,30 +0,0 @@ -model AdminToken { - id String @id @unique @default(uuid()) @db.Uuid - name String - permissions BigInt - userId String @db.Uuid - expirationDate DateTime? - lastUse DateTime? - createdAt DateTime @default(now()) - status TokenStatus @default(active) - hash String - owner User @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade) -} - -model PersonalAccessToken { - id String @id @unique @default(uuid()) @db.Uuid - name String - userId String @db.Uuid - expirationDate DateTime - lastUse DateTime? - createdAt DateTime @default(now()) - status TokenStatus @default(active) - hash String - owner User @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade) -} - -enum TokenStatus { - active - revoked - inactive -} diff --git a/apps/server/src/prisma/schema/topography.prisma b/apps/server/src/prisma/schema/topography.prisma deleted file mode 100644 index 63d90abb8a..0000000000 --- a/apps/server/src/prisma/schema/topography.prisma +++ /dev/null @@ -1,52 +0,0 @@ -model Cluster { - id String @id @unique @default(uuid()) @db.Uuid - label String @unique @db.VarChar(50) - privacy ClusterPrivacy @default(dedicated) - secretName String @unique @default(uuid()) @db.VarChar(50) - clusterResources Boolean @default(false) - kubeConfigId String @unique @db.Uuid - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - infos String? @db.VarChar(1000) - memory Float @db.Real - cpu Float @db.Real - gpu Float @db.Real - zoneId String @db.Uuid - kubeconfig Kubeconfig @relation(fields: [kubeConfigId], references: [id], onDelete: Cascade) - zone Zone @relation(fields: [zoneId], references: [id]) - environments Environment[] - projects Project[] @relation("ClusterToProject") - stages Stage[] @relation("ClusterToStage") -} - -model Kubeconfig { - id String @id @unique @default(uuid()) @db.Uuid - user Json - cluster Json - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - parentCluster Cluster? -} - -model Stage { - id String @id @unique @default(uuid()) @db.Uuid - name String @unique @db.VarChar - environments Environment[] - clusters Cluster[] @relation("ClusterToStage") -} - -model Zone { - id String @id @unique @default(uuid()) @db.Uuid - slug String @unique @db.VarChar(10) - label String @db.VarChar(50) - description String? @db.VarChar(200) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - argocdUrl String @default("https://example.com") - clusters Cluster[] -} - -enum ClusterPrivacy { - public - dedicated -} diff --git a/apps/server/src/prisma/schema/user.prisma b/apps/server/src/prisma/schema/user.prisma deleted file mode 100644 index e90fb69f83..0000000000 --- a/apps/server/src/prisma/schema/user.prisma +++ /dev/null @@ -1,23 +0,0 @@ -model User { - id String @id @db.Uuid - firstName String - lastName String - email String @unique - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - lastLogin DateTime? - adminRoleIds String[] - type UserType - - logs Log[] - projectsOwned Project[] - adminTokens AdminToken[] - projectMembers ProjectMembers[] - personalAccessTokens PersonalAccessToken[] -} - -enum UserType { - human - bot - ghost -} diff --git a/apps/server/src/resources/admin-role/business.spec.ts b/apps/server/src/resources/admin-role/business.spec.ts index 9f9a7051ea..9cd0e983e1 100644 --- a/apps/server/src/resources/admin-role/business.spec.ts +++ b/apps/server/src/resources/admin-role/business.spec.ts @@ -1,4 +1,4 @@ -import type { AdminRole, User } from '@prisma/client' +import type { AdminRole, User } from '@cpn-console/database' import { faker } from '@faker-js/faker' import { describe, expect, it, vi } from 'vitest' import prisma from '../../__mocks__/prisma.js' diff --git a/apps/server/src/resources/admin-role/business.ts b/apps/server/src/resources/admin-role/business.ts index f81fd65b75..f69a8c3f72 100644 --- a/apps/server/src/resources/admin-role/business.ts +++ b/apps/server/src/resources/admin-role/business.ts @@ -1,5 +1,5 @@ +import type { Project, ProjectRole } from '@cpn-console/database' import type { AdminRole, adminRoleContract } from '@cpn-console/shared' -import type { Project, ProjectRole } from '@prisma/client' import type { ErrorResType } from '@/utils/errors.js' import prisma from '@/prisma.js' import { addLogs, getAdminRoleById, listAdminRoles } from '@/resources/queries-index.js' diff --git a/apps/server/src/resources/admin-role/queries.ts b/apps/server/src/resources/admin-role/queries.ts index 9c29eb0b36..23bcfaefc8 100644 --- a/apps/server/src/resources/admin-role/queries.ts +++ b/apps/server/src/resources/admin-role/queries.ts @@ -1,7 +1,7 @@ import type { AdminRole, Prisma, -} from '@prisma/client' +} from '@cpn-console/database' import prisma from '@/prisma.js' export const listAdminRoles = () => prisma.adminRole.findMany({ orderBy: { position: 'asc' } }) diff --git a/apps/server/src/resources/admin-token/business.ts b/apps/server/src/resources/admin-token/business.ts index 0702fde2b9..a4b843dc94 100644 --- a/apps/server/src/resources/admin-token/business.ts +++ b/apps/server/src/resources/admin-token/business.ts @@ -1,5 +1,5 @@ +import type { $Enums, AdminToken, Prisma } from '@cpn-console/database' import type { adminTokenContract } from '@cpn-console/shared' -import type { $Enums, AdminToken, Prisma } from '@prisma/client' import { createHash, randomUUID } from 'node:crypto' import { logger as baseLogger } from '@cpn-console/logger' import { generateRandomPassword, isAtLeastTomorrow } from '@cpn-console/shared' diff --git a/apps/server/src/resources/admin-token/router.spec.ts b/apps/server/src/resources/admin-token/router.spec.ts index 61efec35fc..4eac9cb648 100644 --- a/apps/server/src/resources/admin-token/router.spec.ts +++ b/apps/server/src/resources/admin-token/router.spec.ts @@ -1,5 +1,5 @@ +import type { AdminToken } from '@cpn-console/database' import type { ExposedAdminToken } from '@cpn-console/shared' -import type { AdminToken } from '@prisma/client' import { ADMIN_PERMS, adminTokenContract } from '@cpn-console/shared' import { faker } from '@faker-js/faker' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/apps/server/src/resources/cluster/business.spec.ts b/apps/server/src/resources/cluster/business.spec.ts index c003e66ae1..6bec30aa38 100644 --- a/apps/server/src/resources/cluster/business.spec.ts +++ b/apps/server/src/resources/cluster/business.spec.ts @@ -1,4 +1,4 @@ -import type { Cluster, Environment } from '@prisma/client' +import type { Cluster, Environment } from '@cpn-console/database' import { faker } from '@faker-js/faker' import { describe, expect, it, vi } from 'vitest' import prisma from '../../__mocks__/prisma.js' diff --git a/apps/server/src/resources/cluster/business.ts b/apps/server/src/resources/cluster/business.ts index ef542ce33a..e1a8686f97 100644 --- a/apps/server/src/resources/cluster/business.ts +++ b/apps/server/src/resources/cluster/business.ts @@ -1,5 +1,5 @@ +import type { Prisma, Project, User } from '@cpn-console/database' import type { Cluster, clusterContract, ClusterDetails, Kubeconfig } from '@cpn-console/shared' -import type { Prisma, Project, User } from '@prisma/client' import type { Resources } from '@/types/index.js' import { ClusterDetailsSchema, ClusterPrivacy } from '@cpn-console/shared' import prisma from '@/prisma.js' diff --git a/apps/server/src/resources/cluster/queries.ts b/apps/server/src/resources/cluster/queries.ts index f66e1fc0bc..e797b11186 100644 --- a/apps/server/src/resources/cluster/queries.ts +++ b/apps/server/src/resources/cluster/queries.ts @@ -1,4 +1,4 @@ -import type { Cluster, Environment, Kubeconfig, Prisma, Project, Stage } from '@prisma/client' +import type { Cluster, Environment, Kubeconfig, Prisma, Project, Stage } from '@cpn-console/database' import prisma from '@/prisma.js' export async function getClustersAssociatedWithProject(projectId: Project['id']) { diff --git a/apps/server/src/resources/environment/business.spec.ts b/apps/server/src/resources/environment/business.spec.ts index 7bfebb5b2e..bff8e14df0 100644 --- a/apps/server/src/resources/environment/business.spec.ts +++ b/apps/server/src/resources/environment/business.spec.ts @@ -1,4 +1,4 @@ -import type { Cluster, Environment, Project, ProjectMembers, ProjectRole, Stage, User } from '@prisma/client' +import type { Cluster, Environment, Project, ProjectMembers, ProjectRole, Stage, User } from '@cpn-console/database' import { faker } from '@faker-js/faker' import { beforeEach, describe, expect, it, vi } from 'vitest' import prisma from '../../__mocks__/prisma.js' diff --git a/apps/server/src/resources/environment/business.ts b/apps/server/src/resources/environment/business.ts index 2f068dedf8..a2a2c95eb3 100644 --- a/apps/server/src/resources/environment/business.ts +++ b/apps/server/src/resources/environment/business.ts @@ -1,4 +1,4 @@ -import type { Cluster, Environment, Project, Stage, User } from '@prisma/client' +import type { Cluster, Environment, Project, Stage, User } from '@cpn-console/database' import type { Resources, UserDetails } from '@/types/index.js' import prisma from '@/prisma.js' import { diff --git a/apps/server/src/resources/environment/queries.ts b/apps/server/src/resources/environment/queries.ts index 6b228e2687..d51df6bbc4 100644 --- a/apps/server/src/resources/environment/queries.ts +++ b/apps/server/src/resources/environment/queries.ts @@ -1,4 +1,4 @@ -import type { Environment, Prisma, Project } from '@prisma/client' +import type { Environment, Prisma, Project } from '@cpn-console/database' import prisma from '@/prisma.js' // SELECT diff --git a/apps/server/src/resources/log/queries.ts b/apps/server/src/resources/log/queries.ts index 3851a8f13f..fceb3b99f7 100644 --- a/apps/server/src/resources/log/queries.ts +++ b/apps/server/src/resources/log/queries.ts @@ -1,4 +1,4 @@ -import type { Log, Prisma, Project, User } from '@prisma/client' +import type { Log, Prisma, Project, User } from '@cpn-console/database' import { exclude } from '@cpn-console/shared' import prisma from '@/prisma.js' diff --git a/apps/server/src/resources/project-member/business.ts b/apps/server/src/resources/project-member/business.ts index 4144b81813..620425db28 100644 --- a/apps/server/src/resources/project-member/business.ts +++ b/apps/server/src/resources/project-member/business.ts @@ -1,5 +1,5 @@ +import type { Project, User } from '@cpn-console/database' import type { projectMemberContract, XOR } from '@cpn-console/shared' -import type { Project, User } from '@prisma/client' import { logger as baseLogger } from '@cpn-console/logger' import { UserSchema } from '@cpn-console/shared' import prisma from '@/prisma.js' diff --git a/apps/server/src/resources/project-member/queries.ts b/apps/server/src/resources/project-member/queries.ts index a4ceb00df1..0f173e88f2 100644 --- a/apps/server/src/resources/project-member/queries.ts +++ b/apps/server/src/resources/project-member/queries.ts @@ -2,7 +2,7 @@ import type { Prisma, Project, -} from '@prisma/client' +} from '@cpn-console/database' import prisma from '@/prisma.js' diff --git a/apps/server/src/resources/project-role/business.spec.ts b/apps/server/src/resources/project-role/business.spec.ts index 89a70147fd..20bc517978 100644 --- a/apps/server/src/resources/project-role/business.spec.ts +++ b/apps/server/src/resources/project-role/business.spec.ts @@ -1,4 +1,4 @@ -import type { Project, ProjectMembers, ProjectRole } from '@prisma/client' +import type { Project, ProjectMembers, ProjectRole } from '@cpn-console/database' import { faker } from '@faker-js/faker' import { describe, expect, it, vi } from 'vitest' import { BadRequest400 } from '@/utils/errors.js' diff --git a/apps/server/src/resources/project-role/business.ts b/apps/server/src/resources/project-role/business.ts index 52bd8966b3..d59531785e 100644 --- a/apps/server/src/resources/project-role/business.ts +++ b/apps/server/src/resources/project-role/business.ts @@ -1,5 +1,5 @@ +import type { Project, ProjectRole } from '@cpn-console/database' import type { projectRoleContract } from '@cpn-console/shared' -import type { Project, ProjectRole } from '@prisma/client' import { isSystemRoleType } from '@cpn-console/shared' import prisma from '@/prisma.js' import { diff --git a/apps/server/src/resources/project-role/queries.ts b/apps/server/src/resources/project-role/queries.ts index 3e2aa4a0fa..b96cf47b98 100644 --- a/apps/server/src/resources/project-role/queries.ts +++ b/apps/server/src/resources/project-role/queries.ts @@ -2,7 +2,7 @@ import type { Prisma, Project, ProjectRole, -} from '@prisma/client' +} from '@cpn-console/database' import prisma from '@/prisma.js' diff --git a/apps/server/src/resources/project-service/business.ts b/apps/server/src/resources/project-service/business.ts index bce70064ef..4dd48c1f02 100644 --- a/apps/server/src/resources/project-service/business.ts +++ b/apps/server/src/resources/project-service/business.ts @@ -1,10 +1,10 @@ +import type { Project, ProjectPlugin } from '@cpn-console/database' import type { ZoneObject } from '@cpn-console/hooks' import type { PermissionTarget, PluginsUpdateBody, ServiceUrl, } from '@cpn-console/shared' -import type { Project, ProjectPlugin } from '@prisma/client' import { editStrippers, populatePluginManifests, servicesInfos } from '@cpn-console/hooks' import { logger as baseLogger } from '@cpn-console/logger' import { diff --git a/apps/server/src/resources/project-service/queries.ts b/apps/server/src/resources/project-service/queries.ts index cf353614b2..8a25de6332 100644 --- a/apps/server/src/resources/project-service/queries.ts +++ b/apps/server/src/resources/project-service/queries.ts @@ -1,4 +1,4 @@ -import type { Project } from '@prisma/client' +import type { Project } from '@cpn-console/database' import type { ConfigRecords } from './business.js' import prisma from '@/prisma.js' diff --git a/apps/server/src/resources/project/business.spec.ts b/apps/server/src/resources/project/business.spec.ts index a9f6c4fa62..e5e2b3de64 100644 --- a/apps/server/src/resources/project/business.spec.ts +++ b/apps/server/src/resources/project/business.spec.ts @@ -1,4 +1,4 @@ -import type { Cluster, Project, ProjectMembers, ProjectRole, User } from '@prisma/client' +import type { Cluster, Project, ProjectMembers, ProjectRole, User } from '@cpn-console/database' import { faker } from '@faker-js/faker' import { beforeEach, describe, expect, it, vi } from 'vitest' import prisma from '../../__mocks__/prisma.js' diff --git a/apps/server/src/resources/project/business.ts b/apps/server/src/resources/project/business.ts index 6396d359ec..49caec9519 100644 --- a/apps/server/src/resources/project/business.ts +++ b/apps/server/src/resources/project/business.ts @@ -1,5 +1,5 @@ +import type { Project, User } from '@cpn-console/database' import type { projectContract } from '@cpn-console/shared' -import type { Project, User } from '@prisma/client' import type { UserDetails } from '@/types/index.js' import type { ErrorResType } from '@/utils/errors.js' import { servicesInfos } from '@cpn-console/hooks' diff --git a/apps/server/src/resources/project/queries.ts b/apps/server/src/resources/project/queries.ts index a796373414..eda440f6f7 100644 --- a/apps/server/src/resources/project/queries.ts +++ b/apps/server/src/resources/project/queries.ts @@ -1,13 +1,13 @@ -import type { projectContract, XOR } from '@cpn-console/shared' import type { Prisma, Project, User, -} from '@prisma/client' -import { PROJECT_PERMS } from '@cpn-console/shared' +} from '@cpn-console/database' +import type { projectContract, XOR } from '@cpn-console/shared' import { ProjectStatus, -} from '@prisma/client' +} from '@cpn-console/database' +import { PROJECT_PERMS } from '@cpn-console/shared' import prisma from '@/prisma.js' import { appVersion } from '@/utils/env.js' import { uuid } from '@/utils/queries-tools.js' diff --git a/apps/server/src/resources/repository/business.ts b/apps/server/src/resources/repository/business.ts index 473c9c73a7..572f24047a 100644 --- a/apps/server/src/resources/repository/business.ts +++ b/apps/server/src/resources/repository/business.ts @@ -1,5 +1,5 @@ +import type { Project, Repository, User } from '@cpn-console/database' import type { CreateRepositoryBody, UpdateRepositoryBody } from '@cpn-console/shared' -import type { Project, Repository, User } from '@prisma/client' import { addLogs, deleteRepository as deleteRepositoryQuery, getProjectInfosAndRepos, getProjectRepositories as getProjectRepositoriesQuery, initializeRepository, updateRepository as updateRepositoryQuery } from '@/resources/queries-index.js' import { BadRequest400, Unprocessable422 } from '@/utils/errors.js' import { hook } from '@/utils/hook-wrapper.js' diff --git a/apps/server/src/resources/repository/queries.ts b/apps/server/src/resources/repository/queries.ts index 277e7af602..97b2948d73 100644 --- a/apps/server/src/resources/repository/queries.ts +++ b/apps/server/src/resources/repository/queries.ts @@ -1,4 +1,4 @@ -import type { Project, Repository } from '@prisma/client' +import type { Project, Repository } from '@cpn-console/database' import prisma from '@/prisma.js' // SELECT diff --git a/apps/server/src/resources/stage/business.spec.ts b/apps/server/src/resources/stage/business.spec.ts index ba43c2cb75..16df9b7ca5 100644 --- a/apps/server/src/resources/stage/business.spec.ts +++ b/apps/server/src/resources/stage/business.spec.ts @@ -1,4 +1,4 @@ -import type { Environment, Stage } from '@prisma/client' +import type { Environment, Stage } from '@cpn-console/database' import { faker } from '@faker-js/faker' import { beforeEach, describe, expect, it, vi } from 'vitest' import prisma from '../../__mocks__/prisma.js' diff --git a/apps/server/src/resources/stage/business.ts b/apps/server/src/resources/stage/business.ts index db6faf686e..1cf0a8cbb0 100644 --- a/apps/server/src/resources/stage/business.ts +++ b/apps/server/src/resources/stage/business.ts @@ -1,5 +1,5 @@ +import type { Cluster, Stage } from '@cpn-console/database' import type { CreateStageBody, UpdateStageBody } from '@cpn-console/shared' -import type { Cluster, Stage } from '@prisma/client' import prisma from '@/prisma.js' import { createStage as createStageQuery, diff --git a/apps/server/src/resources/stage/queries.ts b/apps/server/src/resources/stage/queries.ts index 98d526600a..fab60d3144 100644 --- a/apps/server/src/resources/stage/queries.ts +++ b/apps/server/src/resources/stage/queries.ts @@ -1,4 +1,4 @@ -import type { Cluster, Stage } from '@prisma/client' +import type { Cluster, Stage } from '@cpn-console/database' import prisma from '@/prisma.js' export function listStages() { diff --git a/apps/server/src/resources/system/settings/queries.ts b/apps/server/src/resources/system/settings/queries.ts index c64cb3b74c..86b675af13 100644 --- a/apps/server/src/resources/system/settings/queries.ts +++ b/apps/server/src/resources/system/settings/queries.ts @@ -1,4 +1,4 @@ -import type { Prisma, SystemSetting } from '@prisma/client' +import type { Prisma, SystemSetting } from '@cpn-console/database' import prisma from '@/prisma.js' export function upsertSystemSetting(newSystemSetting: SystemSetting) { diff --git a/apps/server/src/resources/user/business.ts b/apps/server/src/resources/user/business.ts index e20c9c0230..b397bcb11f 100644 --- a/apps/server/src/resources/user/business.ts +++ b/apps/server/src/resources/user/business.ts @@ -1,5 +1,5 @@ +import type { AdminRole, AdminToken, PersonalAccessToken, Prisma, User } from '@cpn-console/database' import type { userContract, XOR } from '@cpn-console/shared' -import type { AdminRole, AdminToken, PersonalAccessToken, Prisma, User } from '@prisma/client' import type { UserDetails } from '@/types/index.js' import { createHash } from 'node:crypto' import prisma from '@/prisma.js' diff --git a/apps/server/src/resources/user/queries.ts b/apps/server/src/resources/user/queries.ts index 1e33a8128b..e5be4e73a1 100644 --- a/apps/server/src/resources/user/queries.ts +++ b/apps/server/src/resources/user/queries.ts @@ -1,4 +1,4 @@ -import type { Prisma, User } from '@prisma/client' +import type { Prisma, User } from '@cpn-console/database' import prisma from '@/prisma.js' type UserCreate = Omit diff --git a/apps/server/src/resources/user/tokens/business.ts b/apps/server/src/resources/user/tokens/business.ts index e378d3b79b..4f649d8df8 100644 --- a/apps/server/src/resources/user/tokens/business.ts +++ b/apps/server/src/resources/user/tokens/business.ts @@ -1,5 +1,5 @@ +import type { AdminToken, User } from '@cpn-console/database' import type { personalAccessTokenContract } from '@cpn-console/shared' -import type { AdminToken, User } from '@prisma/client' import { createHash } from 'node:crypto' import { generateRandomPassword, isAtLeastTomorrow } from '@cpn-console/shared' import { BadRequest400 } from '@/utils/errors.js' diff --git a/apps/server/src/resources/zone/business.spec.ts b/apps/server/src/resources/zone/business.spec.ts index 2b42464e26..ef4c8cc7c5 100644 --- a/apps/server/src/resources/zone/business.spec.ts +++ b/apps/server/src/resources/zone/business.spec.ts @@ -1,4 +1,4 @@ -import type { Cluster, Zone } from '@prisma/client' +import type { Cluster, Zone } from '@cpn-console/database' import { faker } from '@faker-js/faker' import { beforeEach, describe, expect, it, vi } from 'vitest' import prisma from '../../__mocks__/prisma.js' diff --git a/apps/server/src/resources/zone/queries.ts b/apps/server/src/resources/zone/queries.ts index 1390bb153a..7ed201c32e 100644 --- a/apps/server/src/resources/zone/queries.ts +++ b/apps/server/src/resources/zone/queries.ts @@ -1,4 +1,4 @@ -import type { Cluster, Zone } from '@prisma/client' +import type { Cluster, Zone } from '@cpn-console/database' import prisma from '@/prisma.js' export function getZoneByIdOrThrow(id: Zone['id']) { diff --git a/apps/server/src/utils/controller.ts b/apps/server/src/utils/controller.ts index df231272c7..2192d2f9bd 100644 --- a/apps/server/src/utils/controller.ts +++ b/apps/server/src/utils/controller.ts @@ -1,5 +1,5 @@ +import type { Cluster, Prisma, Project, ProjectMembers, ProjectRole } from '@cpn-console/database' import type { XOR } from '@cpn-console/shared' -import type { Cluster, Prisma, Project, ProjectMembers, ProjectRole } from '@prisma/client' import type { FastifyRequest } from 'fastify' import type { UserDetails } from '@/types/index.js' import { PROJECT_PERMS as PP, PROJECT_PERMS, projectIsLockedInfo, tokenHeaderName } from '@cpn-console/shared' diff --git a/apps/server/src/utils/hook-wrapper.ts b/apps/server/src/utils/hook-wrapper.ts index 8f68d3c857..75d2402e58 100644 --- a/apps/server/src/utils/hook-wrapper.ts +++ b/apps/server/src/utils/hook-wrapper.ts @@ -1,6 +1,6 @@ +import type { Cluster, Kubeconfig, Project, ProjectMembers, ProjectRole, Zone } from '@cpn-console/database' import type { ClusterObject, HookResult, KubeCluster, KubeUser, Project as ProjectPayload, RepoCreds, Repository, Store, ZoneObject } from '@cpn-console/hooks' import type { AsyncReturnType } from '@cpn-console/shared' -import type { Cluster, Kubeconfig, Project, ProjectMembers, ProjectRole, Zone } from '@prisma/client' import type { ConfigRecords } from '@/resources/project-service/business.js' import { hooks } from '@cpn-console/hooks' import { getPermsByUserRoles, ProjectAuthorized, resourceListToDict } from '@cpn-console/shared' diff --git a/apps/server/src/utils/mocks.ts b/apps/server/src/utils/mocks.ts index 16169f4d31..dc21c04a7f 100644 --- a/apps/server/src/utils/mocks.ts +++ b/apps/server/src/utils/mocks.ts @@ -1,5 +1,5 @@ +import type { Repository } from '@cpn-console/database' import type { PluginsManifests, RepoCreds, ServiceInfos } from '@cpn-console/hooks' -import type { Repository } from '@prisma/client' import type { UserDetails } from '../types/index.js' import type * as utilsController from '../utils/controller.js' import { editStrippers, populatePluginManifests } from '@cpn-console/hooks' diff --git a/package.json b/package.json index 43945cb558..6f90bd85b5 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "scripts": { "build": "pnpm -r run build", "build:clean": "pnpm -r run build:clean", - "db:generate": "pnpm -r run db:generate", "dev": "docker compose -f ./docker/docker-compose.local.yml up -d --remove-orphans && echo '\nStart server and client with commands:\n\n pnpm --filter @cpn-console/server run dev\n pnpm --filter @cpn-console/client run dev\n\nMake sure you provide env variables in `.env` files.'", "dev:clean": "docker compose -f ./docker/docker-compose.local.yml down --remove-orphans", "dev:delete": "docker compose -f ./docker/docker-compose.local.yml down -v --remove-orphans", diff --git a/packages/database/eslint.config.js b/packages/database/eslint.config.js new file mode 100644 index 0000000000..5a664d2b58 --- /dev/null +++ b/packages/database/eslint.config.js @@ -0,0 +1,3 @@ +import eslintConfigBase from '@cpn-console/eslint-config' + +export default eslintConfigBase diff --git a/packages/database/package.json b/packages/database/package.json new file mode 100644 index 0000000000..e57485c63e --- /dev/null +++ b/packages/database/package.json @@ -0,0 +1,45 @@ +{ + "name": "@cpn-console/database", + "type": "module", + "version": "0.0.0", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/cloud-pi-native/console" + }, + "exports": { + ".": { + "types": "./types/index.d.ts", + "default": "./dist/index.js" + } + }, + "files": [ + "dist", + "prisma", + "prisma.config.ts", + "types" + ], + "scripts": { + "build": "tsc", + "build:clean": "rimraf ./dist ./types ./tsconfig.tsbuildinfo", + "deploy": "prisma migrate deploy", + "diff": "prisma migrate diff", + "generate": "prisma generate", + "migrate": "prisma migrate dev --name dso", + "reset": "prisma migrate reset", + "studio": "prisma studio", + "format": "eslint ./ --fix", + "lint": "eslint ./" + }, + "dependencies": { + "@prisma/client": "^6.19.2" + }, + "devDependencies": { + "@cpn-console/eslint-config": "workspace:^", + "@cpn-console/ts-config": "workspace:^", + "@types/node": "^24.12.0", + "prisma": "^6.19.2", + "rimraf": "^6.1.3", + "typescript": "^5.9.3" + } +} diff --git a/packages/database/prisma.config.ts b/packages/database/prisma.config.ts new file mode 100644 index 0000000000..c78e77bbf5 --- /dev/null +++ b/packages/database/prisma.config.ts @@ -0,0 +1,9 @@ +import path from 'node:path' +import { defineConfig } from 'prisma/config' + +export default defineConfig({ + schema: path.join('prisma', 'schema'), + migrations: { + path: path.join('prisma', 'migrations'), + }, +}) diff --git a/apps/server-nestjs/src/prisma/migrations/20230706084346_dso/migration.sql b/packages/database/prisma/migrations/20230706084346_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20230706084346_dso/migration.sql rename to packages/database/prisma/migrations/20230706084346_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20230710181052_dso/migration.sql b/packages/database/prisma/migrations/20230710181052_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20230710181052_dso/migration.sql rename to packages/database/prisma/migrations/20230710181052_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20230711132934_dso/migration.sql b/packages/database/prisma/migrations/20230711132934_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20230711132934_dso/migration.sql rename to packages/database/prisma/migrations/20230711132934_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20230802143822_dso/migration.sql b/packages/database/prisma/migrations/20230802143822_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20230802143822_dso/migration.sql rename to packages/database/prisma/migrations/20230802143822_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20230912084459_dso/migration.sql b/packages/database/prisma/migrations/20230912084459_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20230912084459_dso/migration.sql rename to packages/database/prisma/migrations/20230912084459_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20231010111515_dso/migration.sql b/packages/database/prisma/migrations/20231010111515_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20231010111515_dso/migration.sql rename to packages/database/prisma/migrations/20231010111515_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20231011125838_dso/migration.sql b/packages/database/prisma/migrations/20231011125838_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20231011125838_dso/migration.sql rename to packages/database/prisma/migrations/20231011125838_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20231011125839_dso/migration.sql b/packages/database/prisma/migrations/20231011125839_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20231011125839_dso/migration.sql rename to packages/database/prisma/migrations/20231011125839_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20231011125841_dso/migration.sql b/packages/database/prisma/migrations/20231011125841_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20231011125841_dso/migration.sql rename to packages/database/prisma/migrations/20231011125841_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20231012105520_dso/migration.sql b/packages/database/prisma/migrations/20231012105520_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20231012105520_dso/migration.sql rename to packages/database/prisma/migrations/20231012105520_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20231024155020_dso/migration.sql b/packages/database/prisma/migrations/20231024155020_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20231024155020_dso/migration.sql rename to packages/database/prisma/migrations/20231024155020_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20231026150220_dso/migration.sql b/packages/database/prisma/migrations/20231026150220_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20231026150220_dso/migration.sql rename to packages/database/prisma/migrations/20231026150220_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240112135751_dso/migration.sql b/packages/database/prisma/migrations/20240112135751_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240112135751_dso/migration.sql rename to packages/database/prisma/migrations/20240112135751_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240321123436_dso/migration.sql b/packages/database/prisma/migrations/20240321123436_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240321123436_dso/migration.sql rename to packages/database/prisma/migrations/20240321123436_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240329172938_dso/migration.sql b/packages/database/prisma/migrations/20240329172938_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240329172938_dso/migration.sql rename to packages/database/prisma/migrations/20240329172938_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240424093852_dso/migration.sql b/packages/database/prisma/migrations/20240424093852_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240424093852_dso/migration.sql rename to packages/database/prisma/migrations/20240424093852_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240427181037_dso/migration.sql b/packages/database/prisma/migrations/20240427181037_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240427181037_dso/migration.sql rename to packages/database/prisma/migrations/20240427181037_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240605135052_dso/migration.sql b/packages/database/prisma/migrations/20240605135052_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240605135052_dso/migration.sql rename to packages/database/prisma/migrations/20240605135052_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240612123132_dso/migration.sql b/packages/database/prisma/migrations/20240612123132_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240612123132_dso/migration.sql rename to packages/database/prisma/migrations/20240612123132_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240614222908_dso/migration.sql b/packages/database/prisma/migrations/20240614222908_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240614222908_dso/migration.sql rename to packages/database/prisma/migrations/20240614222908_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240618112205_dso/migration.sql b/packages/database/prisma/migrations/20240618112205_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240618112205_dso/migration.sql rename to packages/database/prisma/migrations/20240618112205_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240717084709_dso/migration.sql b/packages/database/prisma/migrations/20240717084709_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240717084709_dso/migration.sql rename to packages/database/prisma/migrations/20240717084709_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240723135420_dso/migration.sql b/packages/database/prisma/migrations/20240723135420_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240723135420_dso/migration.sql rename to packages/database/prisma/migrations/20240723135420_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240725162050_dso/migration.sql b/packages/database/prisma/migrations/20240725162050_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240725162050_dso/migration.sql rename to packages/database/prisma/migrations/20240725162050_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240726210139_dso/migration.sql b/packages/database/prisma/migrations/20240726210139_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240726210139_dso/migration.sql rename to packages/database/prisma/migrations/20240726210139_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240808082632_dso/migration.sql b/packages/database/prisma/migrations/20240808082632_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240808082632_dso/migration.sql rename to packages/database/prisma/migrations/20240808082632_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240826143230_dso/migration.sql b/packages/database/prisma/migrations/20240826143230_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240826143230_dso/migration.sql rename to packages/database/prisma/migrations/20240826143230_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240829085548_dso/migration.sql b/packages/database/prisma/migrations/20240829085548_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240829085548_dso/migration.sql rename to packages/database/prisma/migrations/20240829085548_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240916141253_token/migration.sql b/packages/database/prisma/migrations/20240916141253_token/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240916141253_token/migration.sql rename to packages/database/prisma/migrations/20240916141253_token/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240919122331_optional_user_id/migration.sql b/packages/database/prisma/migrations/20240919122331_optional_user_id/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240919122331_optional_user_id/migration.sql rename to packages/database/prisma/migrations/20240919122331_optional_user_id/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240923142722_dso/migration.sql b/packages/database/prisma/migrations/20240923142722_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240923142722_dso/migration.sql rename to packages/database/prisma/migrations/20240923142722_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240923155416_dso/migration.sql b/packages/database/prisma/migrations/20240923155416_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240923155416_dso/migration.sql rename to packages/database/prisma/migrations/20240923155416_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20240928002900_dso/migration.sql b/packages/database/prisma/migrations/20240928002900_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20240928002900_dso/migration.sql rename to packages/database/prisma/migrations/20240928002900_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20241008125724_enabling_maven/migration.sql b/packages/database/prisma/migrations/20241008125724_enabling_maven/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20241008125724_enabling_maven/migration.sql rename to packages/database/prisma/migrations/20241008125724_enabling_maven/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20241104232540_add_usertype/migration.sql b/packages/database/prisma/migrations/20241104232540_add_usertype/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20241104232540_add_usertype/migration.sql rename to packages/database/prisma/migrations/20241104232540_add_usertype/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20241104232541_add_pat/migration.sql b/packages/database/prisma/migrations/20241104232541_add_pat/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20241104232541_add_pat/migration.sql rename to packages/database/prisma/migrations/20241104232541_add_pat/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20241107142721_user_last_login/migration.sql b/packages/database/prisma/migrations/20241107142721_user_last_login/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20241107142721_user_last_login/migration.sql rename to packages/database/prisma/migrations/20241107142721_user_last_login/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20241112101945_add_slug/migration.sql b/packages/database/prisma/migrations/20241112101945_add_slug/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20241112101945_add_slug/migration.sql rename to packages/database/prisma/migrations/20241112101945_add_slug/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20241112102015_add_provisionning_version/migration.sql b/packages/database/prisma/migrations/20241112102015_add_provisionning_version/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20241112102015_add_provisionning_version/migration.sql rename to packages/database/prisma/migrations/20241112102015_add_provisionning_version/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20241216131342_dso/migration.sql b/packages/database/prisma/migrations/20241216131342_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20241216131342_dso/migration.sql rename to packages/database/prisma/migrations/20241216131342_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20250107104749_dso/migration.sql b/packages/database/prisma/migrations/20250107104749_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20250107104749_dso/migration.sql rename to packages/database/prisma/migrations/20250107104749_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20250121222953_prevent_upgrade/migration.sql b/packages/database/prisma/migrations/20250121222953_prevent_upgrade/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20250121222953_prevent_upgrade/migration.sql rename to packages/database/prisma/migrations/20250121222953_prevent_upgrade/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20250121222954_drop_organization/migration.sql b/packages/database/prisma/migrations/20250121222954_drop_organization/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20250121222954_drop_organization/migration.sql rename to packages/database/prisma/migrations/20250121222954_drop_organization/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20250723141246_dso/migration.sql b/packages/database/prisma/migrations/20250723141246_dso/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20250723141246_dso/migration.sql rename to packages/database/prisma/migrations/20250723141246_dso/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20250818095032_remove_quota/migration.sql b/packages/database/prisma/migrations/20250818095032_remove_quota/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20250818095032_remove_quota/migration.sql rename to packages/database/prisma/migrations/20250818095032_remove_quota/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20250825150622_add_cluster_resources/migration.sql b/packages/database/prisma/migrations/20250825150622_add_cluster_resources/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20250825150622_add_cluster_resources/migration.sql rename to packages/database/prisma/migrations/20250825150622_add_cluster_resources/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20250916134454_add_project_resources/migration.sql b/packages/database/prisma/migrations/20250916134454_add_project_resources/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20250916134454_add_project_resources/migration.sql rename to packages/database/prisma/migrations/20250916134454_add_project_resources/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20251028150522_rename_default_zone/migration.sql b/packages/database/prisma/migrations/20251028150522_rename_default_zone/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20251028150522_rename_default_zone/migration.sql rename to packages/database/prisma/migrations/20251028150522_rename_default_zone/migration.sql diff --git a/apps/server-nestjs/src/prisma/migrations/20251208140951_add_argocd_inputs/migration.sql b/packages/database/prisma/migrations/20251208140951_add_argocd_inputs/migration.sql similarity index 100% rename from apps/server-nestjs/src/prisma/migrations/20251208140951_add_argocd_inputs/migration.sql rename to packages/database/prisma/migrations/20251208140951_add_argocd_inputs/migration.sql diff --git a/apps/server/src/prisma/migrations/20251218103526_alter_repository_defaults/migration.sql b/packages/database/prisma/migrations/20251218103526_alter_repository_defaults/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20251218103526_alter_repository_defaults/migration.sql rename to packages/database/prisma/migrations/20251218103526_alter_repository_defaults/migration.sql diff --git a/apps/server/src/prisma/migrations/20251219144931_add_environment_autosync/migration.sql b/packages/database/prisma/migrations/20251219144931_add_environment_autosync/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20251219144931_add_environment_autosync/migration.sql rename to packages/database/prisma/migrations/20251219144931_add_environment_autosync/migration.sql diff --git a/apps/server/src/prisma/migrations/20260127154602_add_oidc_group_to_project_role/migration.sql b/packages/database/prisma/migrations/20260127154602_add_oidc_group_to_project_role/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260127154602_add_oidc_group_to_project_role/migration.sql rename to packages/database/prisma/migrations/20260127154602_add_oidc_group_to_project_role/migration.sql diff --git a/apps/server/src/prisma/migrations/20260127164002_add_type_to_roles/migration.sql b/packages/database/prisma/migrations/20260127164002_add_type_to_roles/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260127164002_add_type_to_roles/migration.sql rename to packages/database/prisma/migrations/20260127164002_add_type_to_roles/migration.sql diff --git a/apps/server/src/prisma/migrations/20260204150335_add_system_roles/migration.sql b/packages/database/prisma/migrations/20260204150335_add_system_roles/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260204150335_add_system_roles/migration.sql rename to packages/database/prisma/migrations/20260204150335_add_system_roles/migration.sql diff --git a/apps/server/src/prisma/migrations/20260206105522_dso/migration.sql b/packages/database/prisma/migrations/20260206105522_dso/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260206105522_dso/migration.sql rename to packages/database/prisma/migrations/20260206105522_dso/migration.sql diff --git a/apps/server/src/prisma/migrations/20260211143048_dso/migration.sql b/packages/database/prisma/migrations/20260211143048_dso/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260211143048_dso/migration.sql rename to packages/database/prisma/migrations/20260211143048_dso/migration.sql diff --git a/apps/server/src/prisma/migrations/20260217144930_enable_legacy_permissions/migration.sql b/packages/database/prisma/migrations/20260217144930_enable_legacy_permissions/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260217144930_enable_legacy_permissions/migration.sql rename to packages/database/prisma/migrations/20260217144930_enable_legacy_permissions/migration.sql diff --git a/apps/server/src/prisma/migrations/20260226130000_remove_refined_permissions_setting/migration.sql b/packages/database/prisma/migrations/20260226130000_remove_refined_permissions_setting/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260226130000_remove_refined_permissions_setting/migration.sql rename to packages/database/prisma/migrations/20260226130000_remove_refined_permissions_setting/migration.sql diff --git a/apps/server/src/prisma/migrations/20260226140001_add_tout_le_monde/migration.sql b/packages/database/prisma/migrations/20260226140001_add_tout_le_monde/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260226140001_add_tout_le_monde/migration.sql rename to packages/database/prisma/migrations/20260226140001_add_tout_le_monde/migration.sql diff --git a/apps/server/src/prisma/migrations/20260226141201_role_type/migration.sql b/packages/database/prisma/migrations/20260226141201_role_type/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260226141201_role_type/migration.sql rename to packages/database/prisma/migrations/20260226141201_role_type/migration.sql diff --git a/apps/server/src/prisma/migrations/20260330122500_migrate_project_system_roles_type_system_managed/migration.sql b/packages/database/prisma/migrations/20260330122500_migrate_project_system_roles_type_system_managed/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260330122500_migrate_project_system_roles_type_system_managed/migration.sql rename to packages/database/prisma/migrations/20260330122500_migrate_project_system_roles_type_system_managed/migration.sql diff --git a/apps/server/src/prisma/migrations/20260402095325_dso/migration.sql b/packages/database/prisma/migrations/20260402095325_dso/migration.sql similarity index 100% rename from apps/server/src/prisma/migrations/20260402095325_dso/migration.sql rename to packages/database/prisma/migrations/20260402095325_dso/migration.sql diff --git a/apps/server/src/prisma/migrations/migration_lock.toml b/packages/database/prisma/migrations/migration_lock.toml similarity index 100% rename from apps/server/src/prisma/migrations/migration_lock.toml rename to packages/database/prisma/migrations/migration_lock.toml diff --git a/apps/server/src/prisma/schema/admin.prisma b/packages/database/prisma/schema/admin.prisma similarity index 100% rename from apps/server/src/prisma/schema/admin.prisma rename to packages/database/prisma/schema/admin.prisma diff --git a/apps/server/src/prisma/schema/project.prisma b/packages/database/prisma/schema/project.prisma similarity index 100% rename from apps/server/src/prisma/schema/project.prisma rename to packages/database/prisma/schema/project.prisma diff --git a/apps/server-nestjs/src/prisma/schema/schema.prisma b/packages/database/prisma/schema/schema.prisma similarity index 100% rename from apps/server-nestjs/src/prisma/schema/schema.prisma rename to packages/database/prisma/schema/schema.prisma diff --git a/apps/server-nestjs/src/prisma/schema/token.prisma b/packages/database/prisma/schema/token.prisma similarity index 100% rename from apps/server-nestjs/src/prisma/schema/token.prisma rename to packages/database/prisma/schema/token.prisma diff --git a/apps/server-nestjs/src/prisma/schema/topography.prisma b/packages/database/prisma/schema/topography.prisma similarity index 100% rename from apps/server-nestjs/src/prisma/schema/topography.prisma rename to packages/database/prisma/schema/topography.prisma diff --git a/apps/server-nestjs/src/prisma/schema/user.prisma b/packages/database/prisma/schema/user.prisma similarity index 100% rename from apps/server-nestjs/src/prisma/schema/user.prisma rename to packages/database/prisma/schema/user.prisma diff --git a/packages/database/src/index.ts b/packages/database/src/index.ts new file mode 100644 index 0000000000..8ef609df8d --- /dev/null +++ b/packages/database/src/index.ts @@ -0,0 +1,3 @@ +export * from '@prisma/client' +export { Prisma, PrismaClient } from '@prisma/client' +export { PrismaClientInitializationError } from '@prisma/client/runtime/library.js' diff --git a/packages/database/tsconfig.eslint.json b/packages/database/tsconfig.eslint.json new file mode 100644 index 0000000000..982c60cf77 --- /dev/null +++ b/packages/database/tsconfig.eslint.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "include": [ + "./**/*.ts", + "./**/*.js", + "./**/*.cjs", + "./**/*.mjs" + ], + "exclude": [ + "./node_modules", + "./dist", + "./types", + "./coverage", + "./**/*.d.ts" + ] +} diff --git a/packages/database/tsconfig.json b/packages/database/tsconfig.json new file mode 100644 index 0000000000..23d08090a5 --- /dev/null +++ b/packages/database/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": [ + "@cpn-console/ts-config/tsconfig.base.json" + ], + "compilerOptions": { + "baseUrl": "./", + "rootDir": "./src", + "declarationDir": "./types", + "outDir": "./dist" + }, + "include": [ + "./src/**/*.ts" + ], + "exclude": [ + "./src/**/*.spec.ts", + "./src/**/__mocks__" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 920f2aca05..a0a87c6359 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -201,6 +201,9 @@ importers: '@cpn-console/argocd-plugin': specifier: workspace:^ version: link:../../plugins/argocd + '@cpn-console/database': + specifier: workspace:^ + version: link:../../packages/database '@cpn-console/gitlab-plugin': specifier: workspace:^ version: link:../../plugins/gitlab @@ -270,9 +273,6 @@ importers: '@opentelemetry/sdk-node': specifier: ^0.212.0 version: 0.212.0(@opentelemetry/api@1.9.0) - '@prisma/client': - specifier: ^6.19.2 - version: 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3) '@ts-rest/core': specifier: ^3.52.1 version: 3.52.1(@types/node@24.12.0)(zod@3.25.76) @@ -303,9 +303,6 @@ importers: mustache: specifier: ^4.2.0 version: 4.2.0 - prisma: - specifier: ^6.19.2 - version: 6.19.2(magicast@0.3.5)(typescript@5.9.3) undici: specifier: ^7.24.0 version: 7.24.5 @@ -367,6 +364,9 @@ importers: '@cpn-console/argocd-plugin': specifier: workspace:^ version: file:plugins/argocd(@types/node@22.19.15)(typescript@5.9.3)(vitest@2.1.9(@types/node@22.19.15)(jsdom@25.0.1)(msw@2.12.10(@types/node@22.19.15)(typescript@5.9.3))(terser@5.46.0)) + '@cpn-console/database': + specifier: workspace:^ + version: link:../../packages/database '@cpn-console/gitlab-plugin': specifier: workspace:^ version: file:plugins/gitlab(@types/node@22.19.15)(typescript@5.9.3)(vitest@2.1.9(@types/node@22.19.15)(jsdom@25.0.1)(msw@2.12.10(@types/node@22.19.15)(typescript@5.9.3))(terser@5.46.0)) @@ -469,9 +469,6 @@ importers: '@opentelemetry/sdk-trace-node': specifier: ^2.5.1 version: 2.6.0(@opentelemetry/api@1.9.0) - '@prisma/client': - specifier: ^6.19.2 - version: 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3) '@ts-rest/core': specifier: ^3.52.1 version: 3.52.1(@types/node@22.19.15)(zod@3.25.76) @@ -508,9 +505,6 @@ importers: pino-http: specifier: ^11.0.0 version: 11.0.0 - prisma: - specifier: ^6.19.2 - version: 6.19.2(magicast@0.3.5)(typescript@5.9.3) reflect-metadata: specifier: ^0.2.2 version: 0.2.2 @@ -624,6 +618,31 @@ importers: specifier: ^2.1.9 version: 2.1.9(@types/node@22.19.15)(jsdom@25.0.1)(msw@2.12.10(@types/node@22.19.15)(typescript@5.9.3))(terser@5.46.0) + packages/database: + dependencies: + '@prisma/client': + specifier: ^6.19.2 + version: 6.19.2(prisma@6.19.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3) + devDependencies: + '@cpn-console/eslint-config': + specifier: workspace:^ + version: link:../eslintconfig + '@cpn-console/ts-config': + specifier: workspace:^ + version: link:../tsconfig + '@types/node': + specifier: ^24.12.0 + version: 24.12.0 + prisma: + specifier: ^6.19.2 + version: 6.19.2(magicast@0.3.5)(typescript@5.9.3) + rimraf: + specifier: ^6.1.3 + version: 6.1.3 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + packages/eslintconfig: devDependencies: '@antfu/eslint-config': diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6c8011a60c..44d941c710 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,28 @@ +packages: + - "packages/**" + - "plugins/**" + - "apps/**" + - "!apps/server/src/plugins/external/**" + - "playwright/**" +allowBuilds: + '@nestjs/core': true + '@prisma/client': true + '@prisma/engines': true + esbuild: true + msw: true + prisma: true + protobufjs: true + vue-demi: true +allowUnusedPatches: true + +autoInstallPeers: true +injectWorkspacePackages: true # minimum number of minutes that must pass after a version is published before # pnpm will install it. This applies to all dependencies, including transitive ones. minimumReleaseAge: 1440 # 1 day +patchedDependencies: + "@gouvminint/vue-dsfr": patches/@gouvminint__vue-dsfr.patch + fastify-keycloak-adapter@2.3.2: patches/fastify-keycloak-adapter@2.3.2.patch shellEmulator: true @@ -12,16 +34,3 @@ trustPolicyExclude: - semver@6.3.1 - chokidar@4.0.3 - pino@9.14.0 - -autoInstallPeers: true -injectWorkspacePackages: true -packages: - - "packages/**" - - "plugins/**" - - "apps/**" - - "!apps/server/src/plugins/external/**" - - "playwright/**" -patchedDependencies: - "@gouvminint/vue-dsfr": patches/@gouvminint__vue-dsfr.patch - fastify-keycloak-adapter@2.3.2: patches/fastify-keycloak-adapter@2.3.2.patch -allowUnusedPatches: true