Adds in AI chatting system.

This commit is contained in:
Cameron Redmore 2025-04-24 23:20:20 +01:00
parent 28c054de22
commit 8655eae39c
11 changed files with 1198 additions and 119 deletions

View file

@ -0,0 +1,156 @@
-- CreateEnum
CREATE TYPE "FieldType" AS ENUM ('text', 'number', 'date', 'textarea', 'boolean');
-- CreateTable
CREATE TABLE "forms" (
"id" SERIAL NOT NULL,
"title" TEXT NOT NULL,
"description" TEXT,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "forms_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "categories" (
"id" SERIAL NOT NULL,
"form_id" INTEGER NOT NULL,
"name" TEXT NOT NULL,
"sort_order" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "categories_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "fields" (
"id" SERIAL NOT NULL,
"category_id" INTEGER NOT NULL,
"label" TEXT NOT NULL,
"type" "FieldType" NOT NULL,
"description" TEXT,
"sort_order" INTEGER NOT NULL,
CONSTRAINT "fields_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "responses" (
"id" SERIAL NOT NULL,
"form_id" INTEGER NOT NULL,
"submitted_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "responses_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "response_values" (
"id" SERIAL NOT NULL,
"response_id" INTEGER NOT NULL,
"field_id" INTEGER NOT NULL,
"value" TEXT,
CONSTRAINT "response_values_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "mantis_summaries" (
"id" SERIAL NOT NULL,
"summary_date" DATE NOT NULL,
"summary_text" TEXT NOT NULL,
"generated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "mantis_summaries_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "EmailSummary" (
"id" SERIAL NOT NULL,
"summaryDate" DATE NOT NULL,
"summaryText" TEXT NOT NULL,
"generatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "EmailSummary_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "settings" (
"key" TEXT NOT NULL,
"value" TEXT NOT NULL,
CONSTRAINT "settings_pkey" PRIMARY KEY ("key")
);
-- CreateTable
CREATE TABLE "users" (
"id" TEXT NOT NULL,
"username" TEXT NOT NULL,
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "authenticators" (
"id" TEXT NOT NULL,
"credential_id" TEXT NOT NULL,
"credential_public_key" BYTEA NOT NULL,
"counter" BIGINT NOT NULL,
"credential_device_type" TEXT NOT NULL,
"credential_backed_up" BOOLEAN NOT NULL,
"transports" TEXT,
"user_id" TEXT NOT NULL,
CONSTRAINT "authenticators_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "chat_threads" (
"id" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "chat_threads_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "chat_messages" (
"id" TEXT NOT NULL,
"thread_id" TEXT NOT NULL,
"sender" TEXT NOT NULL,
"content" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "chat_messages_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "mantis_summaries_summary_date_key" ON "mantis_summaries"("summary_date");
-- CreateIndex
CREATE UNIQUE INDEX "EmailSummary_summaryDate_key" ON "EmailSummary"("summaryDate");
-- CreateIndex
CREATE UNIQUE INDEX "users_username_key" ON "users"("username");
-- CreateIndex
CREATE UNIQUE INDEX "authenticators_credential_id_key" ON "authenticators"("credential_id");
-- AddForeignKey
ALTER TABLE "categories" ADD CONSTRAINT "categories_form_id_fkey" FOREIGN KEY ("form_id") REFERENCES "forms"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "fields" ADD CONSTRAINT "fields_category_id_fkey" FOREIGN KEY ("category_id") REFERENCES "categories"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "responses" ADD CONSTRAINT "responses_form_id_fkey" FOREIGN KEY ("form_id") REFERENCES "forms"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "response_values" ADD CONSTRAINT "response_values_response_id_fkey" FOREIGN KEY ("response_id") REFERENCES "responses"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "response_values" ADD CONSTRAINT "response_values_field_id_fkey" FOREIGN KEY ("field_id") REFERENCES "fields"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "authenticators" ADD CONSTRAINT "authenticators_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "chat_messages" ADD CONSTRAINT "chat_messages_thread_id_fkey" FOREIGN KEY ("thread_id") REFERENCES "chat_threads"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View file

@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (e.g., Git)
provider = "postgresql"

View file

@ -123,3 +123,25 @@ model Authenticator {
@@map("authenticators")
}
// --- Add Chat Models ---
model ChatThread {
id String @id @default(uuid())
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
messages ChatMessage[]
@@map("chat_threads")
}
model ChatMessage {
id String @id @default(uuid())
threadId String @map("thread_id")
sender String // 'user' or 'bot'
content String
createdAt DateTime @default(now()) @map("created_at")
thread ChatThread @relation(fields: [threadId], references: [id], onDelete: Cascade)
@@map("chat_messages")
}