From 8407dde30b3a22dcfdbb9066fc6421bdbf6031da Mon Sep 17 00:00:00 2001 From: Hammer Date: Fri, 30 Jan 2026 05:06:52 +0000 Subject: [PATCH] fix: comprehensive init-tables.sql for all new tables (todos, security_audits, daily_summaries, task_comments) --- backend/Dockerfile | 4 +-- backend/init-tables.sql | 67 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 backend/init-tables.sql diff --git a/backend/Dockerfile b/backend/Dockerfile index cd9cc50..5870947 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -11,5 +11,5 @@ COPY . . # Generate migrations and run EXPOSE 3100 RUN apt-get update && apt-get install -y postgresql-client && rm -rf /var/lib/apt/lists/* -COPY init-todos.sql /app/init-todos.sql -CMD ["sh", "-c", "echo 'Running init SQL...' && psql \"$DATABASE_URL\" -f /app/init-todos.sql 2>&1 && echo 'Init SQL done' && echo 'Running db:push...' && yes | bun run db:push 2>&1; echo 'db:push exit code:' $? && echo 'Starting server...' && bun run start"] +COPY init-tables.sql /app/init-tables.sql +CMD ["sh", "-c", "echo 'Running init SQL...' && psql \"$DATABASE_URL\" -f /app/init-tables.sql 2>&1 && echo 'Init SQL done' && echo 'Running db:push...' && yes | bun run db:push 2>&1; echo 'db:push exit code:' $? && echo 'Starting server...' && bun run start"] diff --git a/backend/init-tables.sql b/backend/init-tables.sql new file mode 100644 index 0000000..2d821cb --- /dev/null +++ b/backend/init-tables.sql @@ -0,0 +1,67 @@ +-- Create all new tables and enums that db:push might miss +-- Idempotent: safe to run multiple times + +-- ═══ Enums ═══ + +DO $$ BEGIN + CREATE TYPE todo_priority AS ENUM ('high', 'medium', 'low', 'none'); +EXCEPTION WHEN duplicate_object THEN null; +END $$; + +DO $$ BEGIN + CREATE TYPE security_audit_status AS ENUM ('strong', 'needs_improvement', 'critical'); +EXCEPTION WHEN duplicate_object THEN null; +END $$; + +-- ═══ Todos ═══ + +CREATE TABLE IF NOT EXISTS todos ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + user_id TEXT NOT NULL, + title TEXT NOT NULL, + description TEXT, + is_completed BOOLEAN NOT NULL DEFAULT false, + priority todo_priority NOT NULL DEFAULT 'none', + category TEXT, + due_date TIMESTAMPTZ, + completed_at TIMESTAMPTZ, + sort_order INTEGER NOT NULL DEFAULT 0, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +-- ═══ Security Audits ═══ + +CREATE TABLE IF NOT EXISTS security_audits ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + project_name TEXT NOT NULL, + category TEXT NOT NULL, + findings JSONB DEFAULT '[]'::jsonb, + score INTEGER NOT NULL DEFAULT 0, + last_audited TIMESTAMPTZ NOT NULL DEFAULT now(), + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +-- ═══ Daily Summaries ═══ + +CREATE TABLE IF NOT EXISTS daily_summaries ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + date TEXT NOT NULL UNIQUE, + content TEXT NOT NULL, + highlights JSONB DEFAULT '[]'::jsonb, + stats JSONB DEFAULT '{}'::jsonb, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +-- ═══ Task Comments (if not already created) ═══ + +CREATE TABLE IF NOT EXISTS task_comments ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + task_id UUID NOT NULL REFERENCES tasks(id) ON DELETE CASCADE, + author_id TEXT, + author_name TEXT NOT NULL, + content TEXT NOT NULL, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +);