Quest Domain Complete (F-004): - quest_account_request: new user registration requests - quest_notification + alert reads: notification/alert system - quest_email_event + subscriptions: email event management - quest_email_log: email tracking - quest_plant + inventory_type + inventory_plant: plant/inventory configuration - quest_processed_order_acknowledgement_email: duplicate prevention Remaining Domains Complete (F-005): Shipment Requests: - ship_request + ship_request_detail: shipment request cart workflow Allocation Requests: - alloc_request + alloc_request_detail + alloc_plant: coil allocation workflow Invoice Management: - inv_upload + inv_upload_entry + inv_upload_status: invoice upload/processing Finance/AP: - finance_ap_check_processing_batch + status: AP check processing Paint Schedule: - paint_plant + paint_line + paint_line_type + paint_plant_line + paint_schedule Documentation: - doc_category + doc_article + doc_article_permission_group: knowledge base Wave/EDI: - wave_process + wave_process_history: EDI processing Task Scheduler: - lts_task + lts_task_type + lts_task_schedule + lts_task_execution Total: 60+ tables, 600+ columns across all domains. All migrations applied successfully. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
214 lines
7.6 KiB
SQL
214 lines
7.6 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "quest_account_request" (
|
|
"id" TEXT NOT NULL,
|
|
"first_name" TEXT NOT NULL,
|
|
"last_name" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"phone" TEXT,
|
|
"company_name" TEXT NOT NULL,
|
|
"epicor_cust_id" TEXT,
|
|
"message" TEXT,
|
|
"request_processed" BOOLEAN NOT NULL DEFAULT false,
|
|
"processed_at" TIMESTAMP(3),
|
|
"processed_by" TEXT,
|
|
"approved" BOOLEAN NOT NULL DEFAULT false,
|
|
"rejection_reason" TEXT,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "quest_account_request_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "quest_notification" (
|
|
"id" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"text" TEXT NOT NULL,
|
|
"is_alert" BOOLEAN NOT NULL DEFAULT false,
|
|
"display_date" TIMESTAMP(3) NOT NULL,
|
|
"display_time" TEXT,
|
|
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "quest_notification_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "quest_user_notification_alert_read" (
|
|
"id" TEXT NOT NULL,
|
|
"quest_notification_id" TEXT NOT NULL,
|
|
"auth_user_id" TEXT NOT NULL,
|
|
"read_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "quest_user_notification_alert_read_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "quest_email_event" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "quest_email_event_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "quest_user_email_event" (
|
|
"id" TEXT NOT NULL,
|
|
"auth_user_id" TEXT NOT NULL,
|
|
"quest_email_event_id" TEXT NOT NULL,
|
|
"subscribed" BOOLEAN NOT NULL DEFAULT true,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "quest_user_email_event_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "quest_email_log" (
|
|
"id" TEXT NOT NULL,
|
|
"to_addresses" TEXT[],
|
|
"from_address" TEXT NOT NULL,
|
|
"subject" TEXT NOT NULL,
|
|
"body" TEXT NOT NULL,
|
|
"sent_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"status" TEXT NOT NULL DEFAULT 'sent',
|
|
"error_message" TEXT,
|
|
"quest_email_event_id" TEXT,
|
|
"auth_user_id" TEXT,
|
|
|
|
CONSTRAINT "quest_email_log_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "quest_plant" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "quest_plant_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "quest_inventory_type" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
|
"sort_order" INTEGER NOT NULL DEFAULT 0,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "quest_inventory_type_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "quest_inventory_plant" (
|
|
"id" TEXT NOT NULL,
|
|
"quest_plant_id" TEXT NOT NULL,
|
|
"quest_inventory_type_id" TEXT NOT NULL,
|
|
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "quest_inventory_plant_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "quest_processed_order_acknowledgement_email" (
|
|
"id" TEXT NOT NULL,
|
|
"epicor_order_num" INTEGER NOT NULL,
|
|
"epicor_cust_id" TEXT NOT NULL,
|
|
"epicor_po_num" TEXT,
|
|
"sent_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"quest_company_id" TEXT,
|
|
|
|
CONSTRAINT "quest_processed_order_acknowledgement_email_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_account_request_email_idx" ON "quest_account_request"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_account_request_request_processed_idx" ON "quest_account_request"("request_processed");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_notification_is_alert_idx" ON "quest_notification"("is_alert");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_notification_display_date_idx" ON "quest_notification"("display_date");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_notification_is_active_idx" ON "quest_notification"("is_active");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_user_notification_alert_read_auth_user_id_idx" ON "quest_user_notification_alert_read"("auth_user_id");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "quest_user_notification_alert_read_quest_notification_id_au_key" ON "quest_user_notification_alert_read"("quest_notification_id", "auth_user_id");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "quest_email_event_name_key" ON "quest_email_event"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_user_email_event_auth_user_id_idx" ON "quest_user_email_event"("auth_user_id");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "quest_user_email_event_auth_user_id_quest_email_event_id_key" ON "quest_user_email_event"("auth_user_id", "quest_email_event_id");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_email_log_sent_at_idx" ON "quest_email_log"("sent_at");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_email_log_status_idx" ON "quest_email_log"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_email_log_auth_user_id_idx" ON "quest_email_log"("auth_user_id");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "quest_plant_name_key" ON "quest_plant"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "quest_plant_code_key" ON "quest_plant"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "quest_inventory_type_name_key" ON "quest_inventory_type"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "quest_inventory_type_code_key" ON "quest_inventory_type"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_inventory_plant_quest_plant_id_idx" ON "quest_inventory_plant"("quest_plant_id");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_inventory_plant_quest_inventory_type_id_idx" ON "quest_inventory_plant"("quest_inventory_type_id");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "quest_inventory_plant_quest_plant_id_quest_inventory_type_i_key" ON "quest_inventory_plant"("quest_plant_id", "quest_inventory_type_id");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_processed_order_acknowledgement_email_epicor_cust_id_idx" ON "quest_processed_order_acknowledgement_email"("epicor_cust_id");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "quest_processed_order_acknowledgement_email_sent_at_idx" ON "quest_processed_order_acknowledgement_email"("sent_at");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "quest_processed_order_acknowledgement_email_epicor_order_nu_key" ON "quest_processed_order_acknowledgement_email"("epicor_order_num", "epicor_cust_id");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "quest_user_notification_alert_read" ADD CONSTRAINT "quest_user_notification_alert_read_quest_notification_id_fkey" FOREIGN KEY ("quest_notification_id") REFERENCES "quest_notification"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "quest_user_email_event" ADD CONSTRAINT "quest_user_email_event_quest_email_event_id_fkey" FOREIGN KEY ("quest_email_event_id") REFERENCES "quest_email_event"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "quest_inventory_plant" ADD CONSTRAINT "quest_inventory_plant_quest_plant_id_fkey" FOREIGN KEY ("quest_plant_id") REFERENCES "quest_plant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "quest_inventory_plant" ADD CONSTRAINT "quest_inventory_plant_quest_inventory_type_id_fkey" FOREIGN KEY ("quest_inventory_type_id") REFERENCES "quest_inventory_type"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|