尝试创建chat数据库,创建聊天记录数据表

This commit is contained in:
wangyifeng 2025-04-23 14:24:10 +08:00
parent b97219565e
commit 11bb78cc5e
2 changed files with 113 additions and 0 deletions

View File

@ -5,8 +5,21 @@ import lodash from 'lodash'
import { ref } from 'vue'
import { createGlobalState, useStorage } from '@vueuse/core'
import { uniStorage } from '@/utils/uniStorage.js'
import { initDatabase } from './sqlite'
export const useDialogueListStore = createGlobalState(() => {
const testDatabase = async () => {
// 初始化数据库
initDatabase()
// 查询所有数据
const result = await plus.sqlite.selectSql({
name: 'chat',
sql: 'SELECT * FROM talk_records'
})
console.warn('数据库内容:', result)
}
testDatabase()
const dialogueList = useStorage('dialogueList', [], uniStorage)
// const dialogueList = ref([])
const zpagingRef = ref()

100
src/store/modules/sqlite.js Normal file
View File

@ -0,0 +1,100 @@
// 初始化数据库
export const initDatabase = async () => {
try {
const isOpen = await plus.sqlite.isOpenDatabase({
name: 'chat',
path: '_doc/chat.db'
})
if (!isOpen) {
await plus.sqlite.openDatabase({
name: 'chat',
path: '_doc/chat.db'
})
await plus.sqlite.executeSql({
name: 'chat',
sql: `
CREATE TABLE IF NOT EXISTS talk_records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
msg_id TEXT NOT NULL,
sequence INTEGER NOT NULL,
talk_type INTEGER NOT NULL DEFAULT 1,
msg_type INTEGER NOT NULL DEFAULT 1,
user_id INTEGER NOT NULL DEFAULT 0,
receiver_id INTEGER NOT NULL DEFAULT 0,
is_revoke INTEGER NOT NULL DEFAULT 0,
is_mark INTEGER NOT NULL DEFAULT 0,
quote_id TEXT NOT NULL,
extra TEXT NOT NULL,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
biz_date TEXT
);
CREATE UNIQUE INDEX IF NOT EXISTS uk_msgid ON talk_records(msg_id);
CREATE UNIQUE INDEX IF NOT EXISTS idx_user_id_receiver_id_sequence ON talk_records(user_id, receiver_id, sequence);
CREATE INDEX IF NOT EXISTS idx_receiver_id ON talk_records(receiver_id);
CREATE INDEX IF NOT EXISTS idx_created_at ON talk_records(created_at);
CREATE INDEX IF NOT EXISTS idx_updated_at ON talk_records(updated_at);
CREATE INDEX IF NOT EXISTS idx_biz_date ON talk_records(biz_date);
`
})
}
return true
} catch (error) {
console.error('数据库初始化失败:', error)
return false
}
}
// 添加消息记录
export const sqlAddRecord = async (message) => {
try {
await plus.sqlite.executeSql({
name: 'chat',
sql: `INSERT INTO talk_records (
msg_id, sequence, talk_type, msg_type, user_id, receiver_id,
is_revoke, is_mark, quote_id, extra, created_at, updated_at, biz_date
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
args: [
message.msg_id,
message.sequence,
message.talk_type,
message.msg_type,
message.user_id,
message.receiver_id,
message.is_revoke || 0,
message.is_mark || 0,
message.quote_id || '',
JSON.stringify(message.extra),
message.created_at,
message.updated_at,
message.biz_date
]
})
return true
} catch (error) {
console.error('添加消息失败:', error)
return false
}
}
// 查询消息记录
export const sqlGetRecord = async (receiverId, page = 1, pageSize = 20) => {
try {
const result = await plus.sqlite.selectSql({
name: 'chat',
sql: `SELECT * FROM talk_records
WHERE receiver_id = ?
ORDER BY sequence DESC
LIMIT ? OFFSET ?`,
args: [receiverId, pageSize, (page - 1) * pageSize]
})
return result
} catch (error) {
console.error('查询消息失败:', error)
return []
}
}