1+ CREATE EXTENSION IF NOT EXISTS " pgcrypto" ;
2+
3+ CREATE TABLE IF NOT EXISTS users
4+ (
5+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
6+ google_id VARCHAR (255 ) NOT NULL UNIQUE,
7+ email VARCHAR (255 ) NOT NULL UNIQUE,
8+ full_name VARCHAR (255 ) NOT NULL ,
9+ reputation INT NOT NULL DEFAULT 0 ,
10+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
11+ picture TEXT NOT NULL DEFAULT ' https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg'
12+ );
13+
14+
15+ CREATE TABLE IF NOT EXISTS notes
16+ (
17+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
18+ course_name VARCHAR (255 ) NOT NULL ,
19+ course_code VARCHAR (50 ) NOT NULL ,
20+ description TEXT ,
21+ professor_names TEXT [],
22+ tags TEXT [] NOT NULL DEFAULT ' {}' ,
23+ is_public BOOLEAN NOT NULL DEFAULT TRUE,
24+ has_preview_image BOOLEAN NOT NULL DEFAULT FALSE,
25+ uploader_user_id UUID NOT NULL REFERENCES users (id) ON DELETE CASCADE ,
26+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
27+ downloads INT NOT NULL DEFAULT 0
28+ );
29+
30+
31+ CREATE TABLE IF NOT EXISTS votes
32+ (
33+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
34+ user_id UUID NOT NULL REFERENCES users (id) ON DELETE CASCADE ,
35+ note_id UUID NOT NULL REFERENCES notes (id) ON DELETE CASCADE ,
36+ is_upvote BOOLEAN NOT NULL ,
37+ created_at TIMESTAMPTZ DEFAULT NOW(),
38+ UNIQUE (user_id, note_id)
39+ );
0 commit comments