Initial open source release
This commit is contained in:
commit
74992e893f
377 changed files with 118084 additions and 0 deletions
48
deploy/migrations/0001_init.up.sql
Normal file
48
deploy/migrations/0001_init.up.sql
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
-- 0001_init: telesrv 第一阶段持久化 schema(auth_key / user / authorization)。
|
||||
--
|
||||
-- 协议产物(auth_keys)与业务产物(authorizations)分表,遵循协议/业务隔离边界。
|
||||
|
||||
-- MTProto auth key:密钥交换产物。server 重启后据此解密客户端加密包,避免客户端重建密钥。
|
||||
CREATE TABLE IF NOT EXISTS auth_keys (
|
||||
auth_key_id BIGINT PRIMARY KEY, -- SHA1(auth_key) 低 64 位,小端解释为 int64
|
||||
body BYTEA NOT NULL, -- 256 字节 auth key 原文
|
||||
server_salt BIGINT NOT NULL, -- 密钥交换产出的初始 server salt
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- 用户:第一阶段仅登录链路必须字段。access_hash 为任何 InputUser 校验所必须,不可省。
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
-- 普通用户 ID 从 2026-06-01 00:00:00 Asia/Shanghai 的 Unix 秒级时间戳开始。
|
||||
-- 777000 等系统兼容账号显式插入,低于该区间。
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH 1780243200) PRIMARY KEY,
|
||||
access_hash BIGINT NOT NULL,
|
||||
phone VARCHAR(32) NOT NULL,
|
||||
first_name VARCHAR(64) NOT NULL DEFAULT '',
|
||||
last_name VARCHAR(64) NOT NULL DEFAULT '',
|
||||
username VARCHAR(64) NOT NULL DEFAULT '',
|
||||
country_code VARCHAR(8) NOT NULL DEFAULT '',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
CONSTRAINT users_phone_key UNIQUE (phone)
|
||||
);
|
||||
|
||||
-- 授权:auth_key ↔ user 绑定 + initConnection 带来的设备信息。
|
||||
-- 这是 auth.signIn 后绑定关系与 account.getAuthorizations 的权威来源;
|
||||
-- 也是 rpc.ClientInfo(device/app/layer)的持久化归宿。
|
||||
CREATE TABLE IF NOT EXISTS authorizations (
|
||||
auth_key_id BIGINT PRIMARY KEY REFERENCES auth_keys(auth_key_id) ON DELETE CASCADE,
|
||||
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
hash BIGINT NOT NULL DEFAULT 0, -- getAuthorizations 列表项 hash
|
||||
layer INT NOT NULL DEFAULT 0,
|
||||
device_model VARCHAR(128) NOT NULL DEFAULT '',
|
||||
platform VARCHAR(64) NOT NULL DEFAULT '',
|
||||
system_version VARCHAR(64) NOT NULL DEFAULT '',
|
||||
api_id INT NOT NULL DEFAULT 0,
|
||||
app_version VARCHAR(64) NOT NULL DEFAULT '',
|
||||
ip VARCHAR(64) NOT NULL DEFAULT '',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
active_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- 按 user 反查授权(PushToUser / getAuthorizations)。
|
||||
CREATE INDEX IF NOT EXISTS authorizations_user_id_idx ON authorizations (user_id);
|
||||
Loading…
Add table
Add a link
Reference in a new issue