/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
 */
package magic.rag

import magic.core.rag.*
import magic.core.model.ChatModel

class SqliteRetriever <: Retriever {
    private let sqliteAgent: SqliteAgent
    private var _mode: RetrieverMode
    private let _description: String

    init(path: String, mode: RetrieverMode, description: String, model: ChatModel, table!: String) {
        sqliteAgent = SqliteAgent(path, table: table)
        sqliteAgent.model = model
        _mode = mode
        _description = description
    }

    override public prop description: String {
        get() { _description }
    }

    override public mut prop mode: RetrieverMode {
        get() { _mode }
        set(m) { _mode = m }
    }

    override public func search(query: String): Retrieval {
        return DocumentRetrieval(
            [Document(sqliteAgent.chat(query))]
        )
    }
}