FreeKill/server/init.sql
notify 183dae9ae1
Enhancement2 (#275)
- TODO: 好友系统,目前在画饼状态
- 修老朱然bug,现在可以在cleaner环节胆守
- 修卢弈死了手谈不消失(UI)
- 修重连时丢失房主信息
2023-10-07 23:00:25 +08:00

74 lines
1.5 KiB
SQL

-- SPDX-License-Identifier: GPL-3.0-or-later
-- 用户基本信息
CREATE TABLE IF NOT EXISTS userinfo (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(255),
password CHAR(64),
salt CHAR(8),
avatar VARCHAR(64),
lastLoginIp VARCHAR(64),
banned BOOLEAN
);
CREATE TABLE IF NOT EXISTS banip (
ip VARCHAR(64)
);
CREATE TABLE IF NOT EXISTS uuidinfo (
id INTEGER PRIMARY KEY,
uuid VARCHAR(32)
);
CREATE TABLE IF NOT EXISTS banuuid (
uuid VARCHAR(32)
);
CREATE TABLE IF NOT EXISTS friendinfo (
id1 INTEGER,
id2 INTEGER,
reltype INTEGER -- 1=好友 2=黑名单
);
-- 胜率相关
CREATE TABLE IF NOT EXISTS winRate (
id INTEGER,
general VARCHAR(20),
mode VARCHAR(16),
win INTEGER,
lose INTEGER,
draw INTEGER,
PRIMARY KEY (id, general, mode)
);
CREATE TABLE IF NOT EXISTS runRate (
id INTEGER,
mode VARCHAR(16),
run INTEGER,
PRIMARY KEY (id, mode)
);
CREATE VIEW IF NOT EXISTS playerWinRate AS
SELECT winRate.id, name, mode,
SUM(win) AS 'win',
SUM(lose) AS 'lose',
SUM(draw) AS 'draw',
SUM(win + lose + draw) AS 'total',
ROUND(SUM(win) * 1.0 / (SUM(win + lose + draw) * 1.0) * 100, 2)
AS 'winRate'
FROM winRate, userinfo
WHERE winRate.id = userinfo.id
GROUP BY winRate.id, mode;
CREATE VIEW IF NOT EXISTS generalWinRate AS
SELECT general, mode,
SUM(win) AS 'win',
SUM(lose) AS 'lose',
SUM(draw) AS 'draw',
SUM(win + lose + draw) AS 'total',
ROUND(SUM(win) * 1.0 / (SUM(win + lose + draw) * 1.0) * 100, 2)
AS 'winRate'
FROM winRate GROUP BY general, mode;