chore: initial database schema
This commit is contained in:
parent
a7e593fdaa
commit
1355fb09c6
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
node_modules
|
||||
dist
|
||||
.wrangler
|
||||
.env
|
||||
.next
|
||||
75
database/01_init.sql
Normal file
75
database/01_init.sql
Normal file
@ -0,0 +1,75 @@
|
||||
CREATE TABLE IF NOT EXISTS settings (
|
||||
key TEXT PRIMARY KEY,
|
||||
value TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS roles (
|
||||
name TEXT PRIMARY KEY NOT NULL,
|
||||
description TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
email TEXT PRIMARY KEY,
|
||||
username TEXT NOT NULL UNIQUE,
|
||||
fullName TEXT NOT NULL,
|
||||
mauth_token TEXT,
|
||||
phone TEXT,
|
||||
citizen_id TEXT,
|
||||
role TEXT DEFAULT 'visitor',
|
||||
avatar_url TEXT,
|
||||
bio TEXT,
|
||||
id_document_url TEXT,
|
||||
id_verification_status TEXT DEFAULT 'pending',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (role) REFERENCES roles(name) ON UPDATE CASCADE ON DELETE SET DEFAULT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS posts (
|
||||
id TEXT PRIMARY KEY,
|
||||
user_email TEXT NOT NULL,
|
||||
media_url TEXT NOT NULL,
|
||||
media_type TEXT NOT NULL,
|
||||
caption TEXT,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_email) REFERENCES users(email) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS likes (
|
||||
id TEXT PRIMARY KEY,
|
||||
user_email TEXT NOT NULL,
|
||||
post_id TEXT NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_email) REFERENCES users(email) ON DELETE CASCADE,
|
||||
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
|
||||
UNIQUE(user_email, post_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS comments (
|
||||
id TEXT PRIMARY KEY,
|
||||
user_email TEXT NOT NULL,
|
||||
post_id TEXT NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_email) REFERENCES users(email) ON DELETE CASCADE,
|
||||
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
|
||||
CREATE INDEX IF NOT EXISTS idx_users_role ON users(role);
|
||||
CREATE INDEX IF NOT EXISTS idx_posts_user_email ON posts(user_email);
|
||||
CREATE INDEX IF NOT EXISTS idx_likes_user_email ON likes(user_email);
|
||||
CREATE INDEX IF NOT EXISTS idx_likes_post_id ON likes(post_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_comments_user_email ON comments(user_email);
|
||||
CREATE INDEX IF NOT EXISTS idx_comments_post_id ON comments(post_id);
|
||||
|
||||
INSERT OR IGNORE INTO settings (key, value) VALUES
|
||||
('site_name', 'Social Media App'),
|
||||
('site_description', 'A vibrant community social media platform.'),
|
||||
('maintenance_mode', 'false'),
|
||||
('allow_registration', 'true');
|
||||
|
||||
INSERT OR IGNORE INTO roles (name, description) VALUES
|
||||
('visitor', 'Read-only access to public content.'),
|
||||
('member', 'Standard user with posting and interaction rights.'),
|
||||
('moderator', 'Can manage content and users.'),
|
||||
('admin', 'Full administrative access to the application.');
|
||||
Loading…
Reference in New Issue
Block a user