21 lines
809 B
SQL
21 lines
809 B
SQL
CREATE TABLE IF NOT EXISTS achievements (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name VARCHAR(255) NOT NULL,
|
|
description TEXT NOT NULL,
|
|
icon_url VARCHAR(512),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS user_achievements (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
achievement_id UUID NOT NULL REFERENCES achievements(id) ON DELETE CASCADE,
|
|
received_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
UNIQUE(user_id, achievement_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_user_achievements_user_id ON user_achievements(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_user_achievements_achievement_id ON user_achievements(achievement_id);
|
|
|