mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
refactor: update name
This commit is contained in:
@@ -1,367 +0,0 @@
|
|||||||
-- Primero ejecutar todas las modificaciones estructurales
|
|
||||||
ALTER TABLE "user" RENAME COLUMN "userId" TO "id";
|
|
||||||
--> statement-breakpoint
|
|
||||||
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 "user" DROP CONSTRAINT "user_adminId_admin_adminId_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" DROP CONSTRAINT "user_authId_auth_id_fk";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP CONSTRAINT "admin_authId_auth_id_fk";
|
|
||||||
--> 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 "session" DROP CONSTRAINT "session_user_id_auth_id_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 "user" ALTER COLUMN "expirationDate" SET DATA TYPE text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session" ALTER COLUMN "expires_at" SET DATA TYPE timestamp;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "name" text DEFAULT '' NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "email" text NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "email_verified" boolean NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "image" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "role" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "banned" boolean;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "ban_reason" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "ban_expires" timestamp;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "updated_at" timestamp NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "serverIp" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "certificateType" "certificateType" DEFAULT 'none' NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "host" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "letsEncryptEmail" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "sshPrivateKey" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "enableDockerCleanup" boolean DEFAULT false NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "enableLogRotation" boolean DEFAULT false NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "enablePaidFeatures" boolean DEFAULT false NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "metricsConfig" jsonb 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 NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "cleanupCacheApplications" boolean DEFAULT false NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "cleanupCacheOnPreviews" boolean DEFAULT false NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "cleanupCacheOnCompose" boolean DEFAULT false NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "stripeCustomerId" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "stripeSubscriptionId" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD COLUMN "serversQuantity" integer DEFAULT 0 NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session" ADD COLUMN "token" text NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session" ADD COLUMN "created_at" timestamp NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session" ADD COLUMN "updated_at" timestamp NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session" ADD COLUMN "ip_address" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session" ADD COLUMN "user_agent" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session" ADD COLUMN "impersonated_by" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session" ADD COLUMN "active_organization_id" text;
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "account" (
|
|
||||||
"id" text PRIMARY KEY NOT NULL,
|
|
||||||
"account_id" text NOT NULL,
|
|
||||||
"provider_id" text NOT NULL,
|
|
||||||
"user_id" text NOT NULL,
|
|
||||||
"access_token" text,
|
|
||||||
"refresh_token" text,
|
|
||||||
"id_token" text,
|
|
||||||
"access_token_expires_at" timestamp,
|
|
||||||
"refresh_token_expires_at" timestamp,
|
|
||||||
"scope" text,
|
|
||||||
"password" text,
|
|
||||||
"is2FAEnabled" boolean DEFAULT false NOT NULL,
|
|
||||||
"created_at" timestamp NOT NULL,
|
|
||||||
"updated_at" timestamp NOT NULL,
|
|
||||||
"resetPasswordToken" text,
|
|
||||||
"resetPasswordExpiresAt" text,
|
|
||||||
"confirmationToken" text,
|
|
||||||
"confirmationExpiresAt" text
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "invitation" (
|
|
||||||
"id" text PRIMARY KEY NOT NULL,
|
|
||||||
"organization_id" text NOT NULL,
|
|
||||||
"email" text NOT NULL,
|
|
||||||
"role" text,
|
|
||||||
"status" text NOT NULL,
|
|
||||||
"expires_at" timestamp NOT NULL,
|
|
||||||
"inviter_id" text NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "member" (
|
|
||||||
"id" text PRIMARY KEY NOT NULL,
|
|
||||||
"organization_id" text NOT NULL,
|
|
||||||
"user_id" text NOT NULL,
|
|
||||||
"role" text NOT NULL,
|
|
||||||
"created_at" timestamp NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "organization" (
|
|
||||||
"id" text PRIMARY KEY NOT NULL,
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"slug" text,
|
|
||||||
"logo" text,
|
|
||||||
"created_at" timestamp NOT NULL,
|
|
||||||
"metadata" text,
|
|
||||||
"owner_id" text NOT NULL,
|
|
||||||
CONSTRAINT "organization_slug_unique" UNIQUE("slug")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "verification" (
|
|
||||||
"id" text PRIMARY KEY NOT NULL,
|
|
||||||
"identifier" text NOT NULL,
|
|
||||||
"value" text NOT NULL,
|
|
||||||
"expires_at" timestamp NOT NULL,
|
|
||||||
"created_at" timestamp,
|
|
||||||
"updated_at" timestamp
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "account" ADD CONSTRAINT "account_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE no action 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 no action ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "invitation" ADD CONSTRAINT "invitation_inviter_id_user_id_fk" FOREIGN KEY ("inviter_id") REFERENCES "public"."user"("id") ON DELETE no action 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 no action ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "member" ADD CONSTRAINT "member_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "organization" ADD CONSTRAINT "organization_owner_id_user_id_fk" FOREIGN KEY ("owner_id") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "project" ADD CONSTRAINT "project_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "destination" ADD CONSTRAINT "destination_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "certificate" ADD CONSTRAINT "certificate_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "session" ADD CONSTRAINT "session_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "registry" ADD CONSTRAINT "registry_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "notification" ADD CONSTRAINT "notification_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "ssh-key" ADD CONSTRAINT "ssh-key_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "git_provider" ADD CONSTRAINT "git_provider_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "server" ADD CONSTRAINT "server_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" DROP COLUMN "adminId";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" DROP COLUMN "authId";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "adminId";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "serverIp";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "certificateType";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "host";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "letsEncryptEmail";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "sshPrivateKey";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "enableDockerCleanup";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "enableLogRotation";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "authId";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "createdAt";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "stripeCustomerId";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "stripeSubscriptionId";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "serversQuantity";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "enablePaidFeatures";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "metricsConfig";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "cleanupCacheApplications";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "cleanupCacheOnPreviews";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "admin" DROP COLUMN "cleanupCacheOnCompose";
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "user" ADD CONSTRAINT "user_email_unique" UNIQUE("email");
|
|
||||||
--> statement-breakpoint
|
|
||||||
|
|
||||||
-- Primero quitar NOT NULL temporalmente
|
|
||||||
ALTER TABLE "session" ALTER COLUMN "token" DROP NOT NULL;
|
|
||||||
--> statement-breakpoint
|
|
||||||
|
|
||||||
-- Actualizar tokens existentes
|
|
||||||
UPDATE "session" SET
|
|
||||||
token = gen_random_uuid(),
|
|
||||||
created_at = COALESCE(created_at, NOW() - interval '1 day'),
|
|
||||||
updated_at = NOW()
|
|
||||||
WHERE token IS NULL;
|
|
||||||
|
|
||||||
-- Restablecer restricciones
|
|
||||||
ALTER TABLE "session" ALTER COLUMN "token" SET NOT NULL;
|
|
||||||
ALTER TABLE "session" ADD CONSTRAINT "session_token_unique" UNIQUE (token);
|
|
||||||
|
|
||||||
-- Luego realizar la migración de datos
|
|
||||||
-- Migración de datos para Admins
|
|
||||||
WITH admin_users AS (
|
|
||||||
INSERT INTO "user" (
|
|
||||||
id, created_at, token, email, email_verified, role, updated_at,
|
|
||||||
certificate_type, server_ip, host, lets_encrypt_email, ssh_private_key,
|
|
||||||
enable_docker_cleanup, enable_log_rotation, enable_paid_features,
|
|
||||||
metrics_config, cleanup_cache_applications, cleanup_cache_on_previews,
|
|
||||||
cleanup_cache_on_compose, stripe_customer_id, stripe_subscription_id,
|
|
||||||
servers_quantity
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
a.created_at,
|
|
||||||
a.token,
|
|
||||||
a.email,
|
|
||||||
true,
|
|
||||||
'admin',
|
|
||||||
a.created_at,
|
|
||||||
ad.certificate_type,
|
|
||||||
ad.server_ip,
|
|
||||||
ad.host,
|
|
||||||
ad.lets_encrypt_email,
|
|
||||||
ad.ssh_private_key,
|
|
||||||
ad.enable_docker_cleanup,
|
|
||||||
ad.enable_log_rotation,
|
|
||||||
ad.enable_paid_features,
|
|
||||||
ad.metrics_config,
|
|
||||||
ad.cleanup_cache_applications,
|
|
||||||
ad.cleanup_cache_on_previews,
|
|
||||||
ad.cleanup_cache_on_compose,
|
|
||||||
ad.stripe_customer_id,
|
|
||||||
ad.stripe_subscription_id,
|
|
||||||
ad.servers_quantity
|
|
||||||
FROM auth a
|
|
||||||
JOIN admins ad ON a.id = ad.auth_id
|
|
||||||
RETURNING id AS user_id, created_at, email
|
|
||||||
)
|
|
||||||
INSERT INTO account (id, account_id, provider_id, user_id, password, created_at, updated_at)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
a.id,
|
|
||||||
'credentials',
|
|
||||||
au.user_id,
|
|
||||||
a.password,
|
|
||||||
au.created_at,
|
|
||||||
au.created_at
|
|
||||||
FROM auth a
|
|
||||||
JOIN admin_users au ON a.email = au.email;
|
|
||||||
|
|
||||||
-- Crear organizaciones para admins
|
|
||||||
WITH admin_orgs AS (
|
|
||||||
INSERT INTO organization (id, name, slug, created_at, owner_id)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
'My Organization',
|
|
||||||
'org/' || au.user_id,
|
|
||||||
au.created_at,
|
|
||||||
au.user_id
|
|
||||||
FROM admin_users au
|
|
||||||
RETURNING id AS org_id, owner_id
|
|
||||||
)
|
|
||||||
-- Migrar usuarios regulares y asociar a organizaciones
|
|
||||||
INSERT INTO "user" (
|
|
||||||
id, created_at, token, email, email_verified, role, updated_at,
|
|
||||||
can_create_projects, can_access_ssh_keys
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
a.created_at,
|
|
||||||
a.token,
|
|
||||||
a.email,
|
|
||||||
true,
|
|
||||||
'user',
|
|
||||||
a.created_at,
|
|
||||||
u.can_create_projects,
|
|
||||||
u.can_access_ssh_keys
|
|
||||||
FROM auth a
|
|
||||||
JOIN users u ON a.id = u.auth_id
|
|
||||||
WHERE a.role = 'user';
|
|
||||||
|
|
||||||
-- Crear accounts para usuarios
|
|
||||||
INSERT INTO account (id, account_id, provider_id, user_id, password, created_at, updated_at)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
a.id,
|
|
||||||
'credentials',
|
|
||||||
u.id,
|
|
||||||
a.password,
|
|
||||||
a.created_at,
|
|
||||||
a.created_at
|
|
||||||
FROM auth a
|
|
||||||
JOIN "user" u ON a.email = u.email;
|
|
||||||
|
|
||||||
-- Asociar usuarios a organizaciones de sus admins
|
|
||||||
INSERT INTO member (id, organization_id, user_id, role, created_at)
|
|
||||||
SELECT
|
|
||||||
gen_random_uuid(),
|
|
||||||
ao.org_id,
|
|
||||||
u.id,
|
|
||||||
'user',
|
|
||||||
u.created_at
|
|
||||||
FROM "user" u
|
|
||||||
JOIN users old_u ON u.email = old_u.email
|
|
||||||
JOIN auth a ON old_u.auth_id = a.id
|
|
||||||
JOIN admin_orgs ao ON ao.owner_id = a.id;
|
|
||||||
|
|
||||||
-- Eliminar tablas obsoletas
|
|
||||||
DROP TABLE IF EXISTS admins;
|
|
||||||
DROP TABLE IF EXISTS users;
|
|
||||||
DROP TABLE IF EXISTS auth;
|
|
||||||
183
apps/dokploy/drizzle/0066_soft_kronos.sql
Normal file
183
apps/dokploy/drizzle/0066_soft_kronos.sql
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
-- Create new tables
|
||||||
|
CREATE TABLE IF NOT EXISTS "account" (
|
||||||
|
"id" text PRIMARY KEY NOT NULL,
|
||||||
|
"accountId" text NOT NULL,
|
||||||
|
"providerId" text NOT NULL,
|
||||||
|
"userId" text NOT NULL REFERENCES "user"("userId"),
|
||||||
|
"accessToken" text,
|
||||||
|
"refreshToken" text,
|
||||||
|
"idToken" text,
|
||||||
|
"accessTokenExpiresAt" timestamp,
|
||||||
|
"refreshTokenExpiresAt" timestamp,
|
||||||
|
"scope" text,
|
||||||
|
"password" text,
|
||||||
|
"is2FAEnabled" boolean DEFAULT false NOT NULL,
|
||||||
|
"createdAt" timestamp NOT NULL,
|
||||||
|
"updatedAt" timestamp NOT NULL,
|
||||||
|
"resetPasswordToken" text,
|
||||||
|
"resetPasswordExpiresAt" text,
|
||||||
|
"confirmationToken" text,
|
||||||
|
"confirmationExpiresAt" text
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "organization" (
|
||||||
|
"id" text PRIMARY KEY NOT NULL,
|
||||||
|
"name" text NOT NULL,
|
||||||
|
"slug" text,
|
||||||
|
"logo" text,
|
||||||
|
"createdAt" timestamp NOT NULL,
|
||||||
|
"metadata" text,
|
||||||
|
"ownerId" text NOT NULL REFERENCES "user"("userId"),
|
||||||
|
CONSTRAINT "organization_slug_unique" UNIQUE("slug")
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "member" (
|
||||||
|
"id" text PRIMARY KEY NOT NULL,
|
||||||
|
"organizationId" text NOT NULL REFERENCES "organization"("id"),
|
||||||
|
"userId" text NOT NULL REFERENCES "user"("userId"),
|
||||||
|
"role" text NOT NULL,
|
||||||
|
"createdAt" timestamp NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "invitation" (
|
||||||
|
"id" text PRIMARY KEY NOT NULL,
|
||||||
|
"organizationId" text NOT NULL,
|
||||||
|
"email" text NOT NULL,
|
||||||
|
"role" text,
|
||||||
|
"status" text NOT NULL,
|
||||||
|
"expiresAt" timestamp NOT NULL,
|
||||||
|
"inviterId" text NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "verification" (
|
||||||
|
"id" text PRIMARY KEY NOT NULL,
|
||||||
|
"identifier" text NOT NULL,
|
||||||
|
"value" text NOT NULL,
|
||||||
|
"expiresAt" timestamp NOT NULL,
|
||||||
|
"createdAt" timestamp,
|
||||||
|
"updatedAt" timestamp
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Alter existing user table to add new columns
|
||||||
|
ALTER TABLE "user"
|
||||||
|
ADD COLUMN IF NOT EXISTS "email" text,
|
||||||
|
ADD COLUMN IF NOT EXISTS "emailVerified" boolean DEFAULT false,
|
||||||
|
ADD COLUMN IF NOT EXISTS "role" text,
|
||||||
|
ADD COLUMN IF NOT EXISTS "certificateType" text DEFAULT 'none',
|
||||||
|
ADD COLUMN IF NOT EXISTS "serverIp" text,
|
||||||
|
ADD COLUMN IF NOT EXISTS "host" text,
|
||||||
|
ADD COLUMN IF NOT EXISTS "letsEncryptEmail" text,
|
||||||
|
ADD COLUMN IF NOT EXISTS "sshPrivateKey" text,
|
||||||
|
ADD COLUMN IF NOT EXISTS "enableDockerCleanup" boolean DEFAULT false,
|
||||||
|
ADD COLUMN IF NOT EXISTS "enableLogRotation" boolean DEFAULT false,
|
||||||
|
ADD COLUMN IF NOT EXISTS "enablePaidFeatures" boolean DEFAULT false,
|
||||||
|
ADD COLUMN IF NOT EXISTS "metricsConfig" jsonb DEFAULT '{}',
|
||||||
|
ADD COLUMN IF NOT EXISTS "cleanupCacheApplications" boolean DEFAULT false,
|
||||||
|
ADD COLUMN IF NOT EXISTS "cleanupCacheOnPreviews" boolean DEFAULT false,
|
||||||
|
ADD COLUMN IF NOT EXISTS "cleanupCacheOnCompose" boolean DEFAULT false,
|
||||||
|
ADD COLUMN IF NOT EXISTS "stripeCustomerId" text,
|
||||||
|
ADD COLUMN IF NOT EXISTS "stripeSubscriptionId" text,
|
||||||
|
ADD COLUMN IF NOT EXISTS "serversQuantity" integer DEFAULT 0;
|
||||||
|
|
||||||
|
-- Migrate admin users
|
||||||
|
WITH admin_users AS (
|
||||||
|
UPDATE "user" u
|
||||||
|
SET
|
||||||
|
"email" = a."email",
|
||||||
|
"emailVerified" = true,
|
||||||
|
"role" = 'admin',
|
||||||
|
"token" = a."token",
|
||||||
|
"certificateType" = adm."certificateType",
|
||||||
|
"serverIp" = adm."serverIp",
|
||||||
|
"host" = adm."host",
|
||||||
|
"letsEncryptEmail" = adm."letsEncryptEmail",
|
||||||
|
"sshPrivateKey" = adm."sshPrivateKey",
|
||||||
|
"enableDockerCleanup" = adm."enableDockerCleanup",
|
||||||
|
"enableLogRotation" = adm."enableLogRotation",
|
||||||
|
"enablePaidFeatures" = adm."enablePaidFeatures",
|
||||||
|
"metricsConfig" = adm."metricsConfig",
|
||||||
|
"cleanupCacheApplications" = adm."cleanupCacheApplications",
|
||||||
|
"cleanupCacheOnPreviews" = adm."cleanupCacheOnPreviews",
|
||||||
|
"cleanupCacheOnCompose" = adm."cleanupCacheOnCompose",
|
||||||
|
"stripeCustomerId" = adm."stripeCustomerId",
|
||||||
|
"stripeSubscriptionId" = adm."stripeSubscriptionId",
|
||||||
|
"serversQuantity" = adm."serversQuantity"
|
||||||
|
FROM "auth" a
|
||||||
|
INNER JOIN "admin" adm ON a."id" = adm."adminId"
|
||||||
|
WHERE a."id" = u."userId"
|
||||||
|
RETURNING u."userId", a."email"
|
||||||
|
)
|
||||||
|
INSERT INTO "account" ("id", "accountId", "providerId", "password", "userId", "createdAt", "updatedAt")
|
||||||
|
SELECT
|
||||||
|
gen_random_uuid(),
|
||||||
|
a."id",
|
||||||
|
'credentials',
|
||||||
|
a."password",
|
||||||
|
au."userId",
|
||||||
|
NOW(),
|
||||||
|
NOW()
|
||||||
|
FROM "auth" a
|
||||||
|
INNER JOIN admin_users au ON a."email" = au."email";
|
||||||
|
|
||||||
|
-- Create organizations for admin users
|
||||||
|
WITH admin_orgs AS (
|
||||||
|
INSERT INTO "organization" ("id", "name", "slug", "createdAt", "ownerId")
|
||||||
|
SELECT
|
||||||
|
gen_random_uuid(),
|
||||||
|
'My Organization',
|
||||||
|
concat('org/', u."userId"),
|
||||||
|
NOW(),
|
||||||
|
u."userId"
|
||||||
|
FROM "user" u
|
||||||
|
WHERE u."role" = 'admin'
|
||||||
|
RETURNING *
|
||||||
|
)
|
||||||
|
-- Migrate regular users
|
||||||
|
UPDATE "user" u
|
||||||
|
SET
|
||||||
|
"email" = a."email",
|
||||||
|
"emailVerified" = true,
|
||||||
|
"role" = 'user',
|
||||||
|
"token" = a."token",
|
||||||
|
"canCreateProjects" = usr."canCreateProjects",
|
||||||
|
"canAccessToSSHKeys" = usr."canAccessToSSHKeys"
|
||||||
|
FROM "auth" a
|
||||||
|
INNER JOIN "user" usr ON a."id" = usr."userId"
|
||||||
|
WHERE a."id" = u."userId"
|
||||||
|
AND NOT EXISTS (
|
||||||
|
SELECT 1 FROM "admin" adm WHERE a."id" = adm."adminId"
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Create accounts for regular users
|
||||||
|
INSERT INTO "account" ("id", "accountId", "providerId", "password", "userId", "createdAt", "updatedAt")
|
||||||
|
SELECT
|
||||||
|
gen_random_uuid(),
|
||||||
|
a."id",
|
||||||
|
'credentials',
|
||||||
|
a."password",
|
||||||
|
u."userId",
|
||||||
|
NOW(),
|
||||||
|
NOW()
|
||||||
|
FROM "auth" a
|
||||||
|
INNER JOIN "user" u ON a."email" = u."email"
|
||||||
|
WHERE u."role" = 'user';
|
||||||
|
|
||||||
|
-- Create member relationships
|
||||||
|
INSERT INTO "member" ("id", "organizationId", "role", "userId", "createdAt")
|
||||||
|
SELECT
|
||||||
|
gen_random_uuid(),
|
||||||
|
o."id",
|
||||||
|
'user',
|
||||||
|
u."userId",
|
||||||
|
NOW()
|
||||||
|
FROM "user" usr
|
||||||
|
INNER JOIN "user" u ON usr."userId" = u."userId"
|
||||||
|
INNER JOIN "admin" adm ON usr."adminId" = adm."adminId"
|
||||||
|
INNER JOIN "user" admin_u ON adm."adminId" = admin_u."userId"
|
||||||
|
INNER JOIN "organization" o ON o."ownerId" = admin_u."userId"
|
||||||
|
WHERE u."role" = 'user';
|
||||||
|
|
||||||
|
-- Drop old tables (after all data is migrated)
|
||||||
|
DROP TABLE IF EXISTS "sessionTable" CASCADE;
|
||||||
|
DROP TABLE IF EXISTS "admin" CASCADE;
|
||||||
|
DROP TABLE IF EXISTS "auth" CASCADE;
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"id": "5963096c-1a97-4e26-9f3f-f8613a359596",
|
"id": "d76ab830-b647-4e53-b6cc-0cf515968758",
|
||||||
"prevId": "1240ec96-1751-4de3-b64f-cef9cb716786",
|
"prevId": "1240ec96-1751-4de3-b64f-cef9cb716786",
|
||||||
"version": "7",
|
"version": "7",
|
||||||
"dialect": "postgresql",
|
"dialect": "postgresql",
|
||||||
@@ -735,8 +735,8 @@
|
|||||||
"name": "user",
|
"name": "user",
|
||||||
"schema": "",
|
"schema": "",
|
||||||
"columns": {
|
"columns": {
|
||||||
"id": {
|
"userId": {
|
||||||
"name": "id",
|
"name": "userId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"primaryKey": true,
|
"primaryKey": true,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
@@ -1172,15 +1172,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"project_userId_user_id_fk": {
|
"project_userId_user_userId_fk": {
|
||||||
"name": "project_userId_user_id_fk",
|
"name": "project_userId_user_userId_fk",
|
||||||
"tableFrom": "project",
|
"tableFrom": "project",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"userId"
|
"userId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -2042,15 +2042,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"destination_userId_user_id_fk": {
|
"destination_userId_user_userId_fk": {
|
||||||
"name": "destination_userId_user_id_fk",
|
"name": "destination_userId_user_userId_fk",
|
||||||
"tableFrom": "destination",
|
"tableFrom": "destination",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"userId"
|
"userId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -2456,15 +2456,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"certificate_userId_user_id_fk": {
|
"certificate_userId_user_userId_fk": {
|
||||||
"name": "certificate_userId_user_id_fk",
|
"name": "certificate_userId_user_userId_fk",
|
||||||
"tableFrom": "certificate",
|
"tableFrom": "certificate",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"userId"
|
"userId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -2513,12 +2513,6 @@
|
|||||||
"primaryKey": false,
|
"primaryKey": false,
|
||||||
"notNull": true
|
"notNull": true
|
||||||
},
|
},
|
||||||
"token": {
|
|
||||||
"name": "token",
|
|
||||||
"type": "text",
|
|
||||||
"primaryKey": false,
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
"created_at": {
|
"created_at": {
|
||||||
"name": "created_at",
|
"name": "created_at",
|
||||||
"type": "timestamp",
|
"type": "timestamp",
|
||||||
@@ -2564,30 +2558,22 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"session_user_id_user_id_fk": {
|
"session_user_id_user_userId_fk": {
|
||||||
"name": "session_user_id_user_id_fk",
|
"name": "session_user_id_user_userId_fk",
|
||||||
"tableFrom": "session",
|
"tableFrom": "session",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"user_id"
|
"user_id"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "no action",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"compositePrimaryKeys": {},
|
"compositePrimaryKeys": {},
|
||||||
"uniqueConstraints": {
|
"uniqueConstraints": {},
|
||||||
"session_token_unique": {
|
|
||||||
"name": "session_token_unique",
|
|
||||||
"nullsNotDistinct": false,
|
|
||||||
"columns": [
|
|
||||||
"token"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"policies": {},
|
"policies": {},
|
||||||
"checkConstraints": {},
|
"checkConstraints": {},
|
||||||
"isRLSEnabled": false
|
"isRLSEnabled": false
|
||||||
@@ -3322,15 +3308,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"registry_userId_user_id_fk": {
|
"registry_userId_user_userId_fk": {
|
||||||
"name": "registry_userId_user_id_fk",
|
"name": "registry_userId_user_userId_fk",
|
||||||
"tableFrom": "registry",
|
"tableFrom": "registry",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"userId"
|
"userId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -3647,15 +3633,15 @@
|
|||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
},
|
},
|
||||||
"notification_userId_user_id_fk": {
|
"notification_userId_user_userId_fk": {
|
||||||
"name": "notification_userId_user_id_fk",
|
"name": "notification_userId_user_userId_fk",
|
||||||
"tableFrom": "notification",
|
"tableFrom": "notification",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"userId"
|
"userId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -3785,15 +3771,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"ssh-key_userId_user_id_fk": {
|
"ssh-key_userId_user_userId_fk": {
|
||||||
"name": "ssh-key_userId_user_id_fk",
|
"name": "ssh-key_userId_user_userId_fk",
|
||||||
"tableFrom": "ssh-key",
|
"tableFrom": "ssh-key",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"userId"
|
"userId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -3844,15 +3830,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"git_provider_userId_user_id_fk": {
|
"git_provider_userId_user_userId_fk": {
|
||||||
"name": "git_provider_userId_user_id_fk",
|
"name": "git_provider_userId_user_userId_fk",
|
||||||
"tableFrom": "git_provider",
|
"tableFrom": "git_provider",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"userId"
|
"userId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -4187,15 +4173,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"server_userId_user_id_fk": {
|
"server_userId_user_userId_fk": {
|
||||||
"name": "server_userId_user_id_fk",
|
"name": "server_userId_user_userId_fk",
|
||||||
"tableFrom": "server",
|
"tableFrom": "server",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"userId"
|
"userId"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "cascade",
|
"onDelete": "cascade",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -4464,15 +4450,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"account_user_id_user_id_fk": {
|
"account_user_id_user_userId_fk": {
|
||||||
"name": "account_user_id_user_id_fk",
|
"name": "account_user_id_user_userId_fk",
|
||||||
"tableFrom": "account",
|
"tableFrom": "account",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"user_id"
|
"user_id"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "no action",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -4546,15 +4532,15 @@
|
|||||||
"onDelete": "no action",
|
"onDelete": "no action",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
},
|
},
|
||||||
"invitation_inviter_id_user_id_fk": {
|
"invitation_inviter_id_user_userId_fk": {
|
||||||
"name": "invitation_inviter_id_user_id_fk",
|
"name": "invitation_inviter_id_user_userId_fk",
|
||||||
"tableFrom": "invitation",
|
"tableFrom": "invitation",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"inviter_id"
|
"inviter_id"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "no action",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -4616,15 +4602,15 @@
|
|||||||
"onDelete": "no action",
|
"onDelete": "no action",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
},
|
},
|
||||||
"member_user_id_user_id_fk": {
|
"member_user_id_user_userId_fk": {
|
||||||
"name": "member_user_id_user_id_fk",
|
"name": "member_user_id_user_userId_fk",
|
||||||
"tableFrom": "member",
|
"tableFrom": "member",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"user_id"
|
"user_id"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "no action",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
@@ -4685,15 +4671,15 @@
|
|||||||
},
|
},
|
||||||
"indexes": {},
|
"indexes": {},
|
||||||
"foreignKeys": {
|
"foreignKeys": {
|
||||||
"organization_owner_id_user_id_fk": {
|
"organization_owner_id_user_userId_fk": {
|
||||||
"name": "organization_owner_id_user_id_fk",
|
"name": "organization_owner_id_user_userId_fk",
|
||||||
"tableFrom": "organization",
|
"tableFrom": "organization",
|
||||||
"tableTo": "user",
|
"tableTo": "user",
|
||||||
"columnsFrom": [
|
"columnsFrom": [
|
||||||
"owner_id"
|
"owner_id"
|
||||||
],
|
],
|
||||||
"columnsTo": [
|
"columnsTo": [
|
||||||
"id"
|
"userId"
|
||||||
],
|
],
|
||||||
"onDelete": "no action",
|
"onDelete": "no action",
|
||||||
"onUpdate": "no action"
|
"onUpdate": "no action"
|
||||||
|
|||||||
@@ -467,8 +467,8 @@
|
|||||||
{
|
{
|
||||||
"idx": 66,
|
"idx": 66,
|
||||||
"version": "7",
|
"version": "7",
|
||||||
"when": 1739168611366,
|
"when": 1739173929725,
|
||||||
"tag": "0066_calm_vengeance",
|
"tag": "0066_soft_kronos",
|
||||||
"breakpoints": true
|
"breakpoints": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export const session = pgTable("session", {
|
|||||||
userAgent: text("user_agent"),
|
userAgent: text("user_agent"),
|
||||||
userId: text("user_id")
|
userId: text("user_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
activeOrganizationId: text("active_organization_id"),
|
activeOrganizationId: text("active_organization_id"),
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ export const account = pgTable("account", {
|
|||||||
providerId: text("provider_id").notNull(),
|
providerId: text("provider_id").notNull(),
|
||||||
userId: text("user_id")
|
userId: text("user_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
accessToken: text("access_token"),
|
accessToken: text("access_token"),
|
||||||
refreshToken: text("refresh_token"),
|
refreshToken: text("refresh_token"),
|
||||||
idToken: text("id_token"),
|
idToken: text("id_token"),
|
||||||
@@ -66,7 +66,7 @@ export const organization = pgTable("organization", {
|
|||||||
metadata: text("metadata"),
|
metadata: text("metadata"),
|
||||||
ownerId: text("owner_id")
|
ownerId: text("owner_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const member = pgTable("member", {
|
export const member = pgTable("member", {
|
||||||
@@ -76,7 +76,7 @@ export const member = pgTable("member", {
|
|||||||
.references(() => organization.id),
|
.references(() => organization.id),
|
||||||
userId: text("user_id")
|
userId: text("user_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
role: text("role").notNull(),
|
role: text("role").notNull(),
|
||||||
createdAt: timestamp("created_at").notNull(),
|
createdAt: timestamp("created_at").notNull(),
|
||||||
});
|
});
|
||||||
@@ -92,5 +92,5 @@ export const invitation = pgTable("invitation", {
|
|||||||
expiresAt: timestamp("expires_at").notNull(),
|
expiresAt: timestamp("expires_at").notNull(),
|
||||||
inviterId: text("inviter_id")
|
inviterId: text("inviter_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ export const account = pgTable("account", {
|
|||||||
providerId: text("provider_id").notNull(),
|
providerId: text("provider_id").notNull(),
|
||||||
userId: text("user_id")
|
userId: text("user_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
accessToken: text("access_token"),
|
accessToken: text("access_token"),
|
||||||
refreshToken: text("refresh_token"),
|
refreshToken: text("refresh_token"),
|
||||||
idToken: text("id_token"),
|
idToken: text("id_token"),
|
||||||
@@ -42,7 +42,7 @@ export const organization = pgTable("organization", {
|
|||||||
metadata: text("metadata"),
|
metadata: text("metadata"),
|
||||||
ownerId: text("owner_id")
|
ownerId: text("owner_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const member = pgTable("member", {
|
export const member = pgTable("member", {
|
||||||
@@ -52,7 +52,7 @@ export const member = pgTable("member", {
|
|||||||
.references(() => organization.id),
|
.references(() => organization.id),
|
||||||
userId: text("user_id")
|
userId: text("user_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
role: text("role").notNull(),
|
role: text("role").notNull(),
|
||||||
createdAt: timestamp("created_at").notNull(),
|
createdAt: timestamp("created_at").notNull(),
|
||||||
});
|
});
|
||||||
@@ -68,5 +68,5 @@ export const invitation = pgTable("invitation", {
|
|||||||
expiresAt: timestamp("expires_at").notNull(),
|
expiresAt: timestamp("expires_at").notNull(),
|
||||||
inviterId: text("inviter_id")
|
inviterId: text("inviter_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export const certificates = pgTable("certificate", {
|
|||||||
.$defaultFn(() => generateAppName("certificate"))
|
.$defaultFn(() => generateAppName("certificate"))
|
||||||
.unique(),
|
.unique(),
|
||||||
autoRenew: boolean("autoRenew"),
|
autoRenew: boolean("autoRenew"),
|
||||||
userId: text("userId").references(() => user.id, {
|
userId: text("userId").references(() => user.userId, {
|
||||||
onDelete: "cascade",
|
onDelete: "cascade",
|
||||||
}),
|
}),
|
||||||
serverId: text("serverId").references(() => server.serverId, {
|
serverId: text("serverId").references(() => server.serverId, {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export const destinations = pgTable("destination", {
|
|||||||
endpoint: text("endpoint").notNull(),
|
endpoint: text("endpoint").notNull(),
|
||||||
userId: text("userId")
|
userId: text("userId")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id, { onDelete: "cascade" }),
|
.references(() => user.userId, { onDelete: "cascade" }),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const destinationsRelations = relations(
|
export const destinationsRelations = relations(
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export const gitProvider = pgTable("git_provider", {
|
|||||||
createdAt: text("createdAt")
|
createdAt: text("createdAt")
|
||||||
.notNull()
|
.notNull()
|
||||||
.$defaultFn(() => new Date().toISOString()),
|
.$defaultFn(() => new Date().toISOString()),
|
||||||
userId: text("userId").references(() => user.id, {
|
userId: text("userId").references(() => user.userId, {
|
||||||
onDelete: "cascade",
|
onDelete: "cascade",
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ export const notifications = pgTable("notification", {
|
|||||||
gotifyId: text("gotifyId").references(() => gotify.gotifyId, {
|
gotifyId: text("gotifyId").references(() => gotify.gotifyId, {
|
||||||
onDelete: "cascade",
|
onDelete: "cascade",
|
||||||
}),
|
}),
|
||||||
userId: text("userId").references(() => user.id, {
|
userId: text("userId").references(() => user.userId, {
|
||||||
onDelete: "cascade",
|
onDelete: "cascade",
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export const projects = pgTable("project", {
|
|||||||
.$defaultFn(() => new Date().toISOString()),
|
.$defaultFn(() => new Date().toISOString()),
|
||||||
userId: text("userId")
|
userId: text("userId")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id, { onDelete: "cascade" }),
|
.references(() => user.userId, { onDelete: "cascade" }),
|
||||||
env: text("env").notNull().default(""),
|
env: text("env").notNull().default(""),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export const registry = pgTable("registry", {
|
|||||||
registryType: registryType("selfHosted").notNull().default("cloud"),
|
registryType: registryType("selfHosted").notNull().default("cloud"),
|
||||||
userId: text("userId")
|
userId: text("userId")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id, { onDelete: "cascade" }),
|
.references(() => user.userId, { onDelete: "cascade" }),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const registryRelations = relations(registry, ({ one, many }) => ({
|
export const registryRelations = relations(registry, ({ one, many }) => ({
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ export const server = pgTable("server", {
|
|||||||
.$defaultFn(() => new Date().toISOString()),
|
.$defaultFn(() => new Date().toISOString()),
|
||||||
userId: text("userId")
|
userId: text("userId")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id, { onDelete: "cascade" }),
|
.references(() => user.userId, { onDelete: "cascade" }),
|
||||||
serverStatus: serverStatus("serverStatus").notNull().default("active"),
|
serverStatus: serverStatus("serverStatus").notNull().default("active"),
|
||||||
command: text("command").notNull().default(""),
|
command: text("command").notNull().default(""),
|
||||||
sshKeyId: text("sshKeyId").references(() => sshKeys.sshKeyId, {
|
sshKeyId: text("sshKeyId").references(() => sshKeys.sshKeyId, {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { sql } from "drizzle-orm";
|
||||||
import { pgTable, text, timestamp } from "drizzle-orm/pg-core";
|
import { pgTable, text, timestamp } from "drizzle-orm/pg-core";
|
||||||
import { user } from "./user";
|
import { user } from "./user";
|
||||||
|
|
||||||
@@ -5,14 +6,14 @@ import { user } from "./user";
|
|||||||
export const session = pgTable("session", {
|
export const session = pgTable("session", {
|
||||||
id: text("id").primaryKey(),
|
id: text("id").primaryKey(),
|
||||||
expiresAt: timestamp("expires_at").notNull(),
|
expiresAt: timestamp("expires_at").notNull(),
|
||||||
token: text("token").notNull().unique(),
|
// token: text("token").notNull().unique().default(sql`gen_random_uuid()`),
|
||||||
createdAt: timestamp("created_at").notNull(),
|
createdAt: timestamp("created_at").notNull(),
|
||||||
updatedAt: timestamp("updated_at").notNull(),
|
updatedAt: timestamp("updated_at").notNull(),
|
||||||
ipAddress: text("ip_address"),
|
ipAddress: text("ip_address"),
|
||||||
userAgent: text("user_agent"),
|
userAgent: text("user_agent"),
|
||||||
userId: text("user_id")
|
userId: text("user_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => user.id),
|
.references(() => user.userId),
|
||||||
impersonatedBy: text("impersonated_by"),
|
impersonatedBy: text("impersonated_by"),
|
||||||
activeOrganizationId: text("active_organization_id"),
|
activeOrganizationId: text("active_organization_id"),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export const sshKeys = pgTable("ssh-key", {
|
|||||||
.notNull()
|
.notNull()
|
||||||
.$defaultFn(() => new Date().toISOString()),
|
.$defaultFn(() => new Date().toISOString()),
|
||||||
lastUsedAt: text("lastUsedAt"),
|
lastUsedAt: text("lastUsedAt"),
|
||||||
userId: text("userId").references(() => user.id, {
|
userId: text("userId").references(() => user.userId, {
|
||||||
onDelete: "cascade",
|
onDelete: "cascade",
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import { certificateType } from "./shared";
|
|||||||
|
|
||||||
// OLD TABLE
|
// OLD TABLE
|
||||||
export const user = pgTable("user", {
|
export const user = pgTable("user", {
|
||||||
id: text("id")
|
userId: text("userId")
|
||||||
.notNull()
|
.notNull()
|
||||||
.primaryKey()
|
.primaryKey()
|
||||||
.$defaultFn(() => nanoid()),
|
.$defaultFn(() => nanoid()),
|
||||||
|
|||||||
Reference in New Issue
Block a user