Skip to content

Commit 8bf5fc9

Browse files
author
Gerome El-assaad
committed
Add database migrations
1 parent 5fe44a2 commit 8bf5fc9

1 file changed

Lines changed: 70 additions & 0 deletions

File tree

migrations/create_tasks_table.sql

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
-- Create tasks table for CodinIT.dev task management
2+
-- This table stores background tasks with progress tracking and logs
3+
4+
CREATE TABLE IF NOT EXISTS tasks (
5+
id TEXT PRIMARY KEY,
6+
user_id TEXT REFERENCES auth.users(id) ON DELETE CASCADE,
7+
status TEXT NOT NULL CHECK (status IN ('pending', 'processing', 'completed', 'error')) DEFAULT 'pending',
8+
progress INTEGER NOT NULL DEFAULT 0 CHECK (progress >= 0 AND progress <= 100),
9+
prompt TEXT NOT NULL,
10+
repo_url TEXT,
11+
selected_agent TEXT DEFAULT 'claude',
12+
selected_model TEXT,
13+
sandbox_url TEXT,
14+
branch_name TEXT,
15+
logs TEXT DEFAULT '[]', -- JSON array of log entries
16+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
17+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
18+
);
19+
20+
-- Create indexes for better query performance
21+
CREATE INDEX IF NOT EXISTS idx_tasks_user_id ON tasks(user_id);
22+
CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
23+
CREATE INDEX IF NOT EXISTS idx_tasks_created_at ON tasks(created_at DESC);
24+
CREATE INDEX IF NOT EXISTS idx_tasks_user_status ON tasks(user_id, status);
25+
26+
-- Create updated_at trigger to automatically update the timestamp
27+
CREATE OR REPLACE FUNCTION update_updated_at_column()
28+
RETURNS TRIGGER AS $$
29+
BEGIN
30+
NEW.updated_at = NOW();
31+
RETURN NEW;
32+
END;
33+
$$ language 'plpgsql';
34+
35+
CREATE TRIGGER update_tasks_updated_at
36+
BEFORE UPDATE ON tasks
37+
FOR EACH ROW
38+
EXECUTE FUNCTION update_updated_at_column();
39+
40+
-- Enable Row Level Security (RLS)
41+
ALTER TABLE tasks ENABLE ROW LEVEL SECURITY;
42+
43+
-- Create RLS policies
44+
-- Users can only see their own tasks
45+
CREATE POLICY "Users can view their own tasks"
46+
ON tasks
47+
FOR SELECT
48+
USING (auth.uid() = user_id::uuid);
49+
50+
-- Users can only insert their own tasks
51+
CREATE POLICY "Users can insert their own tasks"
52+
ON tasks
53+
FOR INSERT
54+
WITH CHECK (auth.uid() = user_id::uuid);
55+
56+
-- Users can only update their own tasks
57+
CREATE POLICY "Users can update their own tasks"
58+
ON tasks
59+
FOR UPDATE
60+
USING (auth.uid() = user_id::uuid);
61+
62+
-- Users can only delete their own tasks
63+
CREATE POLICY "Users can delete their own tasks"
64+
ON tasks
65+
FOR DELETE
66+
USING (auth.uid() = user_id::uuid);
67+
68+
-- Grant necessary permissions
69+
GRANT ALL ON tasks TO authenticated;
70+
GRANT ALL ON tasks TO service_role;

0 commit comments

Comments
 (0)