SKILL.md
Database Operations Guide
Schema Location
src/services/db.ts - Dexie database definition
- Tables:
jobs, settings, memories, careerProjects, learningTasks
Common Operations
import { db } from './db';
// Get all jobs
const jobs = await db.jobs.toArray();
// Get single job by ID
const job = await db.jobs.get(id);
// Add new job
const newId = await db.jobs.add(jobData);
// Update job (full replace)
await db.jobs.put({ ...job, ...updates });
// Partial update
await db.jobs.update(id, { status: 'Applied' });
// Delete job
await db.jobs.delete(id);
// Query with filters
const remoteJobs = await db.jobs
.where('summary.jobType')
.equals('remote')
.toArray();
// Bulk operations
await db.jobs.bulkPut(jobsArray);
await db.jobs.bulkDelete(idArray);
Settings Access
// Get app settings
const settings = await db.settings.get('app-settings');
// Update settings
await db.settings.put({ id: 'app-settings', ...updates });
// Access outside React
import { useAppStore } from './stores/appStore';
const { settings } = useAppStore.getState();
Migration Notes
- Version changes require schema migration in
db.ts
- Always preserve existing data during migrations
- Test with existing data before deploying
- Dexie auto-upgrades when version number increases
Key Types
interface Job {
id: string;
company: string;
title: string;
jdText: string;
status: string;
dateAdded: Date;
lastUpdated: Date;
summary: JobSummary | null;
resumeAnalysis: ResumeAnalysis | null;
coverLetter: string | null;
// ... see src/types/index.ts for full definition
}
Export/Import
// Export all data
const exportData = {
jobs: await db.jobs.toArray(),
settings: await db.settings.get('app-settings'),
memories: await db.memories.toArray(),
};
// Import data
await db.jobs.bulkPut(importedJobs);