mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
refactor: consolidate database migration and clean up legacy user tables
This commit is contained in:
parent
725bd1a381
commit
63638bde33
@ -134,3 +134,513 @@ ALTER TABLE "member" ADD CONSTRAINT "member_organization_id_organization_id_fk"
|
|||||||
ALTER TABLE "member" ADD CONSTRAINT "member_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
ALTER TABLE "member" ADD CONSTRAINT "member_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
||||||
ALTER TABLE "organization" ADD CONSTRAINT "organization_owner_id_user_temp_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."user_temp"("id") ON DELETE no action ON UPDATE no action;
|
ALTER TABLE "organization" ADD CONSTRAINT "organization_owner_id_user_temp_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."user_temp"("id") ON DELETE no action ON UPDATE no action;
|
||||||
ALTER TABLE "two_factor" ADD CONSTRAINT "two_factor_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
ALTER TABLE "two_factor" ADD CONSTRAINT "two_factor_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Data Migration
|
||||||
|
|
||||||
|
-- Custom SQL migration file, put your code below! --
|
||||||
|
|
||||||
|
WITH inserted_users AS (
|
||||||
|
-- Insertar usuarios desde admins
|
||||||
|
INSERT INTO user_temp (
|
||||||
|
id,
|
||||||
|
email,
|
||||||
|
token,
|
||||||
|
"email_verified",
|
||||||
|
"updated_at",
|
||||||
|
"serverIp",
|
||||||
|
image,
|
||||||
|
"certificateType",
|
||||||
|
host,
|
||||||
|
"letsEncryptEmail",
|
||||||
|
"sshPrivateKey",
|
||||||
|
"enableDockerCleanup",
|
||||||
|
"enableLogRotation",
|
||||||
|
"enablePaidFeatures",
|
||||||
|
"metricsConfig",
|
||||||
|
"cleanupCacheApplications",
|
||||||
|
"cleanupCacheOnPreviews",
|
||||||
|
"cleanupCacheOnCompose",
|
||||||
|
"stripeCustomerId",
|
||||||
|
"stripeSubscriptionId",
|
||||||
|
"serversQuantity",
|
||||||
|
"expirationDate",
|
||||||
|
"createdAt",
|
||||||
|
"isRegistered"
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
a."adminId",
|
||||||
|
auth.email,
|
||||||
|
COALESCE(auth.token, ''),
|
||||||
|
true,
|
||||||
|
CURRENT_TIMESTAMP,
|
||||||
|
a."serverIp",
|
||||||
|
auth.image,
|
||||||
|
a."certificateType",
|
||||||
|
a.host,
|
||||||
|
a."letsEncryptEmail",
|
||||||
|
a."sshPrivateKey",
|
||||||
|
a."enableDockerCleanup",
|
||||||
|
a."enableLogRotation",
|
||||||
|
a."enablePaidFeatures",
|
||||||
|
a."metricsConfig",
|
||||||
|
a."cleanupCacheApplications",
|
||||||
|
a."cleanupCacheOnPreviews",
|
||||||
|
a."cleanupCacheOnCompose",
|
||||||
|
a."stripeCustomerId",
|
||||||
|
a."stripeSubscriptionId",
|
||||||
|
a."serversQuantity",
|
||||||
|
NOW() + INTERVAL '1 year',
|
||||||
|
NOW(),
|
||||||
|
true
|
||||||
|
FROM admin a
|
||||||
|
JOIN auth ON auth.id = a."authId"
|
||||||
|
RETURNING *
|
||||||
|
),
|
||||||
|
inserted_accounts AS (
|
||||||
|
-- Insertar cuentas para los admins
|
||||||
|
INSERT INTO account (
|
||||||
|
id,
|
||||||
|
"account_id",
|
||||||
|
"provider_id",
|
||||||
|
"user_id",
|
||||||
|
password,
|
||||||
|
"created_at",
|
||||||
|
"updated_at"
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
gen_random_uuid(),
|
||||||
|
gen_random_uuid(),
|
||||||
|
'credential',
|
||||||
|
a."adminId",
|
||||||
|
auth.password,
|
||||||
|
NOW(),
|
||||||
|
NOW()
|
||||||
|
FROM admin a
|
||||||
|
JOIN auth ON auth.id = a."authId"
|
||||||
|
RETURNING *
|
||||||
|
),
|
||||||
|
inserted_orgs AS (
|
||||||
|
-- Crear organizaciones para cada admin
|
||||||
|
INSERT INTO organization (
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
slug,
|
||||||
|
"owner_id",
|
||||||
|
"created_at"
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
gen_random_uuid(),
|
||||||
|
'My Organization',
|
||||||
|
-- Generamos un slug único usando una función de hash
|
||||||
|
encode(sha256((a."adminId" || CURRENT_TIMESTAMP)::bytea), 'hex'),
|
||||||
|
a."adminId",
|
||||||
|
NOW()
|
||||||
|
FROM admin a
|
||||||
|
RETURNING *
|
||||||
|
),
|
||||||
|
inserted_members AS (
|
||||||
|
-- Insertar usuarios miembros
|
||||||
|
INSERT INTO user_temp (
|
||||||
|
id,
|
||||||
|
email,
|
||||||
|
token,
|
||||||
|
"email_verified",
|
||||||
|
"updated_at",
|
||||||
|
image,
|
||||||
|
"createdAt",
|
||||||
|
"expirationDate",
|
||||||
|
"isRegistered"
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
u."userId",
|
||||||
|
auth.email,
|
||||||
|
COALESCE(u.token, ''),
|
||||||
|
true,
|
||||||
|
CURRENT_TIMESTAMP,
|
||||||
|
auth.image,
|
||||||
|
NOW(),
|
||||||
|
NOW() + INTERVAL '1 year',
|
||||||
|
COALESCE(u."isRegistered", false)
|
||||||
|
FROM "user" u
|
||||||
|
JOIN admin a ON u."adminId" = a."adminId"
|
||||||
|
JOIN auth ON auth.id = u."authId"
|
||||||
|
RETURNING *
|
||||||
|
),
|
||||||
|
inserted_member_accounts AS (
|
||||||
|
-- Insertar cuentas para los usuarios miembros
|
||||||
|
INSERT INTO account (
|
||||||
|
id,
|
||||||
|
"account_id",
|
||||||
|
"provider_id",
|
||||||
|
"user_id",
|
||||||
|
password,
|
||||||
|
"created_at",
|
||||||
|
"updated_at"
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
gen_random_uuid(),
|
||||||
|
gen_random_uuid(),
|
||||||
|
'credential',
|
||||||
|
u."userId",
|
||||||
|
auth.password,
|
||||||
|
NOW(),
|
||||||
|
NOW()
|
||||||
|
FROM "user" u
|
||||||
|
JOIN admin a ON u."adminId" = a."adminId"
|
||||||
|
JOIN auth ON auth.id = u."authId"
|
||||||
|
RETURNING *
|
||||||
|
),
|
||||||
|
inserted_admin_members AS (
|
||||||
|
-- Insertar miembros en las organizaciones (admins como owners)
|
||||||
|
INSERT INTO member (
|
||||||
|
id,
|
||||||
|
"organization_id",
|
||||||
|
"user_id",
|
||||||
|
role,
|
||||||
|
"created_at",
|
||||||
|
"canAccessToAPI",
|
||||||
|
"canAccessToDocker",
|
||||||
|
"canAccessToGitProviders",
|
||||||
|
"canAccessToSSHKeys",
|
||||||
|
"canAccessToTraefikFiles",
|
||||||
|
"canCreateProjects",
|
||||||
|
"canCreateServices",
|
||||||
|
"canDeleteProjects",
|
||||||
|
"canDeleteServices",
|
||||||
|
"accesedProjects",
|
||||||
|
"accesedServices"
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
gen_random_uuid(),
|
||||||
|
o.id,
|
||||||
|
a."adminId",
|
||||||
|
'owner',
|
||||||
|
NOW(),
|
||||||
|
true, -- Los admins tienen todos los permisos por defecto
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
'{}',
|
||||||
|
'{}'
|
||||||
|
FROM admin a
|
||||||
|
JOIN inserted_orgs o ON o."owner_id" = a."adminId"
|
||||||
|
RETURNING *
|
||||||
|
)
|
||||||
|
-- Insertar miembros regulares en las organizaciones
|
||||||
|
INSERT INTO member (
|
||||||
|
id,
|
||||||
|
"organization_id",
|
||||||
|
"user_id",
|
||||||
|
role,
|
||||||
|
"created_at",
|
||||||
|
"canAccessToAPI",
|
||||||
|
"canAccessToDocker",
|
||||||
|
"canAccessToGitProviders",
|
||||||
|
"canAccessToSSHKeys",
|
||||||
|
"canAccessToTraefikFiles",
|
||||||
|
"canCreateProjects",
|
||||||
|
"canCreateServices",
|
||||||
|
"canDeleteProjects",
|
||||||
|
"canDeleteServices",
|
||||||
|
"accesedProjects",
|
||||||
|
"accesedServices"
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
gen_random_uuid(),
|
||||||
|
o.id,
|
||||||
|
u."userId",
|
||||||
|
'member',
|
||||||
|
NOW(),
|
||||||
|
COALESCE(u."canAccessToAPI", false),
|
||||||
|
COALESCE(u."canAccessToDocker", false),
|
||||||
|
COALESCE(u."canAccessToGitProviders", false),
|
||||||
|
COALESCE(u."canAccessToSSHKeys", false),
|
||||||
|
COALESCE(u."canAccessToTraefikFiles", false),
|
||||||
|
COALESCE(u."canCreateProjects", false),
|
||||||
|
COALESCE(u."canCreateServices", false),
|
||||||
|
COALESCE(u."canDeleteProjects", false),
|
||||||
|
COALESCE(u."canDeleteServices", false),
|
||||||
|
COALESCE(u."accesedProjects", '{}'),
|
||||||
|
COALESCE(u."accesedServices", '{}')
|
||||||
|
FROM "user" u
|
||||||
|
JOIN admin a ON u."adminId" = a."adminId"
|
||||||
|
JOIN inserted_orgs o ON o."owner_id" = a."adminId";
|
||||||
|
|
||||||
|
-- Migration tables foreign keys
|
||||||
|
|
||||||
|
ALTER TABLE "project" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "destination" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "certificate" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "registry" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "notification" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "ssh-key" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "git_provider" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "server" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "project" DROP CONSTRAINT "project_adminId_admin_adminId_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "destination" DROP CONSTRAINT "destination_adminId_admin_adminId_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "certificate" DROP CONSTRAINT "certificate_adminId_admin_adminId_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "registry" DROP CONSTRAINT "registry_adminId_admin_adminId_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "notification" DROP CONSTRAINT "notification_adminId_admin_adminId_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "ssh-key" DROP CONSTRAINT "ssh-key_adminId_admin_adminId_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "git_provider" DROP CONSTRAINT "git_provider_adminId_admin_adminId_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "server" DROP CONSTRAINT "server_adminId_admin_adminId_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "project" ADD CONSTRAINT "project_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "destination" ADD CONSTRAINT "destination_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "certificate" ADD CONSTRAINT "certificate_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "registry" ADD CONSTRAINT "registry_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "notification" ADD CONSTRAINT "notification_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "ssh-key" ADD CONSTRAINT "ssh-key_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "git_provider" ADD CONSTRAINT "git_provider_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "server" ADD CONSTRAINT "server_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE "user_temp" ALTER COLUMN "token" SET DEFAULT '';--> statement-breakpoint
|
||||||
|
ALTER TABLE "user_temp" ADD COLUMN "created_at" timestamp DEFAULT now();
|
||||||
|
|
||||||
|
|
||||||
|
-- Add properties
|
||||||
|
|
||||||
|
ALTER TABLE "project" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "destination" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "certificate" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "registry" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "notification" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "ssh-key" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "git_provider" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "server" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "project" ADD CONSTRAINT "project_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "destination" ADD CONSTRAINT "destination_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "certificate" ADD CONSTRAINT "certificate_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "registry" ADD CONSTRAINT "registry_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "notification" ADD CONSTRAINT "notification_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "ssh-key" ADD CONSTRAINT "ssh-key_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "git_provider" ADD CONSTRAINT "git_provider_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "server" ADD CONSTRAINT "server_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
|
||||||
|
|
||||||
|
-- Update tables to use organizationId
|
||||||
|
|
||||||
|
-- Custom SQL migration file
|
||||||
|
|
||||||
|
-- Actualizar projects
|
||||||
|
UPDATE "project" p
|
||||||
|
SET "organizationId" = (
|
||||||
|
SELECT m."organization_id"
|
||||||
|
FROM "member" m
|
||||||
|
WHERE m."user_id" = p."userId"
|
||||||
|
AND m."role" = 'owner'
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHERE p."organizationId" IS NULL;
|
||||||
|
|
||||||
|
-- Actualizar servers
|
||||||
|
UPDATE "server" s
|
||||||
|
SET "organizationId" = (
|
||||||
|
SELECT m."organization_id"
|
||||||
|
FROM "member" m
|
||||||
|
WHERE m."user_id" = s."userId"
|
||||||
|
AND m."role" = 'owner'
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHERE s."organizationId" IS NULL;
|
||||||
|
|
||||||
|
-- Actualizar ssh-keys
|
||||||
|
UPDATE "ssh-key" k
|
||||||
|
SET "organizationId" = (
|
||||||
|
SELECT m."organization_id"
|
||||||
|
FROM "member" m
|
||||||
|
WHERE m."user_id" = k."userId"
|
||||||
|
AND m."role" = 'owner'
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHERE k."organizationId" IS NULL;
|
||||||
|
|
||||||
|
-- Actualizar destinations
|
||||||
|
UPDATE "destination" d
|
||||||
|
SET "organizationId" = (
|
||||||
|
SELECT m."organization_id"
|
||||||
|
FROM "member" m
|
||||||
|
WHERE m."user_id" = d."userId"
|
||||||
|
AND m."role" = 'owner'
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHERE d."organizationId" IS NULL;
|
||||||
|
|
||||||
|
-- Actualizar registry
|
||||||
|
UPDATE "registry" r
|
||||||
|
SET "organizationId" = (
|
||||||
|
SELECT m."organization_id"
|
||||||
|
FROM "member" m
|
||||||
|
WHERE m."user_id" = r."userId"
|
||||||
|
AND m."role" = 'owner'
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHERE r."organizationId" IS NULL;
|
||||||
|
|
||||||
|
-- Actualizar notifications
|
||||||
|
UPDATE "notification" n
|
||||||
|
SET "organizationId" = (
|
||||||
|
SELECT m."organization_id"
|
||||||
|
FROM "member" m
|
||||||
|
WHERE m."user_id" = n."userId"
|
||||||
|
AND m."role" = 'owner'
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHERE n."organizationId" IS NULL;
|
||||||
|
|
||||||
|
-- Actualizar certificates
|
||||||
|
UPDATE "certificate" c
|
||||||
|
SET "organizationId" = (
|
||||||
|
SELECT m."organization_id"
|
||||||
|
FROM "member" m
|
||||||
|
WHERE m."user_id" = c."userId"
|
||||||
|
AND m."role" = 'owner'
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHERE c."organizationId" IS NULL;
|
||||||
|
|
||||||
|
-- Actualizar git_provider
|
||||||
|
UPDATE "git_provider" g
|
||||||
|
SET "organizationId" = (
|
||||||
|
SELECT m."organization_id"
|
||||||
|
FROM "member" m
|
||||||
|
WHERE m."user_id" = g."userId"
|
||||||
|
AND m."role" = 'owner'
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHERE g."organizationId" IS NULL;
|
||||||
|
|
||||||
|
-- Verificar que todos los recursos tengan una organización
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
IF EXISTS (
|
||||||
|
SELECT 1 FROM "project" WHERE "organizationId" IS NULL
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 FROM "server" WHERE "organizationId" IS NULL
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 FROM "ssh-key" WHERE "organizationId" IS NULL
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 FROM "destination" WHERE "organizationId" IS NULL
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 FROM "registry" WHERE "organizationId" IS NULL
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 FROM "notification" WHERE "organizationId" IS NULL
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 FROM "certificate" WHERE "organizationId" IS NULL
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 FROM "git_provider" WHERE "organizationId" IS NULL
|
||||||
|
) THEN
|
||||||
|
RAISE EXCEPTION 'Hay recursos sin organización asignada';
|
||||||
|
END IF;
|
||||||
|
END $$;
|
||||||
|
|
||||||
|
-- Hacer organization_id NOT NULL en todas las tablas
|
||||||
|
ALTER TABLE "project" ALTER COLUMN "organizationId" SET NOT NULL;
|
||||||
|
ALTER TABLE "server" ALTER COLUMN "organizationId" SET NOT NULL;
|
||||||
|
ALTER TABLE "ssh-key" ALTER COLUMN "organizationId" SET NOT NULL;
|
||||||
|
ALTER TABLE "destination" ALTER COLUMN "organizationId" SET NOT NULL;
|
||||||
|
ALTER TABLE "registry" ALTER COLUMN "organizationId" SET NOT NULL;
|
||||||
|
ALTER TABLE "notification" ALTER COLUMN "organizationId" SET NOT NULL;
|
||||||
|
ALTER TABLE "certificate" ALTER COLUMN "organizationId" SET NOT NULL;
|
||||||
|
ALTER TABLE "git_provider" ALTER COLUMN "organizationId" SET NOT NULL;
|
||||||
|
|
||||||
|
-- Crear índices para mejorar el rendimiento de búsquedas por organización
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_project_organization" ON "project" ("organizationId");
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_server_organization" ON "server" ("organizationId");
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_sshkey_organization" ON "ssh-key" ("organizationId");
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_destination_organization" ON "destination" ("organizationId");
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_registry_organization" ON "registry" ("organizationId");
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_notification_organization" ON "notification" ("organizationId");
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_certificate_organization" ON "certificate" ("organizationId");
|
||||||
|
CREATE INDEX IF NOT EXISTS "idx_git_provider_organization" ON "git_provider" ("organizationId");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Botar tablas de migración
|
||||||
|
ALTER TABLE "project" DROP CONSTRAINT "project_userId_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "destination" DROP CONSTRAINT "destination_userId_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "certificate" DROP CONSTRAINT "certificate_userId_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "registry" DROP CONSTRAINT "registry_userId_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "notification" DROP CONSTRAINT "notification_userId_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "ssh-key" DROP CONSTRAINT "ssh-key_userId_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "git_provider" DROP CONSTRAINT "git_provider_userId_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "server" DROP CONSTRAINT "server_userId_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "project" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
||||||
|
ALTER TABLE "destination" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
||||||
|
ALTER TABLE "certificate" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
||||||
|
ALTER TABLE "registry" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
||||||
|
ALTER TABLE "notification" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
||||||
|
ALTER TABLE "ssh-key" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
||||||
|
ALTER TABLE "git_provider" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
||||||
|
ALTER TABLE "server" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
||||||
|
ALTER TABLE "project" DROP COLUMN "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "destination" DROP COLUMN "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "certificate" DROP COLUMN "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "registry" DROP COLUMN "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "notification" DROP COLUMN "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "ssh-key" DROP COLUMN "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "git_provider" DROP COLUMN "userId";--> statement-breakpoint
|
||||||
|
ALTER TABLE "server" DROP COLUMN "userId";
|
||||||
|
|
||||||
|
-- Drop tables
|
||||||
|
--> statement-breakpoint
|
||||||
|
DROP TABLE "user" CASCADE;--> statement-breakpoint
|
||||||
|
DROP TABLE "admin" CASCADE;--> statement-breakpoint
|
||||||
|
DROP TABLE "auth" CASCADE;--> statement-breakpoint
|
||||||
|
DROP TABLE "session" CASCADE;--> statement-breakpoint
|
||||||
|
DROP TYPE "public"."Roles";
|
||||||
|
|
||||||
|
|
||||||
|
-- Drop tables
|
||||||
|
ALTER TABLE "account" DROP CONSTRAINT "account_user_id_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "invitation" DROP CONSTRAINT "invitation_organization_id_organization_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "invitation" DROP CONSTRAINT "invitation_inviter_id_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "member" DROP CONSTRAINT "member_organization_id_organization_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "member" DROP CONSTRAINT "member_user_id_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "organization" DROP CONSTRAINT "organization_owner_id_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "account" ADD CONSTRAINT "account_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "invitation" ADD CONSTRAINT "invitation_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "invitation" ADD CONSTRAINT "invitation_inviter_id_user_temp_id_fk" FOREIGN KEY ("inviter_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "member" ADD CONSTRAINT "member_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "member" ADD CONSTRAINT "member_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
||||||
|
ALTER TABLE "organization" ADD CONSTRAINT "organization_owner_id_user_temp_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;
|
||||||
|
|
||||||
|
|
||||||
|
-- Update references
|
||||||
|
|
||||||
|
ALTER TABLE "session_temp" DROP CONSTRAINT "session_temp_user_id_user_temp_id_fk";
|
||||||
|
--> statement-breakpoint
|
||||||
|
ALTER TABLE "session_temp" ADD CONSTRAINT "session_temp_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;
|
@ -1,233 +0,0 @@
|
|||||||
-- Custom SQL migration file, put your code below! --
|
|
||||||
|
|
||||||
WITH inserted_users AS (
|
|
||||||
-- Insertar usuarios desde admins
|
|
||||||
INSERT INTO user_temp (
|
|
||||||
id,
|
|
||||||
email,
|
|
||||||
token,
|
|
||||||
"email_verified",
|
|
||||||
"updated_at",
|
|
||||||
"serverIp",
|
|
||||||
image,
|
|
||||||
"certificateType",
|
|
||||||
host,
|
|
||||||
"letsEncryptEmail",
|
|
||||||
"sshPrivateKey",
|
|
||||||
"enableDockerCleanup",
|
|
||||||
"enableLogRotation",
|
|
||||||
"enablePaidFeatures",
|
|
||||||
"metricsConfig",
|
|
||||||
"cleanupCacheApplications",
|
|
||||||
"cleanupCacheOnPreviews",
|
|
||||||
"cleanupCacheOnCompose",
|
|
||||||
"stripeCustomerId",
|
|
||||||
"stripeSubscriptionId",
|
|
||||||
"serversQuantity",
|
|
||||||
"expirationDate",
|
|
||||||
"createdAt",
|
|
||||||
"isRegistered"
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
a."adminId",
|
|
||||||
auth.email,
|
|
||||||
COALESCE(auth.token, ''),
|
|
||||||
true,
|
|
||||||
CURRENT_TIMESTAMP,
|
|
||||||
a."serverIp",
|
|
||||||
auth.image,
|
|
||||||
a."certificateType",
|
|
||||||
a.host,
|
|
||||||
a."letsEncryptEmail",
|
|
||||||
a."sshPrivateKey",
|
|
||||||
a."enableDockerCleanup",
|
|
||||||
a."enableLogRotation",
|
|
||||||
a."enablePaidFeatures",
|
|
||||||
a."metricsConfig",
|
|
||||||
a."cleanupCacheApplications",
|
|
||||||
a."cleanupCacheOnPreviews",
|
|
||||||
a."cleanupCacheOnCompose",
|
|
||||||
a."stripeCustomerId",
|
|
||||||
a."stripeSubscriptionId",
|
|
||||||
a."serversQuantity",
|
|
||||||
NOW() + INTERVAL '1 year',
|
|
||||||
NOW(),
|
|
||||||
true
|
|
||||||
FROM admin a
|
|
||||||
JOIN auth ON auth.id = a."authId"
|
|
||||||
RETURNING *
|
|
||||||
),
|
|
||||||
inserted_accounts AS (
|
|
||||||
-- Insertar cuentas para los admins
|
|
||||||
INSERT INTO account (
|
|
||||||
id,
|
|
||||||
"account_id",
|
|
||||||
"provider_id",
|
|
||||||
"user_id",
|
|
||||||
password,
|
|
||||||
"created_at",
|
|
||||||
"updated_at"
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
gen_random_uuid(),
|
|
||||||
'credential',
|
|
||||||
a."adminId",
|
|
||||||
auth.password,
|
|
||||||
NOW(),
|
|
||||||
NOW()
|
|
||||||
FROM admin a
|
|
||||||
JOIN auth ON auth.id = a."authId"
|
|
||||||
RETURNING *
|
|
||||||
),
|
|
||||||
inserted_orgs AS (
|
|
||||||
-- Crear organizaciones para cada admin
|
|
||||||
INSERT INTO organization (
|
|
||||||
id,
|
|
||||||
name,
|
|
||||||
slug,
|
|
||||||
"owner_id",
|
|
||||||
"created_at"
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
'My Organization',
|
|
||||||
-- Generamos un slug único usando una función de hash
|
|
||||||
encode(sha256((a."adminId" || CURRENT_TIMESTAMP)::bytea), 'hex'),
|
|
||||||
a."adminId",
|
|
||||||
NOW()
|
|
||||||
FROM admin a
|
|
||||||
RETURNING *
|
|
||||||
),
|
|
||||||
inserted_members AS (
|
|
||||||
-- Insertar usuarios miembros
|
|
||||||
INSERT INTO user_temp (
|
|
||||||
id,
|
|
||||||
email,
|
|
||||||
token,
|
|
||||||
"email_verified",
|
|
||||||
"updated_at",
|
|
||||||
image,
|
|
||||||
"createdAt",
|
|
||||||
"expirationDate",
|
|
||||||
"isRegistered"
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
u."userId",
|
|
||||||
auth.email,
|
|
||||||
COALESCE(u.token, ''),
|
|
||||||
true,
|
|
||||||
CURRENT_TIMESTAMP,
|
|
||||||
auth.image,
|
|
||||||
NOW(),
|
|
||||||
NOW() + INTERVAL '1 year',
|
|
||||||
COALESCE(u."isRegistered", false)
|
|
||||||
FROM "user" u
|
|
||||||
JOIN admin a ON u."adminId" = a."adminId"
|
|
||||||
JOIN auth ON auth.id = u."authId"
|
|
||||||
RETURNING *
|
|
||||||
),
|
|
||||||
inserted_member_accounts AS (
|
|
||||||
-- Insertar cuentas para los usuarios miembros
|
|
||||||
INSERT INTO account (
|
|
||||||
id,
|
|
||||||
"account_id",
|
|
||||||
"provider_id",
|
|
||||||
"user_id",
|
|
||||||
password,
|
|
||||||
"created_at",
|
|
||||||
"updated_at"
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
gen_random_uuid(),
|
|
||||||
'credential',
|
|
||||||
u."userId",
|
|
||||||
auth.password,
|
|
||||||
NOW(),
|
|
||||||
NOW()
|
|
||||||
FROM "user" u
|
|
||||||
JOIN admin a ON u."adminId" = a."adminId"
|
|
||||||
JOIN auth ON auth.id = u."authId"
|
|
||||||
RETURNING *
|
|
||||||
),
|
|
||||||
inserted_admin_members AS (
|
|
||||||
-- Insertar miembros en las organizaciones (admins como owners)
|
|
||||||
INSERT INTO member (
|
|
||||||
id,
|
|
||||||
"organization_id",
|
|
||||||
"user_id",
|
|
||||||
role,
|
|
||||||
"created_at",
|
|
||||||
"canAccessToAPI",
|
|
||||||
"canAccessToDocker",
|
|
||||||
"canAccessToGitProviders",
|
|
||||||
"canAccessToSSHKeys",
|
|
||||||
"canAccessToTraefikFiles",
|
|
||||||
"canCreateProjects",
|
|
||||||
"canCreateServices",
|
|
||||||
"canDeleteProjects",
|
|
||||||
"canDeleteServices",
|
|
||||||
"accesedProjects",
|
|
||||||
"accesedServices"
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
o.id,
|
|
||||||
a."adminId",
|
|
||||||
'owner',
|
|
||||||
NOW(),
|
|
||||||
true, -- Los admins tienen todos los permisos por defecto
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
'{}',
|
|
||||||
'{}'
|
|
||||||
FROM admin a
|
|
||||||
JOIN inserted_orgs o ON o."owner_id" = a."adminId"
|
|
||||||
RETURNING *
|
|
||||||
)
|
|
||||||
-- Insertar miembros regulares en las organizaciones
|
|
||||||
INSERT INTO member (
|
|
||||||
id,
|
|
||||||
"organization_id",
|
|
||||||
"user_id",
|
|
||||||
role,
|
|
||||||
"created_at",
|
|
||||||
"canAccessToAPI",
|
|
||||||
"canAccessToDocker",
|
|
||||||
"canAccessToGitProviders",
|
|
||||||
"canAccessToSSHKeys",
|
|
||||||
"canAccessToTraefikFiles",
|
|
||||||
"canCreateProjects",
|
|
||||||
"canCreateServices",
|
|
||||||
"canDeleteProjects",
|
|
||||||
"canDeleteServices",
|
|
||||||
"accesedProjects",
|
|
||||||
"accesedServices"
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
o.id,
|
|
||||||
u."userId",
|
|
||||||
'member',
|
|
||||||
NOW(),
|
|
||||||
COALESCE(u."canAccessToAPI", false),
|
|
||||||
COALESCE(u."canAccessToDocker", false),
|
|
||||||
COALESCE(u."canAccessToGitProviders", false),
|
|
||||||
COALESCE(u."canAccessToSSHKeys", false),
|
|
||||||
COALESCE(u."canAccessToTraefikFiles", false),
|
|
||||||
COALESCE(u."canCreateProjects", false),
|
|
||||||
COALESCE(u."canCreateServices", false),
|
|
||||||
COALESCE(u."canDeleteProjects", false),
|
|
||||||
COALESCE(u."canDeleteServices", false),
|
|
||||||
COALESCE(u."accesedProjects", '{}'),
|
|
||||||
COALESCE(u."accesedServices", '{}')
|
|
||||||
FROM "user" u
|
|
||||||
JOIN admin a ON u."adminId" = a."adminId"
|
|
||||||
JOIN inserted_orgs o ON o."owner_id" = a."adminId";
|
|
@ -1,32 +0,0 @@
|
|||||||
ALTER TABLE "project" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "destination" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "certificate" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "registry" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "notification" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "ssh-key" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "git_provider" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "server" RENAME COLUMN "adminId" TO "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "project" DROP CONSTRAINT "project_adminId_admin_adminId_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "destination" DROP CONSTRAINT "destination_adminId_admin_adminId_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "certificate" DROP CONSTRAINT "certificate_adminId_admin_adminId_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "registry" DROP CONSTRAINT "registry_adminId_admin_adminId_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "notification" DROP CONSTRAINT "notification_adminId_admin_adminId_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "ssh-key" DROP CONSTRAINT "ssh-key_adminId_admin_adminId_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "git_provider" DROP CONSTRAINT "git_provider_adminId_admin_adminId_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "server" DROP CONSTRAINT "server_adminId_admin_adminId_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "project" ADD CONSTRAINT "project_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "destination" ADD CONSTRAINT "destination_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "certificate" ADD CONSTRAINT "certificate_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "registry" ADD CONSTRAINT "registry_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "notification" ADD CONSTRAINT "notification_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "ssh-key" ADD CONSTRAINT "ssh-key_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "git_provider" ADD CONSTRAINT "git_provider_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "server" ADD CONSTRAINT "server_userId_user_temp_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;
|
|
@ -1,2 +0,0 @@
|
|||||||
ALTER TABLE "user_temp" ALTER COLUMN "token" SET DEFAULT '';--> statement-breakpoint
|
|
||||||
ALTER TABLE "user_temp" ADD COLUMN "created_at" timestamp DEFAULT now();
|
|
@ -1,16 +0,0 @@
|
|||||||
ALTER TABLE "project" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
|
||||||
ALTER TABLE "destination" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
|
||||||
ALTER TABLE "certificate" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
|
||||||
ALTER TABLE "registry" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
|
||||||
ALTER TABLE "notification" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
|
||||||
ALTER TABLE "ssh-key" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
|
||||||
ALTER TABLE "git_provider" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
|
||||||
ALTER TABLE "server" ADD COLUMN "organizationId" text;--> statement-breakpoint
|
|
||||||
ALTER TABLE "project" ADD CONSTRAINT "project_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "destination" ADD CONSTRAINT "destination_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "certificate" ADD CONSTRAINT "certificate_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "registry" ADD CONSTRAINT "registry_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "notification" ADD CONSTRAINT "notification_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "ssh-key" ADD CONSTRAINT "ssh-key_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "git_provider" ADD CONSTRAINT "git_provider_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "server" ADD CONSTRAINT "server_organizationId_organization_id_fk" FOREIGN KEY ("organizationId") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;
|
|
@ -1,142 +0,0 @@
|
|||||||
-- Custom SQL migration file
|
|
||||||
|
|
||||||
-- Actualizar projects
|
|
||||||
UPDATE "project" p
|
|
||||||
SET "organizationId" = (
|
|
||||||
SELECT m."organization_id"
|
|
||||||
FROM "member" m
|
|
||||||
WHERE m."user_id" = p."userId"
|
|
||||||
AND m."role" = 'owner'
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
WHERE p."organizationId" IS NULL;
|
|
||||||
|
|
||||||
-- Actualizar servers
|
|
||||||
UPDATE "server" s
|
|
||||||
SET "organizationId" = (
|
|
||||||
SELECT m."organization_id"
|
|
||||||
FROM "member" m
|
|
||||||
WHERE m."user_id" = s."userId"
|
|
||||||
AND m."role" = 'owner'
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
WHERE s."organizationId" IS NULL;
|
|
||||||
|
|
||||||
-- Actualizar ssh-keys
|
|
||||||
UPDATE "ssh-key" k
|
|
||||||
SET "organizationId" = (
|
|
||||||
SELECT m."organization_id"
|
|
||||||
FROM "member" m
|
|
||||||
WHERE m."user_id" = k."userId"
|
|
||||||
AND m."role" = 'owner'
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
WHERE k."organizationId" IS NULL;
|
|
||||||
|
|
||||||
-- Actualizar destinations
|
|
||||||
UPDATE "destination" d
|
|
||||||
SET "organizationId" = (
|
|
||||||
SELECT m."organization_id"
|
|
||||||
FROM "member" m
|
|
||||||
WHERE m."user_id" = d."userId"
|
|
||||||
AND m."role" = 'owner'
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
WHERE d."organizationId" IS NULL;
|
|
||||||
|
|
||||||
-- Actualizar registry
|
|
||||||
UPDATE "registry" r
|
|
||||||
SET "organizationId" = (
|
|
||||||
SELECT m."organization_id"
|
|
||||||
FROM "member" m
|
|
||||||
WHERE m."user_id" = r."userId"
|
|
||||||
AND m."role" = 'owner'
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
WHERE r."organizationId" IS NULL;
|
|
||||||
|
|
||||||
-- Actualizar notifications
|
|
||||||
UPDATE "notification" n
|
|
||||||
SET "organizationId" = (
|
|
||||||
SELECT m."organization_id"
|
|
||||||
FROM "member" m
|
|
||||||
WHERE m."user_id" = n."userId"
|
|
||||||
AND m."role" = 'owner'
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
WHERE n."organizationId" IS NULL;
|
|
||||||
|
|
||||||
-- Actualizar certificates
|
|
||||||
UPDATE "certificate" c
|
|
||||||
SET "organizationId" = (
|
|
||||||
SELECT m."organization_id"
|
|
||||||
FROM "member" m
|
|
||||||
WHERE m."user_id" = c."userId"
|
|
||||||
AND m."role" = 'owner'
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
WHERE c."organizationId" IS NULL;
|
|
||||||
|
|
||||||
-- Actualizar git_provider
|
|
||||||
UPDATE "git_provider" g
|
|
||||||
SET "organizationId" = (
|
|
||||||
SELECT m."organization_id"
|
|
||||||
FROM "member" m
|
|
||||||
WHERE m."user_id" = g."userId"
|
|
||||||
AND m."role" = 'owner'
|
|
||||||
LIMIT 1
|
|
||||||
)
|
|
||||||
WHERE g."organizationId" IS NULL;
|
|
||||||
|
|
||||||
-- Verificar que todos los recursos tengan una organización
|
|
||||||
DO $$
|
|
||||||
BEGIN
|
|
||||||
IF EXISTS (
|
|
||||||
SELECT 1 FROM "project" WHERE "organizationId" IS NULL
|
|
||||||
UNION ALL
|
|
||||||
SELECT 1 FROM "server" WHERE "organizationId" IS NULL
|
|
||||||
UNION ALL
|
|
||||||
SELECT 1 FROM "ssh-key" WHERE "organizationId" IS NULL
|
|
||||||
UNION ALL
|
|
||||||
SELECT 1 FROM "destination" WHERE "organizationId" IS NULL
|
|
||||||
UNION ALL
|
|
||||||
SELECT 1 FROM "registry" WHERE "organizationId" IS NULL
|
|
||||||
UNION ALL
|
|
||||||
SELECT 1 FROM "notification" WHERE "organizationId" IS NULL
|
|
||||||
UNION ALL
|
|
||||||
SELECT 1 FROM "certificate" WHERE "organizationId" IS NULL
|
|
||||||
UNION ALL
|
|
||||||
SELECT 1 FROM "git_provider" WHERE "organizationId" IS NULL
|
|
||||||
) THEN
|
|
||||||
RAISE EXCEPTION 'Hay recursos sin organización asignada';
|
|
||||||
END IF;
|
|
||||||
END $$;
|
|
||||||
|
|
||||||
-- Hacer organization_id NOT NULL en todas las tablas
|
|
||||||
ALTER TABLE "project" ALTER COLUMN "organizationId" SET NOT NULL;
|
|
||||||
ALTER TABLE "server" ALTER COLUMN "organizationId" SET NOT NULL;
|
|
||||||
ALTER TABLE "ssh-key" ALTER COLUMN "organizationId" SET NOT NULL;
|
|
||||||
ALTER TABLE "destination" ALTER COLUMN "organizationId" SET NOT NULL;
|
|
||||||
ALTER TABLE "registry" ALTER COLUMN "organizationId" SET NOT NULL;
|
|
||||||
ALTER TABLE "notification" ALTER COLUMN "organizationId" SET NOT NULL;
|
|
||||||
ALTER TABLE "certificate" ALTER COLUMN "organizationId" SET NOT NULL;
|
|
||||||
ALTER TABLE "git_provider" ALTER COLUMN "organizationId" SET NOT NULL;
|
|
||||||
|
|
||||||
-- Crear índices para mejorar el rendimiento de búsquedas por organización
|
|
||||||
CREATE INDEX IF NOT EXISTS "idx_project_organization" ON "project" ("organizationId");
|
|
||||||
CREATE INDEX IF NOT EXISTS "idx_server_organization" ON "server" ("organizationId");
|
|
||||||
CREATE INDEX IF NOT EXISTS "idx_sshkey_organization" ON "ssh-key" ("organizationId");
|
|
||||||
CREATE INDEX IF NOT EXISTS "idx_destination_organization" ON "destination" ("organizationId");
|
|
||||||
CREATE INDEX IF NOT EXISTS "idx_registry_organization" ON "registry" ("organizationId");
|
|
||||||
CREATE INDEX IF NOT EXISTS "idx_notification_organization" ON "notification" ("organizationId");
|
|
||||||
CREATE INDEX IF NOT EXISTS "idx_certificate_organization" ON "certificate" ("organizationId");
|
|
||||||
CREATE INDEX IF NOT EXISTS "idx_git_provider_organization" ON "git_provider" ("organizationId");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
ALTER TABLE "project" DROP CONSTRAINT "project_userId_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "destination" DROP CONSTRAINT "destination_userId_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "certificate" DROP CONSTRAINT "certificate_userId_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "registry" DROP CONSTRAINT "registry_userId_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "notification" DROP CONSTRAINT "notification_userId_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "ssh-key" DROP CONSTRAINT "ssh-key_userId_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "git_provider" DROP CONSTRAINT "git_provider_userId_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "server" DROP CONSTRAINT "server_userId_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "project" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
|
||||||
ALTER TABLE "destination" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
|
||||||
ALTER TABLE "certificate" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
|
||||||
ALTER TABLE "registry" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
|
||||||
ALTER TABLE "notification" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
|
||||||
ALTER TABLE "ssh-key" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
|
||||||
ALTER TABLE "git_provider" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
|
||||||
ALTER TABLE "server" ALTER COLUMN "organizationId" SET NOT NULL;--> statement-breakpoint
|
|
||||||
ALTER TABLE "project" DROP COLUMN "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "destination" DROP COLUMN "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "certificate" DROP COLUMN "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "registry" DROP COLUMN "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "notification" DROP COLUMN "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "ssh-key" DROP COLUMN "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "git_provider" DROP COLUMN "userId";--> statement-breakpoint
|
|
||||||
ALTER TABLE "server" DROP COLUMN "userId";
|
|
@ -1,6 +0,0 @@
|
|||||||
--> statement-breakpoint
|
|
||||||
DROP TABLE "user" CASCADE;--> statement-breakpoint
|
|
||||||
DROP TABLE "admin" CASCADE;--> statement-breakpoint
|
|
||||||
DROP TABLE "auth" CASCADE;--> statement-breakpoint
|
|
||||||
DROP TABLE "session" CASCADE;--> statement-breakpoint
|
|
||||||
DROP TYPE "public"."Roles";
|
|
@ -1,18 +0,0 @@
|
|||||||
ALTER TABLE "account" DROP CONSTRAINT "account_user_id_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "invitation" DROP CONSTRAINT "invitation_organization_id_organization_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "invitation" DROP CONSTRAINT "invitation_inviter_id_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "member" DROP CONSTRAINT "member_organization_id_organization_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "member" DROP CONSTRAINT "member_user_id_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "organization" DROP CONSTRAINT "organization_owner_id_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "account" ADD CONSTRAINT "account_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "invitation" ADD CONSTRAINT "invitation_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "invitation" ADD CONSTRAINT "invitation_inviter_id_user_temp_id_fk" FOREIGN KEY ("inviter_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "member" ADD CONSTRAINT "member_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "member" ADD CONSTRAINT "member_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "organization" ADD CONSTRAINT "organization_owner_id_user_temp_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;
|
|
@ -1,3 +0,0 @@
|
|||||||
ALTER TABLE "session_temp" DROP CONSTRAINT "session_temp_user_id_user_temp_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session_temp" ADD CONSTRAINT "session_temp_user_id_user_temp_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user_temp"("id") ON DELETE cascade ON UPDATE no action;
|
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"id": "67140673-fcd1-4c33-8dd1-bb7a34bdae23",
|
"id": "c5e17a87-0aa3-4178-be24-cfa7cde0f75d",
|
||||||
"prevId": "1240ec96-1751-4de3-b64f-cef9cb716786",
|
"prevId": "9cb79f1e-14c2-4deb-b1ab-a1d038f72356",
|
||||||
"version": "7",
|
"version": "7",
|
||||||
"dialect": "postgresql",
|
"dialect": "postgresql",
|
||||||
"tables": {
|
"tables": {
|
||||||
@ -731,166 +731,6 @@
|
|||||||
"checkConstraints": {},
|
"checkConstraints": {},
|
||||||
"isRLSEnabled": false
|
"isRLSEnabled": false
|
||||||
},
|
},
|
||||||
"public.user": {
|
|
||||||
"name": "user",
|
|
||||||
"schema": "",
|
|
||||||
"columns": {
|
|
||||||
"userId": {
|
|
||||||
"name": "userId",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": true,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"token": {
|
|
||||||
"name": "token",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"isRegistered": {
|
|
||||||
"name": "isRegistered",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"expirationDate": {
|
|
||||||
"name": "expirationDate",
|
|
||||||
"type": "timestamp(3)",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"createdAt": {
|
|
||||||
"name": "createdAt",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"canCreateProjects": {
|
|
||||||
"name": "canCreateProjects",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"canAccessToSSHKeys": {
|
|
||||||
"name": "canAccessToSSHKeys",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"canCreateServices": {
|
|
||||||
"name": "canCreateServices",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"canDeleteProjects": {
|
|
||||||
"name": "canDeleteProjects",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"canDeleteServices": {
|
|
||||||
"name": "canDeleteServices",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"canAccessToDocker": {
|
|
||||||
"name": "canAccessToDocker",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"canAccessToAPI": {
|
|
||||||
"name": "canAccessToAPI",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"canAccessToGitProviders": {
|
|
||||||
"name": "canAccessToGitProviders",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"canAccessToTraefikFiles": {
|
|
||||||
"name": "canAccessToTraefikFiles",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"accesedProjects": {
|
|
||||||
"name": "accesedProjects",
|
|
||||||
"type": "text[]",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": "ARRAY[]::text[]"
|
|
||||||
},
|
|
||||||
"accesedServices": {
|
|
||||||
"name": "accesedServices",
|
|
||||||
"type": "text[]",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": "ARRAY[]::text[]"
|
|
||||||
},
|
|
||||||
"adminId": {
|
|
||||||
"name": "adminId",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"authId": {
|
|
||||||
"name": "authId",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"indexes": {},
|
|
||||||
"foreignKeys": {
|
|
||||||
"user_adminId_admin_adminId_fk": {
|
|
||||||
"name": "user_adminId_admin_adminId_fk",
|
|
||||||
"tableFrom": "user",
|
|
||||||
"tableTo": "admin",
|
|
||||||
"columnsFrom": [
|
|
||||||
"adminId"
|
|
||||||
],
|
|
||||||
"columnsTo": [
|
|
||||||
"adminId"
|
|
||||||
],
|
|
||||||
"onDelete": "cascade",
|
|
||||||
"onUpdate": "no action"
|
|
||||||
},
|
|
||||||
"user_authId_auth_id_fk": {
|
|
||||||
"name": "user_authId_auth_id_fk",
|
|
||||||
"tableFrom": "user",
|
|
||||||
"tableTo": "auth",
|
|
||||||
"columnsFrom": [
|
|
||||||
"authId"
|
|
||||||
],
|
|
||||||
"columnsTo": [
|
|
||||||
"id"
|
|
||||||
],
|
|
||||||
"onDelete": "cascade",
|
|
||||||
"onUpdate": "no action"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"compositePrimaryKeys": {},
|
|
||||||
"uniqueConstraints": {},
|
|
||||||
"policies": {},
|
|
||||||
"checkConstraints": {},
|
|
||||||
"isRLSEnabled": false
|
|
||||||
},
|
|
||||||
"public.user_temp": {
|
"public.user_temp": {
|
||||||
"name": "user_temp",
|
"name": "user_temp",
|
||||||
"schema": "",
|
"schema": "",
|
||||||
@ -912,7 +752,8 @@
|
|||||||
"name": "token",
|
"name": "token",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true,
|
||||||
|
"default": "''"
|
||||||
},
|
},
|
||||||
"isRegistered": {
|
"isRegistered": {
|
||||||
"name": "isRegistered",
|
"name": "isRegistered",
|
||||||
@ -933,6 +774,13 @@
|
|||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
},
|
},
|
||||||
|
"created_at": {
|
||||||
|
"name": "created_at",
|
||||||
|
"type": "timestamp",
|
||||||
|
"primaryKey": false,
|
||||||
|
"notNull": false,
|
||||||
|
"default": "now()"
|
||||||
|
},
|
||||||
"two_factor_enabled": {
|
"two_factor_enabled": {
|
||||||
"name": "two_factor_enabled",
|
"name": "two_factor_enabled",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
@ -1098,252 +946,6 @@
|
|||||||
"checkConstraints": {},
|
"checkConstraints": {},
|
||||||
"isRLSEnabled": false
|
"isRLSEnabled": false
|
||||||
},
|
},
|
||||||
"public.admin": {
|
|
||||||
"name": "admin",
|
|
||||||
"schema": "",
|
|
||||||
"columns": {
|
|
||||||
"adminId": {
|
|
||||||
"name": "adminId",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": true,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"serverIp": {
|
|
||||||
"name": "serverIp",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"certificateType": {
|
|
||||||
"name": "certificateType",
|
|
||||||
"type": "certificateType",
|
|
||||||
"typeSchema": "public",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": "'none'"
|
|
||||||
},
|
|
||||||
"host": {
|
|
||||||
"name": "host",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"letsEncryptEmail": {
|
|
||||||
"name": "letsEncryptEmail",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"sshPrivateKey": {
|
|
||||||
"name": "sshPrivateKey",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"enableDockerCleanup": {
|
|
||||||
"name": "enableDockerCleanup",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"enableLogRotation": {
|
|
||||||
"name": "enableLogRotation",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"authId": {
|
|
||||||
"name": "authId",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"createdAt": {
|
|
||||||
"name": "createdAt",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"stripeCustomerId": {
|
|
||||||
"name": "stripeCustomerId",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"stripeSubscriptionId": {
|
|
||||||
"name": "stripeSubscriptionId",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"serversQuantity": {
|
|
||||||
"name": "serversQuantity",
|
|
||||||
"type": "integer",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": 0
|
|
||||||
},
|
|
||||||
"enablePaidFeatures": {
|
|
||||||
"name": "enablePaidFeatures",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"metricsConfig": {
|
|
||||||
"name": "metricsConfig",
|
|
||||||
"type": "jsonb",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": "'{\"server\":{\"type\":\"Dokploy\",\"refreshRate\":60,\"port\":4500,\"token\":\"\",\"retentionDays\":2,\"cronJob\":\"\",\"urlCallback\":\"\",\"thresholds\":{\"cpu\":0,\"memory\":0}},\"containers\":{\"refreshRate\":60,\"services\":{\"include\":[],\"exclude\":[]}}}'::jsonb"
|
|
||||||
},
|
|
||||||
"cleanupCacheApplications": {
|
|
||||||
"name": "cleanupCacheApplications",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"cleanupCacheOnPreviews": {
|
|
||||||
"name": "cleanupCacheOnPreviews",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"cleanupCacheOnCompose": {
|
|
||||||
"name": "cleanupCacheOnCompose",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"indexes": {},
|
|
||||||
"foreignKeys": {
|
|
||||||
"admin_authId_auth_id_fk": {
|
|
||||||
"name": "admin_authId_auth_id_fk",
|
|
||||||
"tableFrom": "admin",
|
|
||||||
"tableTo": "auth",
|
|
||||||
"columnsFrom": [
|
|
||||||
"authId"
|
|
||||||
],
|
|
||||||
"columnsTo": [
|
|
||||||
"id"
|
|
||||||
],
|
|
||||||
"onDelete": "cascade",
|
|
||||||
"onUpdate": "no action"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"compositePrimaryKeys": {},
|
|
||||||
"uniqueConstraints": {},
|
|
||||||
"policies": {},
|
|
||||||
"checkConstraints": {},
|
|
||||||
"isRLSEnabled": false
|
|
||||||
},
|
|
||||||
"public.auth": {
|
|
||||||
"name": "auth",
|
|
||||||
"schema": "",
|
|
||||||
"columns": {
|
|
||||||
"id": {
|
|
||||||
"name": "id",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": true,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"name": "email",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"password": {
|
|
||||||
"name": "password",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"rol": {
|
|
||||||
"name": "rol",
|
|
||||||
"type": "Roles",
|
|
||||||
"typeSchema": "public",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"image": {
|
|
||||||
"name": "image",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"secret": {
|
|
||||||
"name": "secret",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"token": {
|
|
||||||
"name": "token",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"is2FAEnabled": {
|
|
||||||
"name": "is2FAEnabled",
|
|
||||||
"type": "boolean",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true,
|
|
||||||
"default": false
|
|
||||||
},
|
|
||||||
"createdAt": {
|
|
||||||
"name": "createdAt",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"resetPasswordToken": {
|
|
||||||
"name": "resetPasswordToken",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"resetPasswordExpiresAt": {
|
|
||||||
"name": "resetPasswordExpiresAt",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"confirmationToken": {
|
|
||||||
"name": "confirmationToken",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
},
|
|
||||||
"confirmationExpiresAt": {
|
|
||||||
"name": "confirmationExpiresAt",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"indexes": {},
|
|
||||||
"foreignKeys": {},
|
|
||||||
"compositePrimaryKeys": {},
|
|
||||||
"uniqueConstraints": {
|
|
||||||
"auth_email_unique": {
|
|
||||||
"name": "auth_email_unique",
|
|
||||||
"nullsNotDistinct": false,
|
|
||||||
"columns": [
|
|
||||||
"email"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"policies": {},
|
|
||||||
"checkConstraints": {},
|
|
||||||
"isRLSEnabled": false
|
|
||||||
},
|
|
||||||
"public.project": {
|
"public.project": {
|
||||||
"name": "project",
|
"name": "project",
|
||||||
"schema": "",
|
"schema": "",
|
||||||
@ -1372,8 +974,8 @@
|
|||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
},
|
},
|
||||||
"adminId": {
|
"organizationId": {
|
||||||
"name": "adminId",
|
"name": "organizationId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
@ -1388,15 +990,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"project_adminId_admin_adminId_fk": {
|
"project_organizationId_organization_id_fk": {
|
||||||
"name": "project_adminId_admin_adminId_fk",
|
"name": "project_organizationId_organization_id_fk",
|
||||||
"tableFrom": "project",
|
"tableFrom": "project",
|
||||||
"tableTo": "admin",
|
"tableTo": "organization",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"adminId"
|
"organizationId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"adminId"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@ -2249,8 +1851,8 @@
|
|||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
},
|
},
|
||||||
"adminId": {
|
"organizationId": {
|
||||||
"name": "adminId",
|
"name": "organizationId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
@ -2258,15 +1860,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"destination_adminId_admin_adminId_fk": {
|
"destination_organizationId_organization_id_fk": {
|
||||||
"name": "destination_adminId_admin_adminId_fk",
|
"name": "destination_organizationId_organization_id_fk",
|
||||||
"tableFrom": "destination",
|
"tableFrom": "destination",
|
||||||
"tableTo": "admin",
|
"tableTo": "organization",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"adminId"
|
"organizationId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"adminId"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@ -2657,8 +2259,8 @@
|
|||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": false
|
"notNull": false
|
||||||
},
|
},
|
||||||
"adminId": {
|
"organizationId": {
|
||||||
"name": "adminId",
|
"name": "organizationId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
@ -2672,15 +2274,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"certificate_adminId_admin_adminId_fk": {
|
"certificate_organizationId_organization_id_fk": {
|
||||||
"name": "certificate_adminId_admin_adminId_fk",
|
"name": "certificate_organizationId_organization_id_fk",
|
||||||
"tableFrom": "certificate",
|
"tableFrom": "certificate",
|
||||||
"tableTo": "admin",
|
"tableTo": "organization",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"adminId"
|
"organizationId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"adminId"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@ -2790,7 +2392,7 @@
|
|||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -2808,51 +2410,6 @@
|
|||||||
"checkConstraints": {},
|
"checkConstraints": {},
|
||||||
"isRLSEnabled": false
|
"isRLSEnabled": false
|
||||||
},
|
},
|
||||||
"public.session": {
|
|
||||||
"name": "session",
|
|
||||||
"schema": "",
|
|
||||||
"columns": {
|
|
||||||
"id": {
|
|
||||||
"name": "id",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": true,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"user_id": {
|
|
||||||
"name": "user_id",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"expires_at": {
|
|
||||||
"name": "expires_at",
|
|
||||||
"type": "timestamp with time zone",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"indexes": {},
|
|
||||||
"foreignKeys": {
|
|
||||||
"session_user_id_auth_id_fk": {
|
|
||||||
"name": "session_user_id_auth_id_fk",
|
|
||||||
"tableFrom": "session",
|
|
||||||
"tableTo": "auth",
|
|
||||||
"columnsFrom": [
|
|
||||||
"user_id"
|
|
||||||
],
|
|
||||||
"columnsTo": [
|
|
||||||
"id"
|
|
||||||
],
|
|
||||||
"onDelete": "cascade",
|
|
||||||
"onUpdate": "no action"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"compositePrimaryKeys": {},
|
|
||||||
"uniqueConstraints": {},
|
|
||||||
"policies": {},
|
|
||||||
"checkConstraints": {},
|
|
||||||
"isRLSEnabled": false
|
|
||||||
},
|
|
||||||
"public.redirect": {
|
"public.redirect": {
|
||||||
"name": "redirect",
|
"name": "redirect",
|
||||||
"schema": "",
|
"schema": "",
|
||||||
@ -3574,8 +3131,8 @@
|
|||||||
"notNull": true,
|
"notNull": true,
|
||||||
"default": "'cloud'"
|
"default": "'cloud'"
|
||||||
},
|
},
|
||||||
"adminId": {
|
"organizationId": {
|
||||||
"name": "adminId",
|
"name": "organizationId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
@ -3583,15 +3140,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"registry_adminId_admin_adminId_fk": {
|
"registry_organizationId_organization_id_fk": {
|
||||||
"name": "registry_adminId_admin_adminId_fk",
|
"name": "registry_organizationId_organization_id_fk",
|
||||||
"tableFrom": "registry",
|
"tableFrom": "registry",
|
||||||
"tableTo": "admin",
|
"tableTo": "organization",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"adminId"
|
"organizationId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"adminId"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@ -3834,8 +3391,8 @@
|
|||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": false
|
"notNull": false
|
||||||
},
|
},
|
||||||
"adminId": {
|
"organizationId": {
|
||||||
"name": "adminId",
|
"name": "organizationId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
@ -3908,15 +3465,15 @@
|
|||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
},
|
},
|
||||||
"notification_adminId_admin_adminId_fk": {
|
"notification_organizationId_organization_id_fk": {
|
||||||
"name": "notification_adminId_admin_adminId_fk",
|
"name": "notification_organizationId_organization_id_fk",
|
||||||
"tableFrom": "notification",
|
"tableFrom": "notification",
|
||||||
"tableTo": "admin",
|
"tableTo": "organization",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"adminId"
|
"organizationId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"adminId"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@ -4037,8 +3594,8 @@
|
|||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": false
|
"notNull": false
|
||||||
},
|
},
|
||||||
"adminId": {
|
"organizationId": {
|
||||||
"name": "adminId",
|
"name": "organizationId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
@ -4046,15 +3603,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"ssh-key_adminId_admin_adminId_fk": {
|
"ssh-key_organizationId_organization_id_fk": {
|
||||||
"name": "ssh-key_adminId_admin_adminId_fk",
|
"name": "ssh-key_organizationId_organization_id_fk",
|
||||||
"tableFrom": "ssh-key",
|
"tableFrom": "ssh-key",
|
||||||
"tableTo": "admin",
|
"tableTo": "organization",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"adminId"
|
"organizationId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"adminId"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@ -4096,8 +3653,8 @@
|
|||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
},
|
},
|
||||||
"adminId": {
|
"organizationId": {
|
||||||
"name": "adminId",
|
"name": "organizationId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
@ -4105,15 +3662,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"git_provider_adminId_admin_adminId_fk": {
|
"git_provider_organizationId_organization_id_fk": {
|
||||||
"name": "git_provider_adminId_admin_adminId_fk",
|
"name": "git_provider_organizationId_organization_id_fk",
|
||||||
"tableFrom": "git_provider",
|
"tableFrom": "git_provider",
|
||||||
"tableTo": "admin",
|
"tableTo": "organization",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"adminId"
|
"organizationId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"adminId"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@ -4411,8 +3968,8 @@
|
|||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
},
|
},
|
||||||
"adminId": {
|
"organizationId": {
|
||||||
"name": "adminId",
|
"name": "organizationId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
@ -4448,15 +4005,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"server_adminId_admin_adminId_fk": {
|
"server_organizationId_organization_id_fk": {
|
||||||
"name": "server_adminId_admin_adminId_fk",
|
"name": "server_organizationId_organization_id_fk",
|
||||||
"tableFrom": "server",
|
"tableFrom": "server",
|
||||||
"tableTo": "admin",
|
"tableTo": "organization",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"adminId"
|
"organizationId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"adminId"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@ -4735,7 +4292,7 @@
|
|||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -4804,7 +4361,7 @@
|
|||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
},
|
},
|
||||||
"invitation_inviter_id_user_temp_id_fk": {
|
"invitation_inviter_id_user_temp_id_fk": {
|
||||||
@ -4817,7 +4374,7 @@
|
|||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -5033,7 +4590,7 @@
|
|||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"id"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -5176,14 +4733,6 @@
|
|||||||
"drop"
|
"drop"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"public.Roles": {
|
|
||||||
"name": "Roles",
|
|
||||||
"schema": "public",
|
|
||||||
"values": [
|
|
||||||
"admin",
|
|
||||||
"user"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"public.domainType": {
|
"public.domainType": {
|
||||||
"name": "domainType",
|
"name": "domainType",
|
||||||
"schema": "public",
|
"schema": "public",
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -470,69 +470,6 @@
|
|||||||
"when": 1739426913392,
|
"when": 1739426913392,
|
||||||
"tag": "0066_yielding_echo",
|
"tag": "0066_yielding_echo",
|
||||||
"breakpoints": true
|
"breakpoints": true
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 67,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1739427057545,
|
|
||||||
"tag": "0067_migrate-data",
|
|
||||||
"breakpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 68,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1739428942964,
|
|
||||||
"tag": "0068_sour_professor_monster",
|
|
||||||
"breakpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 69,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1739664410814,
|
|
||||||
"tag": "0069_broad_ken_ellis",
|
|
||||||
"breakpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 70,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1739671869809,
|
|
||||||
"tag": "0070_nervous_vivisector",
|
|
||||||
"breakpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 71,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1739671878698,
|
|
||||||
"tag": "0071_migrate-data-projects",
|
|
||||||
"breakpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 72,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1739672367223,
|
|
||||||
"tag": "0072_lazy_pixie",
|
|
||||||
"breakpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 73,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1739740193879,
|
|
||||||
"tag": "0073_polite_miss_america",
|
|
||||||
"breakpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 74,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1739773539709,
|
|
||||||
"tag": "0074_lowly_jack_power",
|
|
||||||
"breakpoints": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 75,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1739781534192,
|
|
||||||
"tag": "0075_heavy_metal_master",
|
|
||||||
"breakpoints": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user