import Database from "better-sqlite3";
import { homedir } from "os";
import { join } from "path";
const CACHE_TTL = 3600000;
let db = null;
function getDatabase() {
if (!db) {
const dbPath = join(homedir(), ".isis-mcp-cache.db");
db = new Database(dbPath);
db.exec(`
CREATE TABLE IF NOT EXISTS cache (
url TEXT PRIMARY KEY,
content TEXT,
markdown TEXT,
title TEXT,
cached_at INTEGER
)
`);
}
return db;
}
export function getFromCache(url) {
const database = getDatabase();
const row = database
.prepare("SELECT * FROM cache WHERE url = ?")
.get(url);
if (!row)
return null;
if (Date.now() - row.cached_at > CACHE_TTL) {
database.prepare("DELETE FROM cache WHERE url = ?").run(url);
return null;
}
return row;
}
export function saveToCache(url, data) {
const database = getDatabase();
database
.prepare("INSERT OR REPLACE INTO cache (url, content, markdown, title, cached_at) VALUES (?, ?, ?, ?, ?)")
.run(url, data.content, data.markdown, data.title, Date.now());
}
export function closeCache() {
if (db) {
db.close();
db = null;
}
}
export function generateContentHandle(url) {
return Buffer.from(url).toString('base64');
}
export function decodeContentHandle(handle) {
try {
return Buffer.from(handle, 'base64').toString('utf-8');
}
catch (error) {
return null;
}
}
//# sourceMappingURL=cache.js.map