All files / src/db config.ts

0% Statements 0/11
0% Branches 0/6
0% Functions 0/2
0% Lines 0/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41                                                                                 
import { mkdirSync } from 'node:fs';
import { dirname, join } from 'node:path';
import { findWorkspaceRoot } from '../config/cwrc.js';
 
/**
 * Get the database path.
 *
 * - Default: <workspace-root>/.cw/cw.db
 * - Throws if no .cwrc workspace is found
 * - Override via CW_DB_PATH environment variable
 * - For testing, pass ':memory:' as CW_DB_PATH
 */
export function getDbPath(): string {
  const envPath = process.env.CW_DB_PATH;
  if (envPath) {
    return envPath;
  }
 
  const root = findWorkspaceRoot();
  if (!root) {
    throw new Error(
      'No .cwrc workspace found. Run `cw init` to initialize a workspace.',
    );
  }
  return join(root, '.cw', 'cw.db');
}
 
/**
 * Ensure the parent directory for the database file exists.
 * No-op for in-memory databases.
 */
export function ensureDbDirectory(dbPath: string): void {
  // Skip for in-memory database
  if (dbPath === ':memory:') {
    return;
  }
 
  const dir = dirname(dbPath);
  mkdirSync(dir, { recursive: true });
}