尝试创建chat数据库,创建聊天记录数据表
This commit is contained in:
parent
b97219565e
commit
11bb78cc5e
@ -5,8 +5,21 @@ import lodash from 'lodash'
|
|||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import { createGlobalState, useStorage } from '@vueuse/core'
|
import { createGlobalState, useStorage } from '@vueuse/core'
|
||||||
import { uniStorage } from '@/utils/uniStorage.js'
|
import { uniStorage } from '@/utils/uniStorage.js'
|
||||||
|
import { initDatabase } from './sqlite'
|
||||||
|
|
||||||
export const useDialogueListStore = createGlobalState(() => {
|
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 = useStorage('dialogueList', [], uniStorage)
|
||||||
// const dialogueList = ref([])
|
// const dialogueList = ref([])
|
||||||
const zpagingRef = ref()
|
const zpagingRef = ref()
|
||||||
|
100
src/store/modules/sqlite.js
Normal file
100
src/store/modules/sqlite.js
Normal 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 []
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user