40 lines
948 B
JavaScript
40 lines
948 B
JavaScript
const sqlite3 = require('sqlite3').verbose();
|
|
const path = require('path');
|
|
|
|
const dbPath = path.resolve(__dirname, 'chat.db');
|
|
const db = new sqlite3.Database(dbPath);
|
|
|
|
// 用户表
|
|
db.run(`CREATE TABLE IF NOT EXISTS users (
|
|
id TEXT PRIMARY KEY,
|
|
token TEXT NOT NULL,
|
|
last_active DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
)`);
|
|
|
|
// 消息表
|
|
db.run(`CREATE TABLE IF NOT EXISTS messages (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
sender_id TEXT NOT NULL,
|
|
receiver_id TEXT,
|
|
group_id TEXT,
|
|
content TEXT NOT NULL,
|
|
is_withdrawn BOOLEAN DEFAULT 0,
|
|
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
)`);
|
|
|
|
// 群组表
|
|
db.run(`CREATE TABLE IF NOT EXISTS groups (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL
|
|
)`);
|
|
|
|
// 群组成员表
|
|
db.run(`CREATE TABLE IF NOT EXISTS group_members (
|
|
group_id TEXT NOT NULL,
|
|
user_id TEXT NOT NULL,
|
|
FOREIGN KEY(group_id) REFERENCES groups(id),
|
|
FOREIGN KEY(user_id) REFERENCES users(id)
|
|
)`);
|
|
|
|
module.exports = db;
|