mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-15 00:17:28 +02:00
57 lines
2.0 KiB
Go
57 lines
2.0 KiB
Go
package database
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func (db *DB) UpsertChatUploadArtifact(relativePath, conversationID, ownerUserID string) error {
|
|
relativePath = strings.TrimSpace(relativePath)
|
|
conversationID = strings.TrimSpace(conversationID)
|
|
ownerUserID = strings.TrimSpace(ownerUserID)
|
|
if relativePath == "" || conversationID == "" || ownerUserID == "" {
|
|
return nil
|
|
}
|
|
_, err := db.Exec(`
|
|
INSERT INTO chat_upload_artifacts(relative_path, conversation_id, owner_user_id, created_at)
|
|
VALUES (?, ?, ?, ?)
|
|
ON CONFLICT(relative_path) DO UPDATE SET conversation_id=excluded.conversation_id, owner_user_id=excluded.owner_user_id
|
|
`, relativePath, conversationID, ownerUserID, time.Now())
|
|
return err
|
|
}
|
|
|
|
func (db *DB) GetChatUploadArtifact(relativePath string) (conversationID, ownerUserID string, ok bool) {
|
|
err := db.QueryRow(`SELECT conversation_id, owner_user_id FROM chat_upload_artifacts WHERE relative_path = ?`, strings.TrimSpace(relativePath)).Scan(&conversationID, &ownerUserID)
|
|
return conversationID, ownerUserID, err == nil
|
|
}
|
|
|
|
func (db *DB) DeleteChatUploadArtifactPath(relativePath string) error {
|
|
path := strings.Trim(strings.TrimSpace(relativePath), "/")
|
|
if path == "" {
|
|
return nil
|
|
}
|
|
_, err := db.Exec(`DELETE FROM chat_upload_artifacts WHERE relative_path = ? OR relative_path LIKE ? ESCAPE '\'`, path, escapeLikePrefix(path)+"/%")
|
|
return err
|
|
}
|
|
|
|
func (db *DB) RenameChatUploadArtifactPath(oldPath, newPath string) error {
|
|
oldPath = strings.Trim(strings.TrimSpace(oldPath), "/")
|
|
newPath = strings.Trim(strings.TrimSpace(newPath), "/")
|
|
if oldPath == "" || newPath == "" {
|
|
return nil
|
|
}
|
|
_, err := db.Exec(`
|
|
UPDATE chat_upload_artifacts
|
|
SET relative_path = CASE
|
|
WHEN relative_path = ? THEN ?
|
|
ELSE ? || substr(relative_path, length(?) + 1)
|
|
END
|
|
WHERE relative_path = ? OR relative_path LIKE ? ESCAPE '\'
|
|
`, oldPath, newPath, newPath, oldPath, oldPath, escapeLikePrefix(oldPath)+"/%")
|
|
return err
|
|
}
|
|
|
|
func escapeLikePrefix(value string) string {
|
|
return strings.NewReplacer(`\`, `\\`, `%`, `\%`, `_`, `\_`).Replace(value)
|
|
}
|