From 163e9d97c27944575079e6f8ab20e7e7dca0dda6 Mon Sep 17 00:00:00 2001 From: CrescentLeaf Date: Thu, 14 Aug 2025 12:04:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20Chat.ts=20=E4=B8=AD?= =?UTF-8?q?=E5=AF=B9=20table=5Fname=20=E7=9A=84=E5=BC=95=E7=94=A8,=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=20Settings=20=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/Chat.ts | 64 +++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/src/data/Chat.ts b/src/data/Chat.ts index a908629..96e9ad7 100644 --- a/src/data/Chat.ts +++ b/src/data/Chat.ts @@ -1,5 +1,5 @@ import { DatabaseSync } from "node:sqlite" -import { Buffer } from "node:buffer" +// import { Buffer } from "node:buffer" import path from 'node:path' import config from '../config.ts' @@ -25,40 +25,58 @@ export default class Chat { return db } - private static findAllByCondition(condition: string, ...args: unknown[]): UserBean[] { - return database.prepare(`SELECT count, id FROM ${User.table_name} WHERE ${condition}`).all(...args) + private static findAllByCondition(condition: string, ...args: unknown[]): ChatBean[] { + return database.prepare(`SELECT * FROM ${Chat.table_name} WHERE ${condition}`).all(...args) } - + static findById(id: string): Chat { + const beans = Chat.findAllBeansByCondition('id = ?', id) + if (beans.length == 0) + throw new Error(`找不到 id 为 ${id} 的 Chat`) + else if (beans.length > 1) + console.error(chalk.red(`警告: 查询 id = ${id} 时, 查询到多个相同 ID 的 Chat`)) + return new Chat(beans[0]) + } declare bean: ChatBean constructor(bean: ChatBean) { this.bean = bean } private setAttr(key: string, value: unknown): void { - User.database.prepare(`UPDATE ${User.table_name} SET ${key} = ? WHERE id = ?`).run(value, this.bean.id) + User.database.prepare(`UPDATE ${Chat.table_name} SET ${key} = ? WHERE id = ?`).run(value, this.bean.id) this.bean[key] = value } - getUserName(): string { - return this.bean.username - } - setUserName(userName: string): void { - this.setAttr("username", userName) - } - getNickName(): string { - return this.bean.nickname - } - setNickName(nickName: string): void { - this.setAttr("nickname", nickName) - } - getAvatar(): Uint8Array { - return this.bean.avatar - } - setAvatar(avatar: Buffer): void { - this.setAttr("avatar", avatar) + + getSettings(): Chat.Settings { + return new Settings(JSON.parse(this.bean.settings)) } - getContacts() { + static Settings = class { + declare bean: Chat.SettingsBean + declare chat: Chat + constructor(chat: Chat, bean: Chat.SettingsBean) { + this.bean = bean + this.chat = chat + for (const i of [ + + ]) { + this["set" + i.substring(0, 1).toUpperCase() + i.substring(1)] = (v: unknown) => { + this.set(i, v) + } + } + } + + set(key: string, value: unknown) { + this.bean[key] = value + } + get(key: string) { + return this.bean[key] + } + apply() { + this.chat.setAttr("settings", JSON.stringify(this.bean)) + } + } + static SettingsBean = class { } }