File tree 1 file changed +36
-0
lines changed
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