Refactor
This commit is contained in:
@@ -25,6 +25,10 @@ func InitDB() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
if _, err = DB.Exec("PRAGMA foreign_keys = ON;"); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// make users table
|
||||
userTable := `
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
@@ -43,7 +47,7 @@ func InitDB() {
|
||||
id TEXT PRIMARY KEY,
|
||||
user_id INTEGER NOT NULL,
|
||||
expires_at DATETIME NOT NULL,
|
||||
FOREIGN KEY(user_id) REFERENCES users(id)
|
||||
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);`
|
||||
_, err = DB.Exec(sessionTable)
|
||||
if err != nil {
|
||||
@@ -60,7 +64,7 @@ func InitDB() {
|
||||
owner_id INTEGER NOT NULL,
|
||||
created_at DATETIME NOT NULL,
|
||||
active_story_id INTEGER,
|
||||
FOREIGN KEY(owner_id) REFERENCES users(id)
|
||||
FOREIGN KEY(owner_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);`
|
||||
_, err = DB.Exec(roomTable)
|
||||
if err != nil {
|
||||
@@ -74,8 +78,8 @@ func InitDB() {
|
||||
user_id INTEGER NOT NULL,
|
||||
joined_at DATETIME NOT NULL,
|
||||
PRIMARY KEY (room_id, user_id),
|
||||
FOREIGN KEY(room_id) REFERENCES rooms(id),
|
||||
FOREIGN KEY(user_id) REFERENCES users(id)
|
||||
FOREIGN KEY(room_id) REFERENCES rooms(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);`
|
||||
_, err = DB.Exec(memberTable)
|
||||
if err != nil {
|
||||
@@ -90,7 +94,7 @@ func InitDB() {
|
||||
title TEXT NOT NULL,
|
||||
points INTEGER,
|
||||
voted INTEGER NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY(room_id) REFERENCES rooms(id)
|
||||
FOREIGN KEY(room_id) REFERENCES rooms(id) ON DELETE CASCADE
|
||||
);`
|
||||
_, err = DB.Exec(storyTable)
|
||||
if err != nil {
|
||||
@@ -104,11 +108,27 @@ func InitDB() {
|
||||
user_id INTEGER NOT NULL,
|
||||
value TEXT NOT NULL,
|
||||
PRIMARY KEY (story_id, user_id),
|
||||
FOREIGN KEY(story_id) REFERENCES stories(id),
|
||||
FOREIGN KEY(user_id) REFERENCES users(id)
|
||||
FOREIGN KEY(story_id) REFERENCES stories(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);`
|
||||
_, err = DB.Exec(voteTable)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
indexes := []string{
|
||||
"CREATE INDEX IF NOT EXISTS idx_sessions_user_expires ON sessions(user_id, expires_at);",
|
||||
"CREATE INDEX IF NOT EXISTS idx_sessions_expires ON sessions(expires_at);",
|
||||
"CREATE INDEX IF NOT EXISTS idx_rooms_owner ON rooms(owner_id);",
|
||||
"CREATE INDEX IF NOT EXISTS idx_room_members_room ON room_members(room_id);",
|
||||
"CREATE INDEX IF NOT EXISTS idx_room_members_user ON room_members(user_id);",
|
||||
"CREATE INDEX IF NOT EXISTS idx_stories_room ON stories(room_id);",
|
||||
"CREATE INDEX IF NOT EXISTS idx_votes_story ON votes(story_id);",
|
||||
"CREATE INDEX IF NOT EXISTS idx_votes_user ON votes(user_id);",
|
||||
}
|
||||
for _, stmt := range indexes {
|
||||
if _, err = DB.Exec(stmt); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user