File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed
Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change 1+ export default eventHandler ( async ( ) => {
2+ const db = useDatabaseClient ( )
3+
4+ const { results } = await db . prepare ( 'PRAGMA table_list' ) . all < {
5+ schema : string ;
6+ name : string ;
7+ type : string ;
8+ ncol : number ;
9+ wr : number ;
10+ strict : number ;
11+ } > ( )
12+
13+ if ( ! results ) {
14+ throw createError ( { statusCode : 404 , message : 'No tables found' } )
15+ }
16+
17+ const tables = results . filter ( ( { name } ) => {
18+ const isInternal = name . startsWith ( 'sqlite_' ) || name . startsWith ( '_cf_' ) || name . startsWith ( 'd1_' ) || name . startsWith ( '__drizzle' )
19+
20+ return ! isInternal
21+ } )
22+
23+ const [ columns , count ] = await Promise . all ( [
24+ db . batch ( tables . map ( ( { name } ) => db . prepare ( `PRAGMA table_info("${ name } ")` ) ) )
25+ . then ( res => res . map ( ( { results } ) => results as { name : string ; type : string } [ ] ) ) ,
26+ db . batch < { c : number } > ( tables . map ( ( { name } ) => db . prepare ( `SELECT COUNT(*) AS c FROM "${ name } "` ) ) )
27+ . then ( res => res . map ( ( { results } ) => results [ 0 ] . c ) )
28+ ] )
29+
30+
31+ return tables . map ( ( { name } , i ) => ( {
32+ name,
33+ columns : columns [ i ] ,
34+ count : count [ i ]
35+ } ) )
36+ } )
You can’t perform that action at this time.
0 commit comments