- Rename directory keep-notes -> memento-note with all code references - Prisma: SQLite -> PostgreSQL (both app and MCP server schemas) - Sync MCP schema with main app (add missing fields, relations, indexes) - Delete 17 SQLite migrations (clean slate for PostgreSQL) - Remove SQLite dependencies (@libsql/client, better-sqlite3, etc.) - Fix MCP server: hardcoded Windows DB paths -> DATABASE_URL env var - Fix MCP server: .dockerignore excluded index-sse.js (SSE mode broken) - MCP Dockerfile: node:20 -> node:22 - Docker Compose: add postgres service, remove SQLite volume - Generate favicon.ico, icon-192.png, icon-512.png, apple-icon.png - Update layout.tsx icons and manifest.json for PNG icons - Update all .env files for PostgreSQL - Rewrite README.md with updated sections - Remove mcp-server/node_modules and prisma/client-generated from git tracking Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import prisma from './prisma';
|
|
|
|
export async function getSystemConfig() {
|
|
try {
|
|
const configs = await prisma.systemConfig.findMany();
|
|
return configs.reduce((acc, conf) => {
|
|
acc[conf.key] = conf.value;
|
|
return acc;
|
|
}, {} as Record<string, string>);
|
|
} catch (e) {
|
|
console.error('Failed to load system config from DB:', e);
|
|
return {};
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get a config value with a default fallback
|
|
*/
|
|
export async function getConfigValue(key: string, defaultValue: string = ''): Promise<string> {
|
|
const config = await getSystemConfig();
|
|
return config[key] || defaultValue;
|
|
}
|
|
|
|
/**
|
|
* Get a numeric config value with a default fallback
|
|
*/
|
|
export async function getConfigNumber(key: string, defaultValue: number): Promise<number> {
|
|
const value = await getConfigValue(key, String(defaultValue));
|
|
const num = parseFloat(value);
|
|
return isNaN(num) ? defaultValue : num;
|
|
}
|
|
|
|
/**
|
|
* Get a boolean config value with a default fallback
|
|
*/
|
|
export async function getConfigBoolean(key: string, defaultValue: boolean): Promise<boolean> {
|
|
const value = await getConfigValue(key, String(defaultValue));
|
|
return value === 'true';
|
|
}
|
|
|
|
/**
|
|
* Search configuration defaults
|
|
*/
|
|
export const SEARCH_DEFAULTS = {
|
|
SEMANTIC_THRESHOLD: 0.65,
|
|
RRF_K_BASE: 20,
|
|
RRF_K_ADAPTIVE: true,
|
|
KEYWORD_BOOST_EXACT: 2.0,
|
|
KEYWORD_BOOST_CONCEPTUAL: 0.7,
|
|
SEMANTIC_BOOST_EXACT: 0.7,
|
|
SEMANTIC_BOOST_CONCEPTUAL: 1.5,
|
|
QUERY_EXPANSION_ENABLED: false,
|
|
QUERY_EXPANSION_MAX_SYNONYMS: 3,
|
|
DEBUG_MODE: false,
|
|
} as const;
|