80 lines
2.5 KiB
SQL
80 lines
2.5 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "docket_entries" (
|
|
"id" SERIAL NOT NULL,
|
|
"date" DATE NOT NULL,
|
|
"document_type" VARCHAR(100) NOT NULL,
|
|
"summary" TEXT NOT NULL,
|
|
"court_notes" TEXT,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "docket_entries_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "documents" (
|
|
"id" SERIAL NOT NULL,
|
|
"docket_entry_id" INTEGER NOT NULL,
|
|
"original_filename" VARCHAR(255) NOT NULL,
|
|
"stored_filename" VARCHAR(255) NOT NULL,
|
|
"file_path" VARCHAR(500) NOT NULL,
|
|
"title" VARCHAR(255) NOT NULL,
|
|
"summary" TEXT,
|
|
"notes" TEXT,
|
|
"is_primary" BOOLEAN NOT NULL DEFAULT false,
|
|
"file_size" INTEGER NOT NULL,
|
|
"display_order" INTEGER NOT NULL DEFAULT 0,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "documents_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "subscriptions" (
|
|
"id" SERIAL NOT NULL,
|
|
"email" VARCHAR(255) NOT NULL,
|
|
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
|
"unsubscribe_token" VARCHAR(255) NOT NULL,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "subscriptions_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "admin_users" (
|
|
"id" SERIAL NOT NULL,
|
|
"username" VARCHAR(50) NOT NULL,
|
|
"password_hash" VARCHAR(255) NOT NULL,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"last_login" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "admin_users_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "idx_docket_entries_date" ON "docket_entries"("date" DESC);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "documents_stored_filename_key" ON "documents"("stored_filename");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "idx_documents_docket_entry" ON "documents"("docket_entry_id");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "idx_documents_display_order" ON "documents"("docket_entry_id", "display_order");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "subscriptions_email_key" ON "subscriptions"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "subscriptions_unsubscribe_token_key" ON "subscriptions"("unsubscribe_token");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "idx_subscriptions_active" ON "subscriptions"("is_active");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "admin_users_username_key" ON "admin_users"("username");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "documents" ADD CONSTRAINT "documents_docket_entry_id_fkey" FOREIGN KEY ("docket_entry_id") REFERENCES "docket_entries"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|