-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquery.sql
More file actions
90 lines (72 loc) · 2.33 KB
/
Copy pathquery.sql
File metadata and controls
90 lines (72 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
CREATE TABLE
IF NOT EXISTS categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(50) UNIQUE,
icon TEXT UNIQUE
);
CREATE TABLE
IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
email TEXT NOT NULL UNIQUE,
password TEXT NOT NULL,
session TEXT DEFAULT NULL
);
CREATE TABLE
IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username VARCHAR(30),
title VARCHAR(255),
description TEXT,
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
userID INTEGER NOT NULL,
image_path TEXT,
FOREIGN KEY (userID) REFERENCES users (id) ON DELETE CASCADE
);
CREATE TABLE
IF NOT EXISTS comments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
postID INTEGER,
username VARCHAR(30),
comment TEXT,
time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (postID) REFERENCES posts (id) ON DELETE CASCADE
);
CREATE TABLE
IF NOT EXISTS likes (
userID INTEGER,
postID INTEGER,
value VARCHAR(2),
PRIMARY KEY (userID, postID),
FOREIGN KEY (userID) REFERENCES users (id) ON DELETE CASCADE,
FOREIGN KEY (postID) REFERENCES posts (id) ON DELETE CASCADE
);
CREATE TABLE
IF NOT EXISTS categories_post (
categoryID INTEGER,
postID INTEGER,
PRIMARY KEY (categoryID, postID),
FOREIGN KEY (categoryID) REFERENCES categories (id) ON DELETE CASCADE,
FOREIGN KEY (postID) REFERENCES posts (id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS commentsLikes (
userID INTEGER,
commentID INTEGER,
value VARCHAR(2),
PRIMARY KEY (userID, commentID),
FOREIGN KEY (userID) REFERENCES users (id) ON DELETE CASCADE,
FOREIGN KEY (commentID) REFERENCES comments (id) ON DELETE CASCADE
);
CREATE TRIGGER IF NOT EXISTS post_cleanup_trigger
AFTER DELETE ON posts
BEGIN
DELETE FROM commentsLikes WHERE commentID IN (SELECT id FROM comments WHERE postID = OLD.id);
DELETE FROM comments WHERE postID = OLD.id;
DELETE FROM likes WHERE postID = OLD.id;
DELETE FROM categories_post WHERE postID = OLD.id;
END;
CREATE TRIGGER IF NOT EXISTS user_cleanup_trigger
AFTER DELETE ON users
BEGIN
DELETE FROM posts WHERE userID = OLD.id;
END;