stop tracking generated migrations, and delete the stale one
Nothing applies these. There is no __drizzle_migrations table, `drizzle-kit migrate` has never run here, and `bun db:push` diffs the schema code against the live database directly — the schema code is the source of truth, as src/databases/CLAUDE.md says twice. The file was badly stale besides: 36 tables describing a schema from before capabilities, api_keys, agent_panels, the app store and the plugin system existed, including task_logs, terminal_containers and queue_jobs, which no longer exist anywhere in the codebase. Ignored rather than merely deleted, because `bun db:gen` reads src/schema.ts — whose last line imports plugin-schemas.gen.ts, generated from the plugin DIRECTORIES on whichever machine ran it. A committed migration would launder per-machine plugin state into the repository: generate it here and history gains music_* and offscale_*; generate it on a fresh clone and the next commit deletes them again. Two developers would fight over that file forever. Generating one locally to read a diff still works, and stays local. ── The history purge was tried and undone, deliberately ── git-filter-repo removed the blobs from all 1326 commits, cleanly: 1848 files became 1845, only the three migrations gone, every other blob byte-identical, verified against a bundle. It was reverted anyway. This codebase cites 76 commit SHAs as evidence — totality.ts points at2873948for the 2026-08-06 websocket incident, registry.ts at044aacf4, CLAUDE.md at f35c145 for the /chat exemplar — and a rewrite changes every one. They survived locally only through 1,328 replace refs, which are local to one clone and fooled my own verification into reporting the pre-rewrite commit as already clean. Three stale files nobody reads in old commits are not worth 76 dangling citations in a codebase whose documentation works by pointing at the commit that proves the claim. Untracking gets the entire practical benefit: gone from the tree, ignored forever, never regenerated into git. Recorded so nobody spends the afternoon rediscovering it.
This commit is contained in:
+23
@@ -70,3 +70,26 @@ build/
|
|||||||
build.next/
|
build.next/
|
||||||
src/apps/officer-web/Plugins.gen.tsx
|
src/apps/officer-web/Plugins.gen.tsx
|
||||||
src/databases/officer_db/src/plugin-schemas.gen.ts
|
src/databases/officer_db/src/plugin-schemas.gen.ts
|
||||||
|
|
||||||
|
# drizzle-kit's generated migrations. Nothing applies them — there is no __drizzle_migrations table and
|
||||||
|
# `drizzle-kit migrate` has never been run here; `bun db:push` diffs the schema code against the live
|
||||||
|
# database and alters it directly. The schema code is the source of truth (src/databases/CLAUDE.md).
|
||||||
|
#
|
||||||
|
# Ignored rather than merely unused, because `bun db:gen` reads src/schema.ts — whose last line imports
|
||||||
|
# plugin-schemas.gen.ts, itself generated from the plugin DIRECTORIES on this machine. So a generated
|
||||||
|
# migration describes whichever plugins happen to be checked out here, and committing one would launder
|
||||||
|
# per-machine state into the repository: run it with music installed and history gains music_*; run it on
|
||||||
|
# a fresh clone and the next commit deletes them again.
|
||||||
|
#
|
||||||
|
# The old 0000_new_princess_powerful.sql is deleted from the WORKING TREE but left in history. It had 36
|
||||||
|
# tables and described a schema from before capabilities, api_keys, the app store and the plugin system
|
||||||
|
# existed, including three (task_logs, terminal_containers, queue_jobs) that no longer exist at all.
|
||||||
|
#
|
||||||
|
# Purging it from history was tried on 2026-08-15 and deliberately undone. This codebase cites 76 commit
|
||||||
|
# SHAs in comments and docs as evidence — `totality.ts` points at 2873948 for the websocket incident,
|
||||||
|
# `registry.ts` at 044aacf4, CLAUDE.md at f35c145 — and a filter-repo run rewrites every one of them.
|
||||||
|
# Three stale files nobody reads in old commits are not worth 76 dangling citations in a codebase whose
|
||||||
|
# documentation works by pointing at the commit that proves the claim.
|
||||||
|
#
|
||||||
|
# Generate one locally whenever a diff is useful to read. It stays local.
|
||||||
|
src/databases/officer_db/migrations/
|
||||||
|
|||||||
@@ -1,426 +0,0 @@
|
|||||||
CREATE TABLE "passkey_challenges" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"origin" text NOT NULL,
|
|
||||||
"challenge" text NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"expires_at" timestamp with time zone NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "passkeys" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"origin" text,
|
|
||||||
"credential_id" text,
|
|
||||||
"public_key" text,
|
|
||||||
"counter" integer DEFAULT 0 NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "token_blacklist" (
|
|
||||||
"jti" text PRIMARY KEY NOT NULL,
|
|
||||||
"expires_at" timestamp with time zone NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "users" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"email" text NOT NULL,
|
|
||||||
"password" text,
|
|
||||||
"status" text DEFAULT 'Unverified' NOT NULL,
|
|
||||||
"name" text,
|
|
||||||
"username" text,
|
|
||||||
"avatar" text,
|
|
||||||
"password_changed_at" timestamp with time zone,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "users_email_unique" UNIQUE("email"),
|
|
||||||
CONSTRAINT "users_username_unique" UNIQUE("username")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "chat_session_events" (
|
|
||||||
"id" bigserial PRIMARY KEY NOT NULL,
|
|
||||||
"session_id" text NOT NULL,
|
|
||||||
"event" jsonb NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "dashboard_defaults" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"terminals" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"host_terminals" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "dashboard_defaults_user_id_unique" UNIQUE("user_id")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "dashboards" (
|
|
||||||
"id" text PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"config" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"layout" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
||||||
"terminals" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
||||||
"host_terminals" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
||||||
"sort_order" integer DEFAULT 0 NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_dashboards_user_id" UNIQUE("user_id","id")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "screens" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"layout" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
||||||
"terminals" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"host_terminals" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_screens_user_name" UNIQUE("user_id","name")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "email_accounts" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"provider" text NOT NULL,
|
|
||||||
"email" text NOT NULL,
|
|
||||||
"display_name" text,
|
|
||||||
"imap_host" text NOT NULL,
|
|
||||||
"imap_port" integer NOT NULL,
|
|
||||||
"imap_secure" boolean DEFAULT true NOT NULL,
|
|
||||||
"auth_type" text NOT NULL,
|
|
||||||
"credentials" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"enabled" boolean DEFAULT true NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"status" text DEFAULT 'connected' NOT NULL,
|
|
||||||
"sync_meta" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_email_accounts_user_email" UNIQUE("user_id","email")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "headscale_servers" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"url" text NOT NULL,
|
|
||||||
"api_key" text NOT NULL,
|
|
||||||
"version" text,
|
|
||||||
"is_active" boolean DEFAULT false NOT NULL,
|
|
||||||
"last_seen_at" timestamp with time zone,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_headscale_servers_user_url" UNIQUE("user_id","url")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "music_favorites" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"kind" text NOT NULL,
|
|
||||||
"key" text NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_music_favorites_user_kind_key" UNIQUE("user_id","kind","key")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "music_now_playing" (
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"device" text DEFAULT '' NOT NULL,
|
|
||||||
"home_path" text NOT NULL,
|
|
||||||
"dir" text DEFAULT '' NOT NULL,
|
|
||||||
"title" text DEFAULT '' NOT NULL,
|
|
||||||
"artist" text DEFAULT '' NOT NULL,
|
|
||||||
"album" text DEFAULT '' NOT NULL,
|
|
||||||
"duration_sec" real DEFAULT 0 NOT NULL,
|
|
||||||
"position_sec" real DEFAULT 0 NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "music_now_playing_user_id_device_pk" PRIMARY KEY("user_id","device")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "music_playlist_items" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"playlist_id" integer NOT NULL,
|
|
||||||
"key" text NOT NULL,
|
|
||||||
"position" integer NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "music_playlists" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_music_playlists_user_name" UNIQUE("user_id","name")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "push_devices" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"token" text NOT NULL,
|
|
||||||
"platform" text NOT NULL,
|
|
||||||
"environment" text DEFAULT 'production' NOT NULL,
|
|
||||||
"bundle_id" text NOT NULL,
|
|
||||||
"app_slug" text NOT NULL,
|
|
||||||
"failure_count" integer DEFAULT 0 NOT NULL,
|
|
||||||
"last_seen_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_push_devices_token_bundle" UNIQUE("token","bundle_id"),
|
|
||||||
CONSTRAINT "ck_push_devices_platform" CHECK ("push_devices"."platform" IN ('ios', 'android')),
|
|
||||||
CONSTRAINT "ck_push_devices_environment" CHECK ("push_devices"."environment" IN ('production', 'sandbox'))
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "queue_jobs" (
|
|
||||||
"id" text PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"lane" text NOT NULL,
|
|
||||||
"type" text NOT NULL,
|
|
||||||
"status" text DEFAULT 'queued' NOT NULL,
|
|
||||||
"current_step" integer DEFAULT 0 NOT NULL,
|
|
||||||
"steps" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
||||||
"meta" jsonb,
|
|
||||||
"error" text,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"started_at" timestamp with time zone,
|
|
||||||
"completed_at" timestamp with time zone
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "task_logs" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"task_name" text NOT NULL,
|
|
||||||
"task_dir_name" text NOT NULL,
|
|
||||||
"entry_name" text NOT NULL,
|
|
||||||
"entry_type" text NOT NULL,
|
|
||||||
"provider" text NOT NULL,
|
|
||||||
"model" text NOT NULL,
|
|
||||||
"is_error" boolean DEFAULT false NOT NULL,
|
|
||||||
"messages" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
||||||
"started_at" timestamp with time zone NOT NULL,
|
|
||||||
"completed_at" timestamp with time zone
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "terminal_containers" (
|
|
||||||
"user_id" integer PRIMARY KEY NOT NULL,
|
|
||||||
"docker_id" text NOT NULL,
|
|
||||||
"port" integer NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "photos_config" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"url" text NOT NULL,
|
|
||||||
"api_key" text NOT NULL,
|
|
||||||
"version" text,
|
|
||||||
"last_seen_at" timestamp with time zone,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "pipeline_jobs" (
|
|
||||||
"id" text PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"task_dir_name" text NOT NULL,
|
|
||||||
"task_name" text NOT NULL,
|
|
||||||
"mode" text DEFAULT 'pipeline' NOT NULL,
|
|
||||||
"status" text DEFAULT 'pending' NOT NULL,
|
|
||||||
"inputs" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"cwd" text,
|
|
||||||
"config" jsonb NOT NULL,
|
|
||||||
"progress" jsonb,
|
|
||||||
"total_cost" jsonb,
|
|
||||||
"error" text,
|
|
||||||
"exit_code" integer,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"started_at" timestamp with time zone,
|
|
||||||
"completed_at" timestamp with time zone
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "server_config" (
|
|
||||||
"key" text PRIMARY KEY NOT NULL,
|
|
||||||
"value" jsonb NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "server_integrations" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"provider" text NOT NULL,
|
|
||||||
"enabled" boolean DEFAULT true NOT NULL,
|
|
||||||
"config" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "server_integrations_provider_unique" UNIQUE("provider"),
|
|
||||||
CONSTRAINT "ck_server_integrations_provider" CHECK ("server_integrations"."provider" IN ('google', 'apify'))
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "soulseek_browse_dirs" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"snapshot_id" integer NOT NULL,
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"parent_path" text,
|
|
||||||
"depth" integer DEFAULT 1 NOT NULL,
|
|
||||||
"label" text DEFAULT '' NOT NULL,
|
|
||||||
"child_count" integer DEFAULT 0 NOT NULL,
|
|
||||||
"file_count" integer DEFAULT 0 NOT NULL,
|
|
||||||
"total_size" bigint DEFAULT 0 NOT NULL,
|
|
||||||
"subtree_file_count" integer DEFAULT 0 NOT NULL,
|
|
||||||
"subtree_size" bigint DEFAULT 0 NOT NULL,
|
|
||||||
"files" jsonb DEFAULT '[]'::jsonb NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "soulseek_browse_snapshots" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"username" text NOT NULL,
|
|
||||||
"status" text DEFAULT 'pending' NOT NULL,
|
|
||||||
"error" text,
|
|
||||||
"directory_count" integer DEFAULT 0 NOT NULL,
|
|
||||||
"file_count" integer DEFAULT 0 NOT NULL,
|
|
||||||
"total_size" bigint DEFAULT 0 NOT NULL,
|
|
||||||
"started_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"completed_at" timestamp with time zone,
|
|
||||||
CONSTRAINT "uq_soulseek_browse_snapshots_user_username" UNIQUE("user_id","username")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "soulseek_favorites" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"username" text NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_soulseek_favorites_user_username" UNIQUE("user_id","username")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "dock_configs" (
|
|
||||||
"user_id" integer PRIMARY KEY NOT NULL,
|
|
||||||
"paths" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "user_integrations" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"provider" text NOT NULL,
|
|
||||||
"server_integration_id" integer,
|
|
||||||
"config" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_user_integrations_user_provider" UNIQUE("user_id","provider"),
|
|
||||||
CONSTRAINT "ck_user_integrations_provider" CHECK ("user_integrations"."provider" IN ('google', 'browser-relay'))
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "user_settings" (
|
|
||||||
"user_id" integer PRIMARY KEY NOT NULL,
|
|
||||||
"settings" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "user_state" (
|
|
||||||
"user_id" integer PRIMARY KEY NOT NULL,
|
|
||||||
"state" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "vault_tokens" (
|
|
||||||
"user_id" integer PRIMARY KEY NOT NULL,
|
|
||||||
"access_token" text NOT NULL,
|
|
||||||
"refresh_token" text NOT NULL,
|
|
||||||
"expires_at" timestamp with time zone,
|
|
||||||
"device_identifier" text,
|
|
||||||
"client_id" text,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "vault_unlock_keys" (
|
|
||||||
"user_id" integer PRIMARY KEY NOT NULL,
|
|
||||||
"wrapped_key" text NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "wallet_chain_cache" (
|
|
||||||
"wallet_id" integer PRIMARY KEY NOT NULL,
|
|
||||||
"snapshot" jsonb,
|
|
||||||
"synced_at" timestamp with time zone,
|
|
||||||
"last_error" text,
|
|
||||||
"last_error_at" timestamp with time zone
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "wallet_frozen_utxos" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"wallet_id" integer NOT NULL,
|
|
||||||
"outpoint" text NOT NULL,
|
|
||||||
"reason" text,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_wallet_frozen_utxos_wallet_outpoint" UNIQUE("wallet_id","outpoint")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "wallet_labels" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"wallet_id" integer NOT NULL,
|
|
||||||
"kind" text NOT NULL,
|
|
||||||
"ref" text NOT NULL,
|
|
||||||
"label" text NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_wallet_labels_wallet_kind_ref" UNIQUE("wallet_id","kind","ref")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE TABLE "wallet_wallets" (
|
|
||||||
"id" serial PRIMARY KEY NOT NULL,
|
|
||||||
"user_id" integer NOT NULL,
|
|
||||||
"name" text NOT NULL,
|
|
||||||
"kind" text NOT NULL,
|
|
||||||
"network" text DEFAULT 'bitcoin' NOT NULL,
|
|
||||||
"config" text,
|
|
||||||
"seed_envelope" text,
|
|
||||||
"fingerprint" text,
|
|
||||||
"xpubs" jsonb,
|
|
||||||
"default_bip" integer DEFAULT 84 NOT NULL,
|
|
||||||
"is_active" boolean DEFAULT false NOT NULL,
|
|
||||||
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
||||||
CONSTRAINT "uq_wallet_wallets_user_name" UNIQUE("user_id","name")
|
|
||||||
);
|
|
||||||
--> statement-breakpoint
|
|
||||||
ALTER TABLE "passkey_challenges" ADD CONSTRAINT "passkey_challenges_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "passkeys" ADD CONSTRAINT "passkeys_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "dashboard_defaults" ADD CONSTRAINT "dashboard_defaults_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "dashboards" ADD CONSTRAINT "dashboards_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "screens" ADD CONSTRAINT "screens_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "email_accounts" ADD CONSTRAINT "email_accounts_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "headscale_servers" ADD CONSTRAINT "headscale_servers_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "music_favorites" ADD CONSTRAINT "music_favorites_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "music_now_playing" ADD CONSTRAINT "music_now_playing_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "music_playlist_items" ADD CONSTRAINT "music_playlist_items_playlist_id_music_playlists_id_fk" FOREIGN KEY ("playlist_id") REFERENCES "public"."music_playlists"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "music_playlists" ADD CONSTRAINT "music_playlists_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "push_devices" ADD CONSTRAINT "push_devices_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "queue_jobs" ADD CONSTRAINT "queue_jobs_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "task_logs" ADD CONSTRAINT "task_logs_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "terminal_containers" ADD CONSTRAINT "terminal_containers_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "photos_config" ADD CONSTRAINT "photos_config_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "pipeline_jobs" ADD CONSTRAINT "pipeline_jobs_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "soulseek_browse_dirs" ADD CONSTRAINT "soulseek_browse_dirs_snapshot_id_fk" FOREIGN KEY ("snapshot_id") REFERENCES "public"."soulseek_browse_snapshots"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "soulseek_browse_snapshots" ADD CONSTRAINT "soulseek_browse_snapshots_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "soulseek_favorites" ADD CONSTRAINT "soulseek_favorites_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "dock_configs" ADD CONSTRAINT "dock_configs_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "user_integrations" ADD CONSTRAINT "user_integrations_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "user_integrations" ADD CONSTRAINT "user_integrations_server_integration_id_server_integrations_id_fk" FOREIGN KEY ("server_integration_id") REFERENCES "public"."server_integrations"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "user_settings" ADD CONSTRAINT "user_settings_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "user_state" ADD CONSTRAINT "user_state_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "vault_tokens" ADD CONSTRAINT "vault_tokens_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "vault_unlock_keys" ADD CONSTRAINT "vault_unlock_keys_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "wallet_chain_cache" ADD CONSTRAINT "wallet_chain_cache_wallet_id_wallet_wallets_id_fk" FOREIGN KEY ("wallet_id") REFERENCES "public"."wallet_wallets"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "wallet_frozen_utxos" ADD CONSTRAINT "wallet_frozen_utxos_wallet_id_wallet_wallets_id_fk" FOREIGN KEY ("wallet_id") REFERENCES "public"."wallet_wallets"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "wallet_labels" ADD CONSTRAINT "wallet_labels_wallet_id_wallet_wallets_id_fk" FOREIGN KEY ("wallet_id") REFERENCES "public"."wallet_wallets"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
ALTER TABLE "wallet_wallets" ADD CONSTRAINT "wallet_wallets_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_token_blacklist_expires" ON "token_blacklist" USING btree ("expires_at");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_chat_session_events_session_id" ON "chat_session_events" USING btree ("session_id","id");--> statement-breakpoint
|
|
||||||
CREATE UNIQUE INDEX "uq_headscale_servers_one_active" ON "headscale_servers" USING btree ("user_id") WHERE "headscale_servers"."is_active";--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_music_favorites_user_kind" ON "music_favorites" USING btree ("user_id","kind");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_music_playlist_items_playlist" ON "music_playlist_items" USING btree ("playlist_id","position");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_push_devices_user" ON "push_devices" USING btree ("user_id");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_queue_jobs_status_lane" ON "queue_jobs" USING btree ("status","lane");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_queue_jobs_user" ON "queue_jobs" USING btree ("user_id");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_task_logs_user_started" ON "task_logs" USING btree ("user_id","started_at");--> statement-breakpoint
|
|
||||||
CREATE UNIQUE INDEX "photos_config_user_idx" ON "photos_config" USING btree ("user_id");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_pipeline_jobs_user_created" ON "pipeline_jobs" USING btree ("user_id","created_at");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_pipeline_jobs_status" ON "pipeline_jobs" USING btree ("status");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_soulseek_browse_dirs_snapshot_name" ON "soulseek_browse_dirs" USING btree ("snapshot_id","name");--> statement-breakpoint
|
|
||||||
CREATE INDEX "idx_soulseek_browse_dirs_snapshot_parent" ON "soulseek_browse_dirs" USING btree ("snapshot_id","parent_path","name");--> statement-breakpoint
|
|
||||||
CREATE UNIQUE INDEX "uq_wallet_wallets_one_active" ON "wallet_wallets" USING btree ("user_id") WHERE "wallet_wallets"."is_active";
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "7",
|
|
||||||
"dialect": "postgresql",
|
|
||||||
"entries": [
|
|
||||||
{
|
|
||||||
"idx": 0,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1785771021535,
|
|
||||||
"tag": "0000_new_princess_powerful",
|
|
||||||
"breakpoints": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user