blob: e88ff07070929796f3f6059d91ed94832eb871e3 [file] [log] [blame]
wuchimedese5722e32025-04-13 17:38:50 +08001CREATE DATABASE IF NOT EXISTS g8backend;
2USE g8backend;
3
wuchimedes079c1632025-04-02 22:01:20 +08004CREATE TABLE IF NOT EXISTS `users` (
5 user_id INT AUTO_INCREMENT PRIMARY KEY,
6 user_name VARCHAR(255) NOT NULL,
7 password VARCHAR(255) NOT NULL,
wuchimedesa0649c62025-04-05 15:53:39 +08008 email VARCHAR(255) NOT NULL UNIQUE,
9 passkey VARCHAR(255) NOT NULL UNIQUE
wuchimedes079c1632025-04-02 22:01:20 +080010);
11
12CREATE TABLE IF NOT EXISTS `torrents` (
13 torrent_id INT AUTO_INCREMENT PRIMARY KEY,
14 user_id INT NOT NULL,
15 torrent_name VARCHAR(255) NOT NULL,
wuchimedes223bfab2025-04-04 17:16:05 +080016 info_hash BINARY(20) NOT NULL,
wuchimedes079c1632025-04-02 22:01:20 +080017 file_size FLOAT NOT NULL,
wuchimedes079c1632025-04-02 22:01:20 +080018 FOREIGN KEY (user_id) REFERENCES users(user_id)
19);
20
21CREATE TABLE IF NOT EXISTS `peers` (
wuchimedesa0649c62025-04-05 15:53:39 +080022 passkey VARCHAR(255) NOT NULL,
wuchimedes223bfab2025-04-04 17:16:05 +080023 info_hash BINARY(20) NOT NULL,
24 peer_id VARCHAR(20) NOT NULL,
wuchimedes079c1632025-04-02 22:01:20 +080025 ip_address VARCHAR(128) NOT NULL,
26 port INT NOT NULL,
27 uploaded FLOAT NOT NULL,
28 downloaded FLOAT NOT NULL,
wuchimedes223bfab2025-04-04 17:16:05 +080029 last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
wuchimedesa0649c62025-04-05 15:53:39 +080030 FOREIGN KEY (passkey) REFERENCES users(passkey),
31 PRIMARY KEY (passkey, info_hash, peer_id)
wuchimedes079c1632025-04-02 22:01:20 +080032);
wuchimedese5722e32025-04-13 17:38:50 +080033
34CREATE TABLE IF NOT EXISTS `posts` (
35 post_id INT AUTO_INCREMENT PRIMARY KEY,
36 user_id INT NOT NULL,
37 post_title VARCHAR(255) NOT NULL,
38 post_content TEXT NOT NULL,
39 post_type ENUM('resource', 'discussion') NOT NULL,
40 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
41 FOREIGN KEY (user_id) REFERENCES users(user_id)
42);
43
44CREATE TABLE IF NOT EXISTS `post_likes` (
45 user_id INT NOT NULL,
46 post_id INT NOT NULL,
47 FOREIGN KEY (user_id) REFERENCES users(user_id),
48 FOREIGN KEY (post_id) REFERENCES posts(post_id),
49 PRIMARY KEY (user_id, post_id)
50);