refactor: improve type safety by removing 'as any' casts
Created database.ts with proper database result types and replaced 38+ 'as any' casts throughout the codebase with proper type annotations. Changes: - Created src/types/database.ts with TableColumnInfo, IndexInfo, and database record types - Fixed all type casts in SessionStore.ts (migrations, query results) - Fixed type casts in SessionSearch.ts, SettingsManager.ts, SettingsRoutes.ts - Improved MCP server JSON schema typing All builds pass and worker service runs successfully. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
/**
|
||||
* TypeScript types for database query results
|
||||
* Provides type safety for better-sqlite3 query results
|
||||
*/
|
||||
|
||||
/**
|
||||
* Schema information from sqlite3 PRAGMA table_info
|
||||
*/
|
||||
export interface TableColumnInfo {
|
||||
cid: number;
|
||||
name: string;
|
||||
type: string;
|
||||
notnull: number;
|
||||
dflt_value: string | null;
|
||||
pk: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Index information from sqlite3 PRAGMA index_list
|
||||
*/
|
||||
export interface IndexInfo {
|
||||
seq: number;
|
||||
name: string;
|
||||
unique: number;
|
||||
origin: string;
|
||||
partial: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Table name from sqlite_master
|
||||
*/
|
||||
export interface TableNameRow {
|
||||
name: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Schema version record
|
||||
*/
|
||||
export interface SchemaVersion {
|
||||
version: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* SDK Session database record
|
||||
*/
|
||||
export interface SdkSessionRecord {
|
||||
id: number;
|
||||
claude_session_id: string;
|
||||
sdk_session_id: string | null;
|
||||
project: string;
|
||||
user_prompt: string | null;
|
||||
started_at: string;
|
||||
started_at_epoch: number;
|
||||
completed_at: string | null;
|
||||
completed_at_epoch: number | null;
|
||||
status: 'active' | 'completed' | 'failed';
|
||||
worker_port?: number;
|
||||
prompt_counter?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Observation database record
|
||||
*/
|
||||
export interface ObservationRecord {
|
||||
id: number;
|
||||
sdk_session_id: string;
|
||||
project: string;
|
||||
text: string | null;
|
||||
type: 'decision' | 'bugfix' | 'feature' | 'refactor' | 'discovery' | 'change';
|
||||
created_at: string;
|
||||
created_at_epoch: number;
|
||||
title?: string;
|
||||
concept?: string;
|
||||
source_files?: string;
|
||||
prompt_number?: number;
|
||||
discovery_tokens?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Session Summary database record
|
||||
*/
|
||||
export interface SessionSummaryRecord {
|
||||
id: number;
|
||||
sdk_session_id: string;
|
||||
project: string;
|
||||
request: string | null;
|
||||
investigated: string | null;
|
||||
learned: string | null;
|
||||
completed: string | null;
|
||||
next_steps: string | null;
|
||||
created_at: string;
|
||||
created_at_epoch: number;
|
||||
prompt_number?: number;
|
||||
discovery_tokens?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* User Prompt database record
|
||||
*/
|
||||
export interface UserPromptRecord {
|
||||
id: number;
|
||||
claude_session_id: string;
|
||||
prompt_number: number;
|
||||
prompt_text: string;
|
||||
created_at: string;
|
||||
created_at_epoch: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Latest user prompt with session join
|
||||
*/
|
||||
export interface LatestPromptResult {
|
||||
id: number;
|
||||
claude_session_id: string;
|
||||
sdk_session_id: string;
|
||||
project: string;
|
||||
prompt_number: number;
|
||||
prompt_text: string;
|
||||
created_at_epoch: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Observation with context (for time-based queries)
|
||||
*/
|
||||
export interface ObservationWithContext {
|
||||
id: number;
|
||||
sdk_session_id: string;
|
||||
project: string;
|
||||
text: string | null;
|
||||
type: string;
|
||||
created_at: string;
|
||||
created_at_epoch: number;
|
||||
title?: string;
|
||||
concept?: string;
|
||||
source_files?: string;
|
||||
prompt_number?: number;
|
||||
discovery_tokens?: number;
|
||||
}
|
||||
Reference in New Issue
Block a user