blob: 2f66b7c359ddb183125dd921b0a5c660a3e4d219 [file] [log] [blame]
root4b6a76b2025-05-09 04:57:59 +00001-- 用户表
2CREATE TABLE `User` (
wht3278af22025-06-07 16:36:30 +08003 `user_id` VARCHAR(36) NOT NULL,
4 `email` VARCHAR(255) NOT NULL,
5 `username` VARCHAR(100) NOT NULL,
6 `password` VARCHAR(255) NOT NULL,
7 `gender` ENUM('m', 'f') NOT NULL,
8 `school` VARCHAR(255) DEFAULT NULL,
9 `avatar_url` VARCHAR(255) DEFAULT NULL,
10 `bio` TEXT,
11 `account_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0=正常,1=被ban',
12 `invite_left` INT NOT NULL DEFAULT 0,
13 PRIMARY KEY (`user_id`, `email`),
14 UNIQUE KEY `uniq_email` (`email`)
15) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +000016
17-- 用户邀请表
18CREATE TABLE `UserInvite` (
wht3278af22025-06-07 16:36:30 +080019 `user_id` VARCHAR(36) NOT NULL,
20 `inviter_email` VARCHAR(255) NOT NULL,
21 `inviter_registered` TINYINT(1) NOT NULL DEFAULT 0,
22 PRIMARY KEY (`user_id`, `inviter_email`),
23 CONSTRAINT `fk_ui_user` FOREIGN KEY (`user_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE
24) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +000025
26-- 用户 PT 信息表
27CREATE TABLE `UserPT` (
wht3278af22025-06-07 16:36:30 +080028 `user_id` VARCHAR(36) NOT NULL,
29 `magic` INT NOT NULL DEFAULT 0,
30 `uploaded` BIGINT NOT NULL DEFAULT 0,
31 `downloaded` BIGINT NOT NULL DEFAULT 0,
32 `ratio` DECIMAL(5, 2) NOT NULL DEFAULT 0.00,
33 `default_seed_path` VARCHAR(255) DEFAULT NULL,
34 `vip_downloads` INT NOT NULL DEFAULT 0,
35 PRIMARY KEY (`user_id`),
36 CONSTRAINT `fk_pt_user` FOREIGN KEY (`user_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE
37) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +000038
39-- 种子表
40CREATE TABLE `Seed` (
wht3278af22025-06-07 16:36:30 +080041 `seed_id` VARCHAR(64) NOT NULL,
42 `owner_user_id` VARCHAR(36) NOT NULL,
43 `fake_hits` INT NOT NULL DEFAULT 0,
44 `last_fake_check` DATETIME DEFAULT NULL,
45 `external_url` VARCHAR(255) DEFAULT NULL,
46 `title` VARCHAR(255) NOT NULL,
47 `subtitle` VARCHAR(255) DEFAULT NULL,
48 `size` VARCHAR(50) NOT NULL,
49 `tags` VARCHAR(255) DEFAULT NULL,
50 `popularity` INT NOT NULL DEFAULT 0,
51 PRIMARY KEY (`seed_id`),
52 CONSTRAINT `fk_seed_user` FOREIGN KEY (`owner_user_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE
53) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +000054
55-- 种子下载表
56CREATE TABLE `SeedDownload` (
wht3278af22025-06-07 16:36:30 +080057 `task_id` VARCHAR(64) NOT NULL,
58 `user_id` VARCHAR(36) NOT NULL,
59 `seed_id` VARCHAR(64) NOT NULL,
60 `download_start` DATETIME NOT NULL,
61 `download_end` DATETIME DEFAULT NULL,
62 `is_dedicated` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0=普通,1=专线',
63 `client_ip` VARCHAR(45) DEFAULT NULL,
64 PRIMARY KEY (`task_id`),
65 CONSTRAINT `fk_sd_user` FOREIGN KEY (`user_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE,
66 CONSTRAINT `fk_sd_seed` FOREIGN KEY (`seed_id`) REFERENCES `Seed` (`seed_id`) ON DELETE CASCADE
67) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +000068
69-- 缓存种子数据表
70CREATE TABLE `VipSeed` (
wht3278af22025-06-07 16:36:30 +080071 `seed_id` VARCHAR(64) NOT NULL,
72 `seeder_count` INT NOT NULL DEFAULT 0,
73 `reward_magic` INT NOT NULL DEFAULT 0,
74 `stop_caching` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0=继续缓存,1=不缓存',
75 PRIMARY KEY (`seed_id`),
76 CONSTRAINT `fk_vip_seed` FOREIGN KEY (`seed_id`) REFERENCES `Seed` (`seed_id`) ON DELETE CASCADE
77) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +000078
79-- 传输信息表
80CREATE TABLE `Transport` (
wht3278af22025-06-07 16:36:30 +080081 `task_id` VARCHAR(64) NOT NULL,
82 `uploader_id` VARCHAR(36) NOT NULL,
83 `downloader_id` VARCHAR(36) NOT NULL,
84 `seed_id` VARCHAR(64) NOT NULL,
85 `uploaded` BIGINT NOT NULL DEFAULT 0,
86 `downloaded` BIGINT NOT NULL DEFAULT 0,
87 `upload_peak` BIGINT NOT NULL DEFAULT 0,
88 `download_peak` BIGINT NOT NULL DEFAULT 0,
89 PRIMARY KEY (
90 `task_id`,
91 `uploader_id`,
92 `downloader_id`
93 ),
94 CONSTRAINT `fk_tr_user_up` FOREIGN KEY (`uploader_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE,
95 CONSTRAINT `fk_tr_user_down` FOREIGN KEY (`downloader_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE,
96 CONSTRAINT `fk_tr_seed` FOREIGN KEY (`seed_id`) REFERENCES `Seed` (`seed_id`) ON DELETE CASCADE
97) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +000098
99-- 求种任务表
100CREATE TABLE `BegSeed` (
wht3278af22025-06-07 16:36:30 +0800101 `beg_id` VARCHAR(64) NOT NULL,
102 `beg_count` INT NOT NULL DEFAULT 0,
103 `reward_magic` INT NOT NULL DEFAULT 0,
104 `deadline` DATETIME NOT NULL,
105 `has_match` TINYINT(1) NOT NULL DEFAULT 0,
106 PRIMARY KEY (`beg_id`)
107) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +0000108
109-- 提交悬赏任务表
110CREATE TABLE `SubmitSeed` (
wht3278af22025-06-07 16:36:30 +0800111 `beg_id` VARCHAR(64) NOT NULL,
112 `seed_id` VARCHAR(64) NOT NULL,
113 `votes` INT NOT NULL DEFAULT 0,
114 PRIMARY KEY (`beg_id`, `seed_id`),
115 CONSTRAINT `fk_ss_beg` FOREIGN KEY (`beg_id`) REFERENCES `BegSeed` (`beg_id`) ON DELETE CASCADE,
116 CONSTRAINT `fk_ss_seed` FOREIGN KEY (`seed_id`) REFERENCES `Seed` (`seed_id`) ON DELETE CASCADE
117) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +0000118
119-- 帖子表
120CREATE TABLE `Post` (
wht3278af22025-06-07 16:36:30 +0800121 `post_id` VARCHAR(64) NOT NULL,
122 `title` VARCHAR(255) NOT NULL,
123 `content` TEXT NOT NULL,
124 `author_id` VARCHAR(36) NOT NULL,
125 `created_at` DATETIME NOT NULL,
126 `reply_count` INT NOT NULL DEFAULT 0,
127 `view_count` INT NOT NULL DEFAULT 0,
128 PRIMARY KEY (`post_id`),
129 CONSTRAINT `fk_post_user` FOREIGN KEY (`author_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE
130) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +0000131
132-- 帖子回复表
133CREATE TABLE `PostReply` (
wht3278af22025-06-07 16:36:30 +0800134 `reply_id` VARCHAR(64) NOT NULL,
135 `post_id` VARCHAR(64) NOT NULL,
136 `content` TEXT NOT NULL,
137 `author_id` VARCHAR(36) NOT NULL,
138 `created_at` DATETIME NOT NULL,
139 PRIMARY KEY (`reply_id`),
140 CONSTRAINT `fk_pr_post` FOREIGN KEY (`post_id`) REFERENCES `Post` (`post_id`) ON DELETE CASCADE,
141 CONSTRAINT `fk_pr_user` FOREIGN KEY (`author_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE
142) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +0000143
144-- 公告表
145CREATE TABLE `Announcement` (
wht3278af22025-06-07 16:36:30 +0800146 `announce_id` VARCHAR(64) NOT NULL,
147 `content` TEXT NOT NULL,
148 `is_public` TINYINT(1) NOT NULL DEFAULT 0,
149 `tag` VARCHAR(100) DEFAULT NULL,
150 PRIMARY KEY (`announce_id`)
151) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +0000152
153-- 用户收藏夹表
154CREATE TABLE `UserFavorite` (
wht3278af22025-06-07 16:36:30 +0800155 `user_id` VARCHAR(36) NOT NULL,
156 `seed_id` VARCHAR(64) NOT NULL,
157 `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
158 PRIMARY KEY (`user_id`, `seed_id`),
159 CONSTRAINT `fk_uf_user` FOREIGN KEY (`user_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE,
160 CONSTRAINT `fk_uf_seed` FOREIGN KEY (`seed_id`) REFERENCES `Seed` (`seed_id`) ON DELETE CASCADE
161) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +0000162
163-- 用户迁移表
164CREATE TABLE `UserMigration` (
wht3278af22025-06-07 16:36:30 +0800165 `migration_id` VARCHAR(64) NOT NULL,
166 `user_id` VARCHAR(36) NOT NULL,
167 `application_url` VARCHAR(255) NOT NULL,
168 `approved` TINYINT(1) NOT NULL DEFAULT 0,
169 `pending_magic` INT NOT NULL DEFAULT 0,
170 `granted_magic` INT NOT NULL DEFAULT 0,
171 `pending_uploaded` BIGINT NOT NULL DEFAULT 0,
172 `granted_uploaded` BIGINT NOT NULL DEFAULT 0,
173 PRIMARY KEY (`migration_id`),
174 CONSTRAINT `fk_um_user` FOREIGN KEY (`user_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE
175) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
root4b6a76b2025-05-09 04:57:59 +0000176
9563036690ba52652025-05-11 16:18:15 +0800177-- 悬赏任务用户投票表
178CREATE TABLE `UserVotes` (
wht3278af22025-06-07 16:36:30 +0800179 `user_id` VARCHAR(36) NOT NULL,
180 `beg_id` VARCHAR(64) NOT NULL,
181 `seed_id` VARCHAR(64) NOT NULL,
182 `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
183 PRIMARY KEY (
184 `user_id`,
185 `beg_id`,
186 `seed_id`
187 ),
188 FOREIGN KEY (`user_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE,
189 FOREIGN KEY (`beg_id`) REFERENCES `BegSeed` (`beg_id`) ON DELETE CASCADE,
190 FOREIGN KEY (`seed_id`) REFERENCES `Seed` (`seed_id`) ON DELETE CASCADE
wht10563a82025-06-08 15:52:18 +0800191) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
192
rhje18c3f72025-06-08 00:27:01 +0800193<<<<<<< Updated upstream
194<<<<<<< Updated upstream
wht10563a82025-06-08 15:52:18 +0800195-- 种子促销表
196CREATE TABLE `SeedPromotion` (
197 `promotion_id` VARCHAR(64) NOT NULL,
198 `seed_id` VARCHAR(64) NOT NULL,
199 `start_time` DATETIME NOT NULL,
200 `end_time` DATETIME NOT NULL,
201 `discount` TINYINT NOT NULL DEFAULT 1 COMMENT '折扣率, 1表示无折扣',
202 PRIMARY KEY (`promotion_id`),
203 FOREIGN KEY (`seed_id`) REFERENCES `Seed` (`seed_id`) ON DELETE CASCADE
rhje18c3f72025-06-08 00:27:01 +0800204) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
205
206CREATE TABLE `BegInfo` (
207 `beg_id` varchar(64) NOT NULL,
208 `user_id` varchar(36) NOT NULL,
209 `Info` text NOT NULL,
210 PRIMARY KEY (`beg_id`),
211 CONSTRAINT `fk_BegInfo_BegSeed` FOREIGN KEY (`beg_id`) REFERENCES `BegSeed` (`beg_id`) ON DELETE CASCADE ON UPDATE CASCADE,
212 CONSTRAINT `fk_BegInfo_User` FOREIGN KEY (`user_id`) REFERENCES `User` (`user_id`) ON DELETE CASCADE
213
214) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci
215