mirror of
https://github.com/GlueOps/autoglue.git
synced 2026-02-12 20:30:05 +01:00
Refactor routing logic (Chi can be a pain when you're managing large sets of routes, but its one of the better options when considering a potential gRPC future)
Upgrade API Generation to fully support OAS3.1
Update swagger interface to RapiDoc - the old swagger interface doesnt support OAS3.1 yet
Docs are now embedded as part of the UI - once logged in they pick up the cookies and org id from what gets set by the UI, but you can override it
Other updates include better portability of the db-studio
Signed-off-by: allanice001 <allanice001@gmail.com>
431 lines
20 KiB
SQL
431 lines
20 KiB
SQL
-- Add new schema named "public"
|
|
CREATE SCHEMA IF NOT EXISTS "public";
|
|
-- Set comment to schema: "public"
|
|
COMMENT ON SCHEMA "public" IS 'standard public schema';
|
|
-- Create "jobs" table
|
|
CREATE TABLE "public"."jobs" (
|
|
"id" character varying NOT NULL,
|
|
"queue_name" character varying NOT NULL,
|
|
"status" character varying NOT NULL,
|
|
"arguments" jsonb NOT NULL DEFAULT '{}',
|
|
"result" jsonb NOT NULL DEFAULT '{}',
|
|
"last_error" character varying NULL,
|
|
"retry_count" bigint NOT NULL DEFAULT 0,
|
|
"max_retry" bigint NOT NULL DEFAULT 0,
|
|
"retry_interval" bigint NOT NULL DEFAULT 0,
|
|
"scheduled_at" timestamptz NULL DEFAULT now(),
|
|
"started_at" timestamptz NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id")
|
|
);
|
|
-- Create index "idx_jobs_scheduled_at" to table: "jobs"
|
|
CREATE INDEX "idx_jobs_scheduled_at" ON "public"."jobs" ("scheduled_at");
|
|
-- Create index "idx_jobs_started_at" to table: "jobs"
|
|
CREATE INDEX "idx_jobs_started_at" ON "public"."jobs" ("started_at");
|
|
-- Create "api_keys" table
|
|
CREATE TABLE "public"."api_keys" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"name" text NOT NULL DEFAULT '',
|
|
"key_hash" text NOT NULL,
|
|
"scope" text NOT NULL DEFAULT '',
|
|
"user_id" text NULL,
|
|
"org_id" text NULL,
|
|
"secret_hash" text NULL,
|
|
"expires_at" timestamptz NULL,
|
|
"revoked" boolean NOT NULL DEFAULT false,
|
|
"prefix" text NULL,
|
|
"last_used_at" timestamptz NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id")
|
|
);
|
|
-- Create index "idx_api_keys_key_hash" to table: "api_keys"
|
|
CREATE UNIQUE INDEX "idx_api_keys_key_hash" ON "public"."api_keys" ("key_hash");
|
|
-- Create "refresh_tokens" table
|
|
CREATE TABLE "public"."refresh_tokens" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"user_id" text NOT NULL,
|
|
"family_id" uuid NOT NULL,
|
|
"token_hash" text NOT NULL,
|
|
"expires_at" timestamptz NOT NULL,
|
|
"revoked_at" timestamptz NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id")
|
|
);
|
|
-- Create index "idx_refresh_tokens_family_id" to table: "refresh_tokens"
|
|
CREATE INDEX "idx_refresh_tokens_family_id" ON "public"."refresh_tokens" ("family_id");
|
|
-- Create index "idx_refresh_tokens_token_hash" to table: "refresh_tokens"
|
|
CREATE UNIQUE INDEX "idx_refresh_tokens_token_hash" ON "public"."refresh_tokens" ("token_hash");
|
|
-- Create index "idx_refresh_tokens_user_id" to table: "refresh_tokens"
|
|
CREATE INDEX "idx_refresh_tokens_user_id" ON "public"."refresh_tokens" ("user_id");
|
|
-- Create "signing_keys" table
|
|
CREATE TABLE "public"."signing_keys" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"kid" text NOT NULL,
|
|
"alg" text NOT NULL,
|
|
"use" text NOT NULL DEFAULT 'sig',
|
|
"is_active" boolean NOT NULL DEFAULT true,
|
|
"public_pem" text NOT NULL,
|
|
"private_pem" text NOT NULL,
|
|
"not_before" timestamptz NULL,
|
|
"expires_at" timestamptz NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
"rotated_from" text NULL,
|
|
PRIMARY KEY ("id")
|
|
);
|
|
-- Create index "idx_signing_keys_kid" to table: "signing_keys"
|
|
CREATE UNIQUE INDEX "idx_signing_keys_kid" ON "public"."signing_keys" ("kid");
|
|
-- Create "users" table
|
|
CREATE TABLE "public"."users" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"display_name" text NULL,
|
|
"primary_email" text NULL,
|
|
"avatar_url" text NULL,
|
|
"is_disabled" boolean NULL,
|
|
"is_admin" boolean NULL DEFAULT false,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id")
|
|
);
|
|
-- Create "accounts" table
|
|
CREATE TABLE "public"."accounts" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"user_id" uuid NOT NULL,
|
|
"provider" text NOT NULL,
|
|
"subject" text NOT NULL,
|
|
"email" text NULL,
|
|
"email_verified" boolean NOT NULL DEFAULT false,
|
|
"profile" jsonb NOT NULL DEFAULT '{}',
|
|
"secret_hash" text NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_accounts_user" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
|
|
);
|
|
-- Create index "idx_accounts_user_id" to table: "accounts"
|
|
CREATE INDEX "idx_accounts_user_id" ON "public"."accounts" ("user_id");
|
|
-- Create "organizations" table
|
|
CREATE TABLE "public"."organizations" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"name" text NOT NULL,
|
|
"domain" text NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id")
|
|
);
|
|
-- Create index "idx_organizations_domain" to table: "organizations"
|
|
CREATE INDEX "idx_organizations_domain" ON "public"."organizations" ("domain");
|
|
-- Create "annotations" table
|
|
CREATE TABLE "public"."annotations" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
"key" text NOT NULL,
|
|
"value" text NOT NULL,
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_annotations_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create index "idx_annotations_organization_id" to table: "annotations"
|
|
CREATE INDEX "idx_annotations_organization_id" ON "public"."annotations" ("organization_id");
|
|
-- Create "credentials" table
|
|
CREATE TABLE "public"."credentials" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NOT NULL,
|
|
"provider" character varying(50) NOT NULL,
|
|
"kind" character varying(50) NOT NULL,
|
|
"scope_kind" character varying(20) NOT NULL,
|
|
"scope" jsonb NOT NULL DEFAULT '{}',
|
|
"scope_fingerprint" character(64) NOT NULL,
|
|
"schema_version" bigint NOT NULL DEFAULT 1,
|
|
"name" character varying(100) NOT NULL DEFAULT '',
|
|
"scope_version" bigint NOT NULL DEFAULT 1,
|
|
"account_id" character varying(32) NULL,
|
|
"region" character varying(32) NULL,
|
|
"encrypted_data" text NOT NULL,
|
|
"iv" text NOT NULL,
|
|
"tag" text NOT NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_credentials_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create index "idx_credentials_organization_id" to table: "credentials"
|
|
CREATE INDEX "idx_credentials_organization_id" ON "public"."credentials" ("organization_id");
|
|
-- Create index "idx_credentials_scope_fingerprint" to table: "credentials"
|
|
CREATE INDEX "idx_credentials_scope_fingerprint" ON "public"."credentials" ("scope_fingerprint");
|
|
-- Create index "idx_kind_scope" to table: "credentials"
|
|
CREATE INDEX "idx_kind_scope" ON "public"."credentials" ("kind", "scope");
|
|
-- Create index "idx_provider_kind" to table: "credentials"
|
|
CREATE INDEX "idx_provider_kind" ON "public"."credentials" ("provider", "kind");
|
|
-- Create index "uniq_org_provider_scopekind_scope" to table: "credentials"
|
|
CREATE UNIQUE INDEX "uniq_org_provider_scopekind_scope" ON "public"."credentials" ("organization_id", "provider", "scope_kind", "scope_fingerprint");
|
|
-- Create "backups" table
|
|
CREATE TABLE "public"."backups" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NOT NULL,
|
|
"enabled" boolean NOT NULL DEFAULT false,
|
|
"credential_id" uuid NOT NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_backups_credential" FOREIGN KEY ("credential_id") REFERENCES "public"."credentials" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
CONSTRAINT "fk_backups_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create index "idx_backups_organization_id" to table: "backups"
|
|
CREATE INDEX "idx_backups_organization_id" ON "public"."backups" ("organization_id");
|
|
-- Create index "uniq_org_credential" to table: "backups"
|
|
CREATE UNIQUE INDEX "uniq_org_credential" ON "public"."backups" ("organization_id", "credential_id");
|
|
-- Create "ssh_keys" table
|
|
CREATE TABLE "public"."ssh_keys" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
"name" text NOT NULL,
|
|
"public_key" text NOT NULL,
|
|
"encrypted_private_key" text NOT NULL,
|
|
"private_iv" text NOT NULL,
|
|
"private_tag" text NOT NULL,
|
|
"fingerprint" text NOT NULL,
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_ssh_keys_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create index "idx_ssh_keys_fingerprint" to table: "ssh_keys"
|
|
CREATE INDEX "idx_ssh_keys_fingerprint" ON "public"."ssh_keys" ("fingerprint");
|
|
-- Create index "idx_ssh_keys_organization_id" to table: "ssh_keys"
|
|
CREATE INDEX "idx_ssh_keys_organization_id" ON "public"."ssh_keys" ("organization_id");
|
|
-- Create "servers" table
|
|
CREATE TABLE "public"."servers" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NOT NULL,
|
|
"hostname" text NULL,
|
|
"public_ip_address" text NULL,
|
|
"private_ip_address" text NOT NULL,
|
|
"ssh_user" text NOT NULL,
|
|
"ssh_key_id" uuid NOT NULL,
|
|
"role" text NOT NULL,
|
|
"status" text NULL DEFAULT 'pending',
|
|
"ssh_host_key" text NULL,
|
|
"ssh_host_key_algo" text NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_servers_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
CONSTRAINT "fk_servers_ssh_key" FOREIGN KEY ("ssh_key_id") REFERENCES "public"."ssh_keys" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
|
|
);
|
|
-- Create "clusters" table
|
|
CREATE TABLE "public"."clusters" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NOT NULL,
|
|
"name" text NOT NULL,
|
|
"provider" text NULL,
|
|
"region" text NULL,
|
|
"status" text NULL,
|
|
"captain_domain" text NOT NULL,
|
|
"apps_load_balancer" text NULL,
|
|
"glue_ops_load_balancer" text NULL,
|
|
"control_plane" text NULL,
|
|
"random_token" text NULL,
|
|
"certificate_key" text NULL,
|
|
"encrypted_kubeconfig" text NULL,
|
|
"kube_iv" text NULL,
|
|
"kube_tag" text NULL,
|
|
"bastion_server_id" uuid NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_clusters_bastion_server" FOREIGN KEY ("bastion_server_id") REFERENCES "public"."servers" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
CONSTRAINT "fk_clusters_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create "node_pools" table
|
|
CREATE TABLE "public"."node_pools" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
"name" text NOT NULL,
|
|
"role" text NULL,
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_node_pools_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create index "idx_node_pools_organization_id" to table: "node_pools"
|
|
CREATE INDEX "idx_node_pools_organization_id" ON "public"."node_pools" ("organization_id");
|
|
-- Create "cluster_node_pools" table
|
|
CREATE TABLE "public"."cluster_node_pools" (
|
|
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"cluster_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
PRIMARY KEY ("node_pool_id", "cluster_id"),
|
|
CONSTRAINT "fk_cluster_node_pools_cluster" FOREIGN KEY ("cluster_id") REFERENCES "public"."clusters" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
CONSTRAINT "fk_cluster_node_pools_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create "domains" table
|
|
CREATE TABLE "public"."domains" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NOT NULL,
|
|
"domain_name" character varying(253) NOT NULL,
|
|
"zone_id" character varying(128) NOT NULL DEFAULT '',
|
|
"status" character varying(20) NOT NULL DEFAULT 'pending',
|
|
"last_error" text NOT NULL DEFAULT '',
|
|
"credential_id" uuid NOT NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_domains_credential" FOREIGN KEY ("credential_id") REFERENCES "public"."credentials" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION,
|
|
CONSTRAINT "fk_domains_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create index "idx_domains_organization_id" to table: "domains"
|
|
CREATE INDEX "idx_domains_organization_id" ON "public"."domains" ("organization_id");
|
|
-- Create index "uniq_org_domain" to table: "domains"
|
|
CREATE UNIQUE INDEX "uniq_org_domain" ON "public"."domains" ("organization_id", "domain_name");
|
|
-- Create "labels" table
|
|
CREATE TABLE "public"."labels" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
"key" text NOT NULL,
|
|
"value" text NOT NULL,
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_labels_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create index "idx_labels_organization_id" to table: "labels"
|
|
CREATE INDEX "idx_labels_organization_id" ON "public"."labels" ("organization_id");
|
|
-- Create "load_balancers" table
|
|
CREATE TABLE "public"."load_balancers" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NULL,
|
|
"name" text NOT NULL,
|
|
"kind" text NOT NULL,
|
|
"public_ip_address" text NOT NULL,
|
|
"private_ip_address" text NOT NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_load_balancers_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create index "idx_load_balancers_organization_id" to table: "load_balancers"
|
|
CREATE INDEX "idx_load_balancers_organization_id" ON "public"."load_balancers" ("organization_id");
|
|
-- Create "memberships" table
|
|
CREATE TABLE "public"."memberships" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"user_id" uuid NOT NULL,
|
|
"organization_id" uuid NOT NULL,
|
|
"role" text NOT NULL DEFAULT 'member',
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_memberships_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
CONSTRAINT "fk_memberships_user" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
|
|
);
|
|
-- Create index "idx_memberships_organization_id" to table: "memberships"
|
|
CREATE INDEX "idx_memberships_organization_id" ON "public"."memberships" ("organization_id");
|
|
-- Create index "idx_memberships_user_id" to table: "memberships"
|
|
CREATE INDEX "idx_memberships_user_id" ON "public"."memberships" ("user_id");
|
|
-- Create "node_annotations" table
|
|
CREATE TABLE "public"."node_annotations" (
|
|
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"annotation_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
PRIMARY KEY ("node_pool_id", "annotation_id"),
|
|
CONSTRAINT "fk_node_annotations_annotation" FOREIGN KEY ("annotation_id") REFERENCES "public"."annotations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
CONSTRAINT "fk_node_annotations_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create "node_labels" table
|
|
CREATE TABLE "public"."node_labels" (
|
|
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"label_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
PRIMARY KEY ("node_pool_id", "label_id"),
|
|
CONSTRAINT "fk_node_labels_label" FOREIGN KEY ("label_id") REFERENCES "public"."labels" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
CONSTRAINT "fk_node_labels_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create "node_servers" table
|
|
CREATE TABLE "public"."node_servers" (
|
|
"server_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
PRIMARY KEY ("server_id", "node_pool_id"),
|
|
CONSTRAINT "fk_node_servers_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
CONSTRAINT "fk_node_servers_server" FOREIGN KEY ("server_id") REFERENCES "public"."servers" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create "taints" table
|
|
CREATE TABLE "public"."taints" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NOT NULL,
|
|
"key" text NOT NULL,
|
|
"value" text NOT NULL,
|
|
"effect" text NOT NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_taints_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create "node_taints" table
|
|
CREATE TABLE "public"."node_taints" (
|
|
"taint_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"node_pool_id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
PRIMARY KEY ("taint_id", "node_pool_id"),
|
|
CONSTRAINT "fk_node_taints_node_pool" FOREIGN KEY ("node_pool_id") REFERENCES "public"."node_pools" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
CONSTRAINT "fk_node_taints_taint" FOREIGN KEY ("taint_id") REFERENCES "public"."taints" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create "master_keys" table
|
|
CREATE TABLE "public"."master_keys" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"key" text NOT NULL,
|
|
"is_active" boolean NULL DEFAULT true,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id")
|
|
);
|
|
-- Create "organization_keys" table
|
|
CREATE TABLE "public"."organization_keys" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"organization_id" uuid NOT NULL,
|
|
"master_key_id" uuid NOT NULL,
|
|
"encrypted_key" text NOT NULL,
|
|
"iv" text NOT NULL,
|
|
"tag" text NOT NULL,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_organization_keys_master_key" FOREIGN KEY ("master_key_id") REFERENCES "public"."master_keys" ("id") ON UPDATE NO ACTION ON DELETE CASCADE,
|
|
CONSTRAINT "fk_organization_keys_organization" FOREIGN KEY ("organization_id") REFERENCES "public"."organizations" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create "record_sets" table
|
|
CREATE TABLE "public"."record_sets" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"domain_id" uuid NOT NULL,
|
|
"name" character varying(253) NOT NULL,
|
|
"type" character varying(10) NOT NULL,
|
|
"ttl" bigint NULL,
|
|
"values" jsonb NOT NULL DEFAULT '[]',
|
|
"fingerprint" character(64) NOT NULL,
|
|
"status" character varying(20) NOT NULL DEFAULT 'pending',
|
|
"owner" character varying(16) NOT NULL DEFAULT 'unknown',
|
|
"last_error" text NOT NULL DEFAULT '',
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_record_sets_domain" FOREIGN KEY ("domain_id") REFERENCES "public"."domains" ("id") ON UPDATE NO ACTION ON DELETE CASCADE
|
|
);
|
|
-- Create index "idx_record_sets_domain_id" to table: "record_sets"
|
|
CREATE INDEX "idx_record_sets_domain_id" ON "public"."record_sets" ("domain_id");
|
|
-- Create index "idx_record_sets_fingerprint" to table: "record_sets"
|
|
CREATE INDEX "idx_record_sets_fingerprint" ON "public"."record_sets" ("fingerprint");
|
|
-- Create index "idx_record_sets_type" to table: "record_sets"
|
|
CREATE INDEX "idx_record_sets_type" ON "public"."record_sets" ("type");
|
|
-- Create "user_emails" table
|
|
CREATE TABLE "public"."user_emails" (
|
|
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"user_id" uuid NOT NULL,
|
|
"email" text NOT NULL,
|
|
"is_verified" boolean NOT NULL DEFAULT false,
|
|
"is_primary" boolean NOT NULL DEFAULT false,
|
|
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
PRIMARY KEY ("id"),
|
|
CONSTRAINT "fk_user_emails_user" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
|
|
);
|
|
-- Create index "idx_user_emails_user_id" to table: "user_emails"
|
|
CREATE INDEX "idx_user_emails_user_id" ON "public"."user_emails" ("user_id");
|