diff --git a/migrations/009_tasks-module.sql b/migrations/009_tasks-module.sql index 12b656d..b08cfb3 100644 --- a/migrations/009_tasks-module.sql +++ b/migrations/009_tasks-module.sql @@ -5,8 +5,8 @@ -- --------------------------------------------------------------------- -- Block 1: Tasks Table --- Stores community Tasks with Geometry, Moderation and Completion. --- Status Flow: pending → rejected | open → completed → verified +-- Stores Tasks with Geometry, Moderation and Completion. +-- Status Flow from pending to rejected or approved to completed to verified -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS tasks ( task_id SERIAL PRIMARY KEY, @@ -21,17 +21,17 @@ CREATE TABLE IF NOT EXISTS tasks ( browser_id VARCHAR(36), photo_path VARCHAR(255), status VARCHAR(20) NOT NULL DEFAULT 'pending' - CHECK (status IN ('pending', 'rejected', 'open', 'completed', 'verified')), + CHECK (status IN ('pending', 'rejected', 'approved', 'completed', 'verified')), address VARCHAR(255), - -- Completion Fields (NULL until completed) + -- Completion Fields empty before completed completed_by_name VARCHAR(100), completed_by_browser VARCHAR(36), completion_photo VARCHAR(255), completion_comment TEXT, completed_at TIMESTAMP, - -- Counters (updated via Triggers) + -- Counters updated via Triggers likes_count INTEGER NOT NULL DEFAULT 0, dislikes_count INTEGER NOT NULL DEFAULT 0, comment_count INTEGER NOT NULL DEFAULT 0, @@ -46,8 +46,8 @@ CREATE INDEX idx_tasks_category ON tasks(category); -- --------------------------------------------------------------------- --- Block 2: User Points Table --- One Entry per verified Task Completion. Leaderboard via SUM/GROUP BY. +-- Block 2: Citizen Points Table +-- One Row per Completion. Leaderboard via SUM and GROUP BY. -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS user_points ( points_id SERIAL PRIMARY KEY, @@ -63,8 +63,8 @@ CREATE INDEX idx_user_points_user ON user_points(user_name); -- --------------------------------------------------------------------- --- Block 3: Extends Votes Table for Tasks --- Either contribution_id OR task_id is set, not both. +-- Block 3: Adapts Votes Table for Tasks +-- Either contribution_id OR task_id -- --------------------------------------------------------------------- ALTER TABLE votes ADD COLUMN task_id INTEGER REFERENCES tasks(task_id) ON DELETE CASCADE; @@ -78,8 +78,8 @@ ALTER TABLE votes -- --------------------------------------------------------------------- --- Block 4: Extends Comments Table for Tasks --- Either contribution_id OR task_id is set, not both. +-- Block 4: Adapts Comments Table for Tasks +-- Either contribution_id OR task_id -- --------------------------------------------------------------------- ALTER TABLE comments ADD COLUMN task_id INTEGER REFERENCES tasks(task_id) ON DELETE CASCADE; @@ -88,7 +88,7 @@ CREATE INDEX idx_comments_task ON comments(task_id); -- --------------------------------------------------------------------- --- Block 5: Trigger — updated_at Timestamp for Tasks +-- Block 5: Trigger Updated Timestamp for Tasks -- --------------------------------------------------------------------- CREATE TRIGGER set_tasks_updated_at BEFORE UPDATE ON tasks @@ -97,8 +97,8 @@ CREATE TRIGGER set_tasks_updated_at -- --------------------------------------------------------------------- --- Block 6: Trigger — Vote Counts for Tasks --- Mirrors the Pattern from Contributions. +-- Block 6: Trigger Vote Counts for Tasks +-- Mirrors Pattern from Contributions. -- --------------------------------------------------------------------- CREATE OR REPLACE FUNCTION update_task_vote_counts() RETURNS TRIGGER AS $$ @@ -131,8 +131,8 @@ CREATE TRIGGER trigger_update_task_vote_counts -- --------------------------------------------------------------------- --- Block 7: Trigger — Comment Count for Tasks --- Only counts approved Comments. Mirrors Contribution Pattern. +-- Block 7: Trigger Comment Count for Tasks +-- Mirrors Pattern from Contributions. -- --------------------------------------------------------------------- CREATE OR REPLACE FUNCTION update_task_comment_count() RETURNS TRIGGER AS $$ @@ -169,7 +169,7 @@ CREATE TRIGGER trigger_update_task_comment_count -- --------------------------------------------------------------------- --- Block 8: Views for QGIS (optional) +-- Block 8: Views for QGIS -- --------------------------------------------------------------------- CREATE OR REPLACE VIEW tasks_points AS SELECT * FROM tasks WHERE geom_type = 'point';