-- 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;