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

49 lines
1.3 KiB
TypeScript

import { getDbInstance } from "./core";
const NOTION_NAMESPACE = "notion";
const NOTION_TOKEN_KEY = "integration_token";
type KeyValueRow = {
value?: string;
};
export function getNotionToken(): string | null {
try {
const db = getDbInstance();
const row = db
.prepare("SELECT value FROM key_value WHERE namespace = ? AND key = ?")
.get(NOTION_NAMESPACE, NOTION_TOKEN_KEY) as KeyValueRow | undefined;
return typeof row?.value === "string" ? JSON.parse(row.value) : null;
} catch {
return null;
}
}
export function setNotionToken(token: string): void {
try {
const db = getDbInstance();
db.prepare(
"INSERT OR IGNORE INTO key_value (namespace, key, value) VALUES (?, ?, ?)"
).run(NOTION_NAMESPACE, NOTION_TOKEN_KEY, JSON.stringify(token));
} catch {
// Non-fatal — token still works in-memory if persistence fails.
}
}
export function clearNotionToken(): void {
try {
const db = getDbInstance();
db.prepare("DELETE FROM key_value WHERE namespace = ? AND key = ?").run(
NOTION_NAMESPACE,
NOTION_TOKEN_KEY
);
} catch {
// Non-fatal.
}
}
export function getNotionConfig(): { token: string | null; connected: boolean } {
const token = getNotionToken();
return { token, connected: token !== null && token.length > 0 };
}