mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-16 13:27:08 +00:00
fix: sqlite api
This commit is contained in:
parent
0c602d6cb3
commit
64c77877ac
6 changed files with 86 additions and 0 deletions
|
|
@ -249,7 +249,16 @@ export class SQLiteChannelStorage extends ChaiteStorage {
|
||||||
*/
|
*/
|
||||||
async setItem (id, channel) {
|
async setItem (id, channel) {
|
||||||
await this.ensureInitialized()
|
await this.ensureInitialized()
|
||||||
|
if (!id) {
|
||||||
|
id = this._generateId()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加上时间戳
|
||||||
|
if (!channel.createdAt) {
|
||||||
|
channel.createdAt = new Date().toISOString()
|
||||||
|
}
|
||||||
|
|
||||||
|
channel.updatedAt = new Date().toISOString()
|
||||||
// 转换为数据库记录
|
// 转换为数据库记录
|
||||||
const record = this._channelToRecord(channel)
|
const record = this._channelToRecord(channel)
|
||||||
record.id = id // 确保ID是指定的ID
|
record.id = id // 确保ID是指定的ID
|
||||||
|
|
|
||||||
|
|
@ -221,7 +221,16 @@ export class SQLiteChatPresetStorage extends ChaiteStorage {
|
||||||
*/
|
*/
|
||||||
async setItem (id, preset) {
|
async setItem (id, preset) {
|
||||||
await this.ensureInitialized()
|
await this.ensureInitialized()
|
||||||
|
if (!id) {
|
||||||
|
id = this._generateId()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加上时间戳
|
||||||
|
if (!preset.createdAt) {
|
||||||
|
preset.createdAt = new Date().toISOString()
|
||||||
|
}
|
||||||
|
|
||||||
|
preset.updatedAt = new Date().toISOString()
|
||||||
// 转换为数据库记录
|
// 转换为数据库记录
|
||||||
const record = this._presetToRecord(preset)
|
const record = this._presetToRecord(preset)
|
||||||
record.id = id // 确保ID是指定的ID
|
record.id = id // 确保ID是指定的ID
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,45 @@ export async function checkMigrate () {
|
||||||
|
|
||||||
const dbPath = path.join(dataDir, 'data.db')
|
const dbPath = path.join(dataDir, 'data.db')
|
||||||
|
|
||||||
|
// 删除所有id为空的行
|
||||||
|
logger.debug('开始修复id为空的数据行...')
|
||||||
|
const collectionsToClean = ['channel', 'chat_presets', 'tools', 'processors']
|
||||||
|
for (const collectionName of collectionsToClean) {
|
||||||
|
try {
|
||||||
|
const collection = ChatGPTStorage.collection(collectionName)
|
||||||
|
const allItems = await collection.findAll()
|
||||||
|
const invalidItems = allItems.filter(item => !item.id)
|
||||||
|
|
||||||
|
if (invalidItems.length > 0) {
|
||||||
|
logger.info(`在${collectionName}中发现${invalidItems.length}条id为空的数据,正在修复...`)
|
||||||
|
|
||||||
|
for (const item of invalidItems) {
|
||||||
|
// 生成一个新的唯一ID
|
||||||
|
const newId = `generated_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`
|
||||||
|
// 更新时间戳
|
||||||
|
const now = new Date().toISOString()
|
||||||
|
|
||||||
|
// 更新项目
|
||||||
|
item.id = newId
|
||||||
|
item.createdAt = now
|
||||||
|
item.updatedAt = now
|
||||||
|
|
||||||
|
// 保存更新后的项目
|
||||||
|
await collection.set(newId, item)
|
||||||
|
|
||||||
|
// 移除旧的无ID项
|
||||||
|
await collection.remove(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.info(`已成功修复${collectionName}中的${invalidItems.length}条无效数据`)
|
||||||
|
} else {
|
||||||
|
logger.debug(`${collectionName}中没有发现id为空的数据`)
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
logger.error(`修复${collectionName}中id为空的数据时出错:`, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 定义要检查的存储对
|
// 定义要检查的存储对
|
||||||
const storagePairs = [
|
const storagePairs = [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -185,7 +185,16 @@ export class SQLiteProcessorsStorage extends ChaiteStorage {
|
||||||
*/
|
*/
|
||||||
async setItem (id, processor) {
|
async setItem (id, processor) {
|
||||||
await this.ensureInitialized()
|
await this.ensureInitialized()
|
||||||
|
if (!id) {
|
||||||
|
id = this._generateId()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加上时间戳
|
||||||
|
if (!processor.createdAt) {
|
||||||
|
processor.createdAt = new Date().toISOString()
|
||||||
|
}
|
||||||
|
|
||||||
|
processor.updatedAt = new Date().toISOString()
|
||||||
// 转换为数据库记录
|
// 转换为数据库记录
|
||||||
const record = this._processorToRecord(processor)
|
const record = this._processorToRecord(processor)
|
||||||
record.id = id // 确保ID是指定的ID
|
record.id = id // 确保ID是指定的ID
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,16 @@ export class SQLiteToolsGroupStorage extends ChaiteStorage {
|
||||||
*/
|
*/
|
||||||
async setItem (id, data) {
|
async setItem (id, data) {
|
||||||
await this.ensureInitialized()
|
await this.ensureInitialized()
|
||||||
|
if (!id) {
|
||||||
|
id = this._generateId()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加上时间戳
|
||||||
|
if (!data.createdAt) {
|
||||||
|
data.createdAt = new Date().toISOString()
|
||||||
|
}
|
||||||
|
|
||||||
|
data.updatedAt = new Date().toISOString()
|
||||||
// 提取工具组数据
|
// 提取工具组数据
|
||||||
const { name, description, tools } = data
|
const { name, description, tools } = data
|
||||||
const updatedAt = Date.now()
|
const updatedAt = Date.now()
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,17 @@ export class SQLiteToolsStorage extends ChaiteStorage {
|
||||||
async setItem (id, tool) {
|
async setItem (id, tool) {
|
||||||
await this.ensureInitialized()
|
await this.ensureInitialized()
|
||||||
|
|
||||||
|
if (!id) {
|
||||||
|
id = this._generateId()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加上时间戳
|
||||||
|
if (!tool.createdAt) {
|
||||||
|
tool.createdAt = new Date().toISOString()
|
||||||
|
}
|
||||||
|
|
||||||
|
tool.updatedAt = new Date().toISOString()
|
||||||
|
|
||||||
// 转换为数据库记录
|
// 转换为数据库记录
|
||||||
const record = this._toolToRecord(tool)
|
const record = this._toolToRecord(tool)
|
||||||
record.id = id // 确保ID是指定的ID
|
record.id = id // 确保ID是指定的ID
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue