1- /// <reference path="../../../../../types/index.d.ts" />
21/**
32 * Database API Layer
43 *
1312 * The Database class must be passed from index.tsx.
1413 */
1514
16- import type { Database , Statement } from "elide:sqlite" ;
15+ import { Database , Statement } from "elide:sqlite" ;
16+
17+ /**
18+ * Log SQL queries to console
19+ */
20+ function logQuery ( sql : string , params ?: unknown [ ] ) : void {
21+ const timestamp = new Date ( ) . toISOString ( ) ;
22+ const paramsStr = params && params . length > 0 ? ` [${ params . join ( ", " ) } ]` : "" ;
23+ console . log ( `[${ timestamp } ] SQL: ${ sql } ${ paramsStr } ` ) ;
24+ }
1725
1826export interface DiscoveredDatabase {
1927 path : string ;
@@ -54,12 +62,16 @@ interface CountRow {
5462 * Get list of tables in a database
5563 */
5664export function getTables ( db : Database ) : TableInfo [ ] {
57- const query : Statement < TableNameRow > = db . query ( "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name" ) ;
65+ const sql = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name" ;
66+ logQuery ( sql ) ;
67+ const query : Statement < TableNameRow > = db . query ( sql ) ;
5868 const results = query . all ( ) ;
5969
6070 return results . map ( ( { name } ) => {
6171 const tableName = name ;
62- const countQuery : Statement < CountRow > = db . query ( `SELECT COUNT(*) as count FROM ${ tableName } ` ) ;
72+ const countSql = `SELECT COUNT(*) as count FROM ${ tableName } ` ;
73+ logQuery ( countSql ) ;
74+ const countQuery : Statement < CountRow > = db . query ( countSql ) ;
6375 const countResult = countQuery . get ( ) ;
6476
6577 return {
@@ -80,16 +92,22 @@ interface ColumnNameRow {
8092export function getTableData ( db : Database , tableName : string , limit : number = 100 , offset : number = 0 ) : TableData {
8193
8294 // Get schema (column names)
83- const schemaQuery : Statement < ColumnNameRow > = db . prepare ( `SELECT name FROM pragma_table_info('${ tableName } ') ORDER BY cid` ) ;
95+ const schemaSql = `SELECT name FROM pragma_table_info('${ tableName } ') ORDER BY cid` ;
96+ logQuery ( schemaSql ) ;
97+ const schemaQuery : Statement < ColumnNameRow > = db . prepare ( schemaSql ) ;
8498 const schemaResults = schemaQuery . all ( ) ;
8599 const columns = schemaResults . map ( ( col ) => col . name ) ;
86100
87101 // Get data rows (unknown type since we don't know the schema)
88- const dataQuery = db . query ( `SELECT * FROM ${ tableName } LIMIT ${ limit } OFFSET ${ offset } ` ) ;
102+ const dataSql = `SELECT * FROM ${ tableName } LIMIT ${ limit } OFFSET ${ offset } ` ;
103+ logQuery ( dataSql ) ;
104+ const dataQuery = db . query ( dataSql ) ;
89105 const rows = dataQuery . all ( ) ;
90106
91107 // Get total row count
92- const countQuery : Statement < CountRow > = db . query ( `SELECT COUNT(*) as count FROM ${ tableName } ` ) ;
108+ const countSql = `SELECT COUNT(*) as count FROM ${ tableName } ` ;
109+ logQuery ( countSql ) ;
110+ const countQuery : Statement < CountRow > = db . query ( countSql ) ;
93111 const countResult = countQuery . get ( ) ;
94112 const totalRows = countResult ?. count ?? 0 ;
95113
@@ -105,7 +123,9 @@ export function getTableData(db: Database, tableName: string, limit: number = 10
105123 * Get database metadata
106124 */
107125export function getDatabaseInfo ( db : Database , dbPath : string ) : DatabaseInfo {
108- const tablesQuery : Statement < CountRow > = db . query ( "SELECT COUNT(*) as count FROM sqlite_master WHERE type='table'" ) ;
126+ const sql = "SELECT COUNT(*) as count FROM sqlite_master WHERE type='table'" ;
127+ logQuery ( sql ) ;
128+ const tablesQuery : Statement < CountRow > = db . query ( sql ) ;
109129 const tablesResult = tablesQuery . get ( ) ;
110130
111131 // Extract name from path
@@ -125,6 +145,7 @@ export function getDatabaseInfo(db: Database, dbPath: string): DatabaseInfo {
125145 * Execute a raw SQL query (for future query editor feature)
126146 */
127147export function executeQuery ( db : Database , sql : string , limit : number = 100 ) : { columns : string [ ] , rows : unknown [ ] [ ] } {
148+ logQuery ( sql ) ;
128149 const query = db . query ( sql ) ;
129150 const results = query . all ( ) ;
130151
@@ -145,7 +166,9 @@ export function executeQuery(db: Database, sql: string, limit: number = 100): {
145166export function validateDatabase ( db : Database ) : boolean {
146167 try {
147168 // Try a simple query to verify the database is valid
148- const query = db . query ( "SELECT 1" ) ;
169+ const sql = "SELECT 1" ;
170+ logQuery ( sql ) ;
171+ const query = db . query ( sql ) ;
149172 query . get ( ) ;
150173 return true ;
151174 } catch ( err ) {
0 commit comments