-- nodes DROP TABLE IF EXISTS nodes CASCADE; CREATE TABLE nodes ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL UNIQUE, provider VARCHAR(255) NOT NULL, location VARCHAR(255) NOT NULL, ip_address VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP ); CREATE INDEX devices_provider_index ON nodes (provider); CREATE INDEX devices_location_index ON nodes (location); -- users DROP TABLE IF EXISTS users CASCADE; CREATE TABLE users ( id SERIAL PRIMARY KEY, password VARCHAR(255) NOT NULL, username VARCHAR(255) NOT NULL UNIQUE, email VARCHAR(255) NOT NULL UNIQUE, phone VARCHAR(255) NOT NULL UNIQUE, name VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP ); -- user_ips DROP TABLE IF EXISTS user_ips CASCADE; CREATE TABLE user_ips ( id SERIAL PRIMARY KEY, user_id int NOT NULL REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE, ip_address VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP ); CREATE INDEX user_ips_user_id_index ON user_ips (user_id); CREATE INDEX user_ips_ip_address_index ON user_ips (ip_address); -- channel DROP TABLE IF EXISTS channels CASCADE; CREATE TABLE channels ( id SERIAL PRIMARY KEY, user_id int NOT NULL REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE, node_id int NOT NULL REFERENCES nodes (id) -- ON UPDATE CASCADE -- ON DELETE SET NULL, -- 节点删除后,用户侧需要保留提取记录 node_port int, protocol VARCHAR(255), auth_ip bool, auth_pass bool, username VARCHAR(255), password VARCHAR(255), expiration TIMESTAMP NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP ); CREATE INDEX channel_user_id_index ON channels (user_id); CREATE INDEX channel_node_id_index ON channels (node_id); CREATE INDEX channel_username_index ON channels (username); -- ==================== -- 填充数据 -- ====================