Files
OmniRoute/src/lib/db/agentBridgeMappings.ts

48 lines
1.4 KiB
TypeScript

/**
* Database module: AgentBridgeMappings
* CRUD operations for agent_bridge_mappings table.
*/
import { getDbInstance } from "./core";
import type { AgentBridgeMappingRow } from "./_rowTypes";
export function getMappingsForAgent(agentId: string): AgentBridgeMappingRow[] {
const db = getDbInstance();
const rows = db
.prepare(
"SELECT agent_id, source_model, target_model, updated_at FROM agent_bridge_mappings WHERE agent_id = ? ORDER BY source_model ASC"
)
.all(agentId) as AgentBridgeMappingRow[];
return rows;
}
export function setMappings(
agentId: string,
mappings: Array<{ source: string; target: string }>
): void {
const db = getDbInstance();
const now = new Date().toISOString();
const deleteStmt = db.prepare("DELETE FROM agent_bridge_mappings WHERE agent_id = ?");
const insertStmt = db.prepare(
`INSERT INTO agent_bridge_mappings (agent_id, source_model, target_model, updated_at)
VALUES (?, ?, ?, ?)`
);
const runTransaction = db.transaction(() => {
deleteStmt.run(agentId);
for (const mapping of mappings) {
insertStmt.run(agentId, mapping.source, mapping.target, now);
}
});
runTransaction();
}
export function deleteMapping(agentId: string, source: string): void {
const db = getDbInstance();
db.prepare(
"DELETE FROM agent_bridge_mappings WHERE agent_id = ? AND source_model = ?"
).run(agentId, source);
}