mirror of
https://github.com/EthanMarti/infio-copilot.git
synced 2026-05-14 11:21:09 +00:00
update, use json database replace pglite, for sync
This commit is contained in:
63
src/database/json/utils.ts
Normal file
63
src/database/json/utils.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import { App } from 'obsidian'
|
||||
|
||||
import { ChatMessage, SerializedChatMessage } from '../../types/chat'
|
||||
import { Mentionable } from '../../types/mentionable'
|
||||
import {
|
||||
deserializeMentionable,
|
||||
serializeMentionable,
|
||||
} from '../../utils/mentionable'
|
||||
|
||||
|
||||
export const serializeChatMessage = (message: ChatMessage): SerializedChatMessage => {
|
||||
switch (message.role) {
|
||||
case 'user':
|
||||
return {
|
||||
role: 'user',
|
||||
applyStatus: message.applyStatus,
|
||||
content: message.content,
|
||||
promptContent: message.promptContent,
|
||||
id: message.id,
|
||||
mentionables: message.mentionables.map(serializeMentionable),
|
||||
similaritySearchResults: message.similaritySearchResults,
|
||||
}
|
||||
case 'assistant':
|
||||
return {
|
||||
role: 'assistant',
|
||||
applyStatus: message.applyStatus,
|
||||
content: message.content,
|
||||
reasoningContent: message.reasoningContent,
|
||||
id: message.id,
|
||||
metadata: message.metadata,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const deserializeChatMessage = (
|
||||
message: SerializedChatMessage,
|
||||
app: App,
|
||||
): ChatMessage => {
|
||||
switch (message.role) {
|
||||
case 'user': {
|
||||
return {
|
||||
role: 'user',
|
||||
applyStatus: message.applyStatus,
|
||||
content: message.content,
|
||||
promptContent: message.promptContent,
|
||||
id: message.id,
|
||||
mentionables: message.mentionables
|
||||
.map((m) => deserializeMentionable(m, app))
|
||||
.filter((m): m is Mentionable => m !== null),
|
||||
similaritySearchResults: message.similaritySearchResults,
|
||||
}
|
||||
}
|
||||
case 'assistant':
|
||||
return {
|
||||
role: 'assistant',
|
||||
applyStatus: message.applyStatus,
|
||||
content: message.content,
|
||||
reasoningContent: message.reasoningContent,
|
||||
id: message.id,
|
||||
metadata: message.metadata,
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user