refactor: replace projectId with environmentId in database schema, enhancing clarity and consistency in environment management across services

This commit is contained in:
Mauricio Siu
2025-09-02 00:18:36 -06:00
parent 990b174110
commit 11b0e21728
7 changed files with 108 additions and 13211 deletions

View File

@@ -1,26 +0,0 @@
CREATE TABLE "environment" (
"environmentId" text PRIMARY KEY NOT NULL,
"name" text NOT NULL,
"description" text,
"createdAt" text NOT NULL,
"projectId" text NOT NULL
);
--> statement-breakpoint
ALTER TABLE "environment" ADD CONSTRAINT "environment_projectId_project_projectId_fk" FOREIGN KEY ("projectId") REFERENCES "public"."project"("projectId") ON DELETE cascade ON UPDATE no action;
-- Insertar un ambiente "production" para cada proyecto existente
INSERT INTO "environment" ("environmentId", "name", "description", "createdAt", "projectId")
SELECT
-- Generar un ID único para cada ambiente usando el projectId como base
'env_prod_' || "projectId" || '_' || EXTRACT(EPOCH FROM NOW())::text,
'production',
'Production environment',
NOW()::text,
"projectId"
FROM "project"
WHERE "projectId" NOT IN (
SELECT DISTINCT "projectId"
FROM "environment"
WHERE "name" = 'production'
);

View File

@@ -1,25 +1,36 @@
-- Step 1: Add environmentId columns as nullable first
CREATE TABLE "environment" (
"environmentId" text PRIMARY KEY NOT NULL,
"name" text NOT NULL,
"description" text,
"createdAt" text NOT NULL,
"projectId" text NOT NULL
);
ALTER TABLE "environment" ADD CONSTRAINT "environment_projectId_project_projectId_fk" FOREIGN KEY ("projectId") REFERENCES "public"."project"("projectId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
-- Insertar un ambiente "production" para cada proyecto existente
INSERT INTO "environment" ("environmentId", "name", "description", "createdAt", "projectId")
SELECT
-- Generar un ID único para cada ambiente usando el projectId como base
'env_prod_' || "projectId" || '_' || EXTRACT(EPOCH FROM NOW())::text,
'production',
'Production environment',
NOW()::text,
"projectId"
FROM "project"
WHERE "projectId" NOT IN (
SELECT DISTINCT "projectId"
FROM "environment"
WHERE "name" = 'production'
);
ALTER TABLE "application" ADD COLUMN "environmentId" text;--> statement-breakpoint
ALTER TABLE "compose" ADD COLUMN "environmentId" text;--> statement-breakpoint
ALTER TABLE "postgres" ADD COLUMN "environmentId" text;--> statement-breakpoint
ALTER TABLE "mariadb" ADD COLUMN "environmentId" text;--> statement-breakpoint
ALTER TABLE "mongo" ADD COLUMN "environmentId" text;--> statement-breakpoint
ALTER TABLE "mysql" ADD COLUMN "environmentId" text;--> statement-breakpoint
ALTER TABLE "postgres" ADD COLUMN "environmentId" text;--> statement-breakpoint
ALTER TABLE "redis" ADD COLUMN "environmentId" text;--> statement-breakpoint
ALTER TABLE "compose" ADD COLUMN "environmentId" text;--> statement-breakpoint
-- Step 2: Create production environment for each project that doesn't have one
-- INSERT INTO "environment" ("environmentId", "name", "description", "createdAt", "projectId")
-- SELECT
-- 'env_prod_' || p."projectId" || '_' || EXTRACT(EPOCH FROM NOW())::text,
-- 'production',
-- 'Production environment',
-- NOW()::text,
-- p."projectId"
-- FROM "project" p
-- WHERE NOT EXISTS (
-- SELECT 1 FROM "environment" e
-- WHERE e."projectId" = p."projectId" AND e."name" = 'production'
-- );--> statement-breakpoint
-- Step 3: Update all services to point to their project's production environment
-- Update applications
@@ -92,6 +103,23 @@ SET "environmentId" = (
LIMIT 1
);--> statement-breakpoint
--> statement-breakpoint
ALTER TABLE "application" DROP CONSTRAINT "application_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "postgres" DROP CONSTRAINT "postgres_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "mariadb" DROP CONSTRAINT "mariadb_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "mongo" DROP CONSTRAINT "mongo_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "mysql" DROP CONSTRAINT "mysql_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "redis" DROP CONSTRAINT "redis_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "compose" DROP CONSTRAINT "compose_projectId_project_projectId_fk";
--> statement-breakpoint
-- Step 4: Make environmentId columns NOT NULL
ALTER TABLE "application" ALTER COLUMN "environmentId" SET NOT NULL;--> statement-breakpoint
ALTER TABLE "compose" ALTER COLUMN "environmentId" SET NOT NULL;--> statement-breakpoint
@@ -101,11 +129,19 @@ ALTER TABLE "mysql" ALTER COLUMN "environmentId" SET NOT NULL;--> statement-brea
ALTER TABLE "postgres" ALTER COLUMN "environmentId" SET NOT NULL;--> statement-breakpoint
ALTER TABLE "redis" ALTER COLUMN "environmentId" SET NOT NULL;--> statement-breakpoint
-- Step 5: Add foreign key constraints
ALTER TABLE "application" ADD CONSTRAINT "application_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "compose" ADD CONSTRAINT "compose_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "postgres" ADD CONSTRAINT "postgres_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "mariadb" ADD CONSTRAINT "mariadb_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "mongo" ADD CONSTRAINT "mongo_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "mysql" ADD CONSTRAINT "mysql_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "postgres" ADD CONSTRAINT "postgres_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "redis" ADD CONSTRAINT "redis_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;
ALTER TABLE "redis" ADD CONSTRAINT "redis_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "compose" ADD CONSTRAINT "compose_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "application" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "postgres" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "mariadb" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "mongo" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "mysql" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "redis" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "compose" DROP COLUMN "projectId";

View File

@@ -1,23 +0,0 @@
ALTER TABLE "application" DROP CONSTRAINT "application_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "compose" DROP CONSTRAINT "compose_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "mariadb" DROP CONSTRAINT "mariadb_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "mongo" DROP CONSTRAINT "mongo_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "mysql" DROP CONSTRAINT "mysql_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "postgres" DROP CONSTRAINT "postgres_projectId_project_projectId_fk";
--> statement-breakpoint
ALTER TABLE "redis" DROP CONSTRAINT "redis_projectId_project_projectId_fk";
--> statement-breakpoint
-- ALTER TABLE "mysql" ADD COLUMN "environmentId" text NOT NULL;--> statement-breakpoint
-- ALTER TABLE "mysql" ADD CONSTRAINT "mysql_environmentId_environment_environmentId_fk" FOREIGN KEY ("environmentId") REFERENCES "public"."environment"("environmentId") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "application" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "compose" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "mariadb" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "mongo" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "mysql" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "postgres" DROP COLUMN "projectId";--> statement-breakpoint
ALTER TABLE "redis" DROP COLUMN "projectId";

View File

@@ -1,5 +1,5 @@
{
"id": "7d12191c-c00e-498a-b3c3-9b979fa65aee",
"id": "9b77fa3f-52d5-4488-930b-1d7ef304af19",
"prevId": "5568024c-5daa-4554-a224-8a005a53f97c",
"version": "7",
"dialect": "postgresql",
@@ -1303,8 +1303,8 @@
"primaryKey": false,
"notNull": false
},
"projectId": {
"name": "projectId",
"environmentId": {
"name": "environmentId",
"type": "text",
"primaryKey": false,
"notNull": true
@@ -1368,15 +1368,15 @@
"onDelete": "set null",
"onUpdate": "no action"
},
"application_projectId_project_projectId_fk": {
"name": "application_projectId_project_projectId_fk",
"application_environmentId_environment_environmentId_fk": {
"name": "application_environmentId_environment_environmentId_fk",
"tableFrom": "application",
"tableTo": "project",
"tableTo": "environment",
"columnsFrom": [
"projectId"
"environmentId"
],
"columnsTo": [
"projectId"
"environmentId"
],
"onDelete": "cascade",
"onUpdate": "no action"
@@ -2074,8 +2074,8 @@
"notNull": true,
"default": "'idle'"
},
"projectId": {
"name": "projectId",
"environmentId": {
"name": "environmentId",
"type": "text",
"primaryKey": false,
"notNull": true
@@ -2138,15 +2138,15 @@
"onDelete": "set null",
"onUpdate": "no action"
},
"compose_projectId_project_projectId_fk": {
"name": "compose_projectId_project_projectId_fk",
"compose_environmentId_environment_environmentId_fk": {
"name": "compose_environmentId_environment_environmentId_fk",
"tableFrom": "compose",
"tableTo": "project",
"tableTo": "environment",
"columnsFrom": [
"projectId"
"environmentId"
],
"columnsTo": [
"projectId"
"environmentId"
],
"onDelete": "cascade",
"onUpdate": "no action"
@@ -3272,8 +3272,8 @@
"primaryKey": false,
"notNull": true
},
"projectId": {
"name": "projectId",
"environmentId": {
"name": "environmentId",
"type": "text",
"primaryKey": false,
"notNull": true
@@ -3287,15 +3287,15 @@
},
"indexes": {},
"foreignKeys": {
"mariadb_projectId_project_projectId_fk": {
"name": "mariadb_projectId_project_projectId_fk",
"mariadb_environmentId_environment_environmentId_fk": {
"name": "mariadb_environmentId_environment_environmentId_fk",
"tableFrom": "mariadb",
"tableTo": "project",
"tableTo": "environment",
"columnsFrom": [
"projectId"
"environmentId"
],
"columnsTo": [
"projectId"
"environmentId"
],
"onDelete": "cascade",
"onUpdate": "no action"
@@ -3485,8 +3485,8 @@
"primaryKey": false,
"notNull": true
},
"projectId": {
"name": "projectId",
"environmentId": {
"name": "environmentId",
"type": "text",
"primaryKey": false,
"notNull": true
@@ -3507,15 +3507,15 @@
},
"indexes": {},
"foreignKeys": {
"mongo_projectId_project_projectId_fk": {
"name": "mongo_projectId_project_projectId_fk",
"mongo_environmentId_environment_environmentId_fk": {
"name": "mongo_environmentId_environment_environmentId_fk",
"tableFrom": "mongo",
"tableTo": "project",
"tableTo": "environment",
"columnsFrom": [
"projectId"
"environmentId"
],
"columnsTo": [
"projectId"
"environmentId"
],
"onDelete": "cascade",
"onUpdate": "no action"
@@ -3915,8 +3915,8 @@
"primaryKey": false,
"notNull": true
},
"projectId": {
"name": "projectId",
"environmentId": {
"name": "environmentId",
"type": "text",
"primaryKey": false,
"notNull": true
@@ -3930,15 +3930,15 @@
},
"indexes": {},
"foreignKeys": {
"mysql_projectId_project_projectId_fk": {
"name": "mysql_projectId_project_projectId_fk",
"mysql_environmentId_environment_environmentId_fk": {
"name": "mysql_environmentId_environment_environmentId_fk",
"tableFrom": "mysql",
"tableTo": "project",
"tableTo": "environment",
"columnsFrom": [
"projectId"
"environmentId"
],
"columnsTo": [
"projectId"
"environmentId"
],
"onDelete": "cascade",
"onUpdate": "no action"
@@ -4593,8 +4593,8 @@
"primaryKey": false,
"notNull": true
},
"projectId": {
"name": "projectId",
"environmentId": {
"name": "environmentId",
"type": "text",
"primaryKey": false,
"notNull": true
@@ -4608,15 +4608,15 @@
},
"indexes": {},
"foreignKeys": {
"postgres_projectId_project_projectId_fk": {
"name": "postgres_projectId_project_projectId_fk",
"postgres_environmentId_environment_environmentId_fk": {
"name": "postgres_environmentId_environment_environmentId_fk",
"tableFrom": "postgres",
"tableTo": "project",
"tableTo": "environment",
"columnsFrom": [
"projectId"
"environmentId"
],
"columnsTo": [
"projectId"
"environmentId"
],
"onDelete": "cascade",
"onUpdate": "no action"
@@ -5062,8 +5062,8 @@
"notNull": true,
"default": 1
},
"projectId": {
"name": "projectId",
"environmentId": {
"name": "environmentId",
"type": "text",
"primaryKey": false,
"notNull": true
@@ -5077,15 +5077,15 @@
},
"indexes": {},
"foreignKeys": {
"redis_projectId_project_projectId_fk": {
"name": "redis_projectId_project_projectId_fk",
"redis_environmentId_environment_environmentId_fk": {
"name": "redis_environmentId_environment_environmentId_fk",
"tableFrom": "redis",
"tableTo": "project",
"tableTo": "environment",
"columnsFrom": [
"projectId"
"environmentId"
],
"columnsTo": [
"projectId"
"environmentId"
],
"onDelete": "cascade",
"onUpdate": "no action"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -754,22 +754,8 @@
{
"idx": 107,
"version": "7",
"when": 1756766249772,
"tag": "0107_charming_chimera",
"breakpoints": true
},
{
"idx": 108,
"version": "7",
"when": 1756767917601,
"tag": "0108_keen_doctor_faustus",
"breakpoints": true
},
{
"idx": 109,
"version": "7",
"when": 1756772290701,
"tag": "0109_clammy_kabuki",
"when": 1756793713380,
"tag": "0107_loud_kang",
"breakpoints": true
}
]