-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmy.sql
More file actions
95 lines (86 loc) · 3.92 KB
/
my.sql
File metadata and controls
95 lines (86 loc) · 3.92 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
91
92
93
94
95
Вот полный список всех SQL-запросов, которые мы использовали в этом чате для создания базы данных TweeX. Я собрал их в хронологическом порядке, с комментариями, чтобы было удобно скопировать и выполнить целиком (например, в phpMyAdmin).
Скопируй весь блок ниже и выполни в своей базе 123234 — это создаст всю структуру с нуля.
SQL
-- =============================================
-- База данных TweeX — Полная структура (20 декабря 2025)
-- =============================================
-- Таблица пользователей
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
display_name VARCHAR(100) DEFAULT '',
bio TEXT NULL DEFAULT NULL,
avatar VARCHAR(255) DEFAULT 'default_avatar.png',
is_verificated TINYINT(1) DEFAULT 0,
is_official TINYINT(1) DEFAULT 0,
is_admin TINYINT(1) DEFAULT 0,
is_banned TINYINT(1) DEFAULT 0,
ban_reason TEXT NULL, -- Причина бана
ban_until DATETIME NULL, -- Срок бана (NULL = навсегда)
ban_appeal TEXT NULL, -- Текст обжалования бана
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Таблица твитов
CREATE TABLE IF NOT EXISTS tweets (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
content TEXT NOT NULL,
is_nsfw TINYINT(1) DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Таблица комментариев (реплаев)
CREATE TABLE IF NOT EXISTS comments (
id INT AUTO_INCREMENT PRIMARY KEY,
tweet_id INT NOT NULL,
user_id INT NOT NULL,
content TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tweet_id) REFERENCES tweets(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Таблица личных сообщений (чатов)
CREATE TABLE IF NOT EXISTS messages (
id INT AUTO_INCREMENT PRIMARY KEY,
from_user_id INT NOT NULL,
to_user_id INT NOT NULL,
content TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
is_read TINYINT(1) DEFAULT 0,
FOREIGN KEY (from_user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (to_user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Таблица заявок на верификацию/official
CREATE TABLE IF NOT EXISTS verification_requests (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
type ENUM('verificated', 'official') NOT NULL,
reason TEXT,
status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Таблица лайков твитов
CREATE TABLE IF NOT EXISTS tweet_likes (
user_id INT NOT NULL,
tweet_id INT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id, tweet_id),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (tweet_id) REFERENCES tweets(id) ON DELETE CASCADE
);
-- Создание аккаунта itry (admin + verificated + official)
-- Пароль: YKpp123 (хэш сгенерирован через password_hash)
INSERT INTO users (
username,
password,
display_name,
is_verificated,
is_official,
is_admin
) ON DUPLICATE KEY UPDATE
display_name = 'Itry',
is_verificated = 1,
is_official = 1,
is_admin = 1;