managarten/maerchenzauber/apps/backend/migrations/create_story_logbooks_table.sql
Till-JS e7f5f942f3 chore: initial commit - consolidate 4 projects into monorepo
Projects included:
- maerchenzauber (NestJS backend + Expo mobile + SvelteKit web + Astro landing)
- manacore (Expo mobile + SvelteKit web + Astro landing)
- manadeck (NestJS backend + Expo mobile + SvelteKit web)
- memoro (Expo mobile + SvelteKit web + Astro landing)

This commit preserves the current state before monorepo restructuring.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:38:24 +01:00

49 lines
No EOL
1.7 KiB
SQL

-- Create story_logbooks table for storing detailed creation logs
CREATE TABLE IF NOT EXISTS story_logbooks (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
story_id UUID NOT NULL,
user_id UUID NOT NULL,
-- Character IDs array to support multiple characters per story
character_ids UUID[] DEFAULT '{}',
-- Timing information
start_time TIMESTAMPTZ NOT NULL,
end_time TIMESTAMPTZ,
total_duration_ms INTEGER,
-- Status and metadata
success BOOLEAN DEFAULT false,
environment TEXT DEFAULT 'production',
-- Core logbook data (JSONB for flexibility)
entries JSONB NOT NULL DEFAULT '[]'::jsonb,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
-- Summary for quick viewing
summary TEXT,
-- Tracking
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Create indexes for common queries
CREATE INDEX idx_story_logbooks_story_id ON story_logbooks(story_id);
CREATE INDEX idx_story_logbooks_user_id ON story_logbooks(user_id);
CREATE INDEX idx_story_logbooks_character_ids ON story_logbooks USING GIN(character_ids);
CREATE INDEX idx_story_logbooks_created_at ON story_logbooks(created_at DESC);
CREATE INDEX idx_story_logbooks_success ON story_logbooks(success);
-- Enable RLS
ALTER TABLE story_logbooks ENABLE ROW LEVEL SECURITY;
-- Create RLS policies
-- Since we're using Mana Core for auth, not Supabase Auth,
-- we'll create a permissive policy for service role access
-- The backend service will handle user authorization
CREATE POLICY "Service role has full access" ON story_logbooks
FOR ALL USING (true); -- Backend handles auth via Mana Core
-- Add comment
COMMENT ON TABLE story_logbooks IS 'Stores detailed logs of story creation process including AI prompts, responses, and errors';