UNPKG

scai

Version:

> AI-powered CLI tool for commit messages **and** pull request reviews โ€” using local models.

63 lines (62 loc) โ€ข 2.24 kB
import fs from 'fs'; import path from 'path'; import lockfile from 'proper-lockfile'; import { backupScaiFolder } from '../db/backup.js'; import { getDbPathForRepo, getDbForRepo } from '../db/client.js'; export async function resetDatabase() { console.log('๐Ÿ” Backing up existing .scai folder...'); await backupScaiFolder(); const dbPath = getDbPathForRepo(); // Close the DB connection try { const db = getDbForRepo(); db.close(); console.log('๐Ÿ”’ Closed SQLite database connection.'); } catch (err) { console.warn('โš ๏ธ Could not close database:', err instanceof Error ? err.message : err); } // Release lockfile if present try { const releaseLock = await lockfile.unlock(dbPath).catch(() => null); if (releaseLock) { console.log('๐Ÿ”“ Released database lock.'); } } catch (err) { console.warn('โš ๏ธ Failed to release database lock:', err instanceof Error ? err.message : err); } // Delete DB file if (fs.existsSync(dbPath)) { try { fs.unlinkSync(dbPath); console.log(`๐Ÿงน Deleted existing database at ${dbPath}`); } catch (err) { console.error('โŒ Failed to delete DB file:', err instanceof Error ? err.message : err); } } else { console.log('โ„น๏ธ No existing database found at:', dbPath); } // Ensure directory exists try { fs.mkdirSync(path.dirname(dbPath), { recursive: true }); console.log('๐Ÿ“ Ensured that the database directory exists.'); } catch (err) { console.warn('โš ๏ธ Could not ensure DB directory exists:', err instanceof Error ? err.message : err); } // Clean up lock directory const lockDir = `${dbPath}.lock`; if (fs.existsSync(lockDir)) { try { fs.rmSync(lockDir, { recursive: true, force: true }); console.log('๐Ÿงน Removed leftover lock directory.'); } catch (err) { console.warn('โš ๏ธ Failed to remove lock directory:', err instanceof Error ? err.message : err); } } console.log('โœ… Database has been reset. You can now re-run: scai index'); }