1
- import { CompiledQuery , sql } from 'kysely'
2
- import type { DatabaseConnection , Kysely } from 'kysely'
1
+ import { CompiledQuery } from 'kysely'
2
+ import type { DatabaseConnection , Kysely , Transaction } from 'kysely'
3
3
4
4
/**
5
- * check integrity_check pragma
5
+ * check integrity_check pragma, **no param check**
6
6
*/
7
7
export async function checkIntegrity ( db : Kysely < any > ) : Promise < boolean > {
8
- const { rows } = await sql ` PRAGMA integrity_check` . execute ( db )
8
+ const { rows } = await db . executeQuery ( CompiledQuery . raw ( ' PRAGMA integrity_check' ) )
9
9
if ( ! rows . length ) {
10
10
throw new Error ( 'fail to check integrity' )
11
11
}
@@ -14,24 +14,24 @@ export async function checkIntegrity(db: Kysely<any>): Promise<boolean> {
14
14
}
15
15
16
16
/**
17
- * control whether to enable foreign keys
17
+ * control whether to enable foreign keys, **no param check**
18
18
*/
19
19
export async function foreignKeys ( db : Kysely < any > , enable : boolean ) : Promise < void > {
20
- await sql `PRAGMA foreign_keys = ${ sql . raw ( ` ${ enable } `) } ` . execute ( db )
20
+ await db . executeQuery ( CompiledQuery . raw ( `PRAGMA foreign_keys = ${ enable } ` ) )
21
21
}
22
22
23
23
/**
24
- * get or set user_version pragma
24
+ * get or set user_version pragma, **no param check**
25
25
*/
26
26
export async function getOrSetDBVersion (
27
27
db : Kysely < any > ,
28
28
version ?: number ,
29
29
) : Promise < number > {
30
30
if ( version ) {
31
- await sql `PRAGMA user_version = ${ sql . raw ( ` ${ version } `) } ` . execute ( db )
31
+ await db . executeQuery ( CompiledQuery . raw ( `PRAGMA user_version = ${ version } ` ) )
32
32
return version
33
33
}
34
- const { rows } = await sql ` PRAGMA user_version` . execute ( db )
34
+ const { rows } = await db . executeQuery ( CompiledQuery . raw ( ' PRAGMA user_version' ) )
35
35
if ( ! rows . length ) {
36
36
throw new Error ( 'fail to get DBVersion' )
37
37
}
@@ -50,26 +50,27 @@ export type OptimizePragmaOptions = {
50
50
* @default 4096
51
51
* @see https://sqlite.org/pragma.html#pragma_cache_size
52
52
*/
53
- cacheSize ?: number
53
+ cache_size ?: number
54
54
/**
55
55
* @default 32768
56
56
* @see https://sqlite.org/pragma.html#pragma_page_size
57
57
*/
58
- pageSize ?: number
58
+ page_size ?: number
59
59
/**
60
+ * @default -1 (default value)
60
61
* @see https://sqlite.org/pragma.html#pragma_mmap_size
61
62
*/
62
- mmapSize ?: number
63
+ mmap_size ?: number
63
64
/**
64
65
* @default 'WAL'
65
66
* @see https://sqlite.org/pragma.html#pragma_journal_mode
66
67
*/
67
- journalMode ?: PragmaJournalMode
68
+ journal_mode ?: PragmaJournalMode
68
69
/**
69
70
* @default 'MEMORY'
70
71
* @see https://sqlite.org/pragma.html#pragma_temp_store
71
72
*/
72
- tempStore ?: PragmaTempStore
73
+ temp_store ?: PragmaTempStore
73
74
/**
74
75
* @default 'NORMAL'
75
76
* @see https://sqlite.org/pragma.html#pragma_synchronous
@@ -78,33 +79,24 @@ export type OptimizePragmaOptions = {
78
79
}
79
80
80
81
/**
81
- * call optimize pragma
82
- * @param conn database connection
82
+ * call optimize pragma, **no param check**
83
+ * @param db database connection
83
84
* @param options pragma options, {@link OptimizePragmaOptions details}
84
85
*/
85
- export async function optimzePragma (
86
- conn : DatabaseConnection ,
86
+ export async function optimizePragma (
87
+ db : DatabaseConnection | Kysely < any > | Transaction < any > ,
87
88
options : OptimizePragmaOptions = { } ,
88
- ) : Promise < void > {
89
- const {
90
- cacheSize = 4096 ,
91
- pageSize = 32768 ,
92
- mmapSize,
93
- journalMode = 'WAL' ,
94
- tempStore = 'MEMORY' ,
95
- synchronous = 'NORMAL' ,
96
- } = options
97
- const exec = (
98
- pragma : string ,
99
- data : string | number ,
100
- ) => conn . executeQuery ( CompiledQuery . raw (
101
- `PRAGMA ? = ?` ,
102
- [ pragma , data ] ,
103
- ) )
104
- await exec ( 'journal_mode' , journalMode )
105
- await exec ( 'synchronous' , synchronous )
106
- await exec ( 'temp_store' , tempStore )
107
- await exec ( 'cache_size' , cacheSize )
108
- await exec ( 'page_size' , pageSize )
109
- mmapSize && await exec ( 'mmap_size' , mmapSize )
89
+ ) {
90
+ const entries = Object . entries ( {
91
+ mmap_size : - 1 ,
92
+ cache_size : 4096 ,
93
+ page_size : 32768 ,
94
+ journal_mode : 'WAL' ,
95
+ temp_store : 'MEMORY' ,
96
+ synchronous : 'NORMAL' ,
97
+ ...options ,
98
+ } )
99
+ for ( const [ pragma , value ] of entries ) {
100
+ await db . executeQuery ( CompiledQuery . raw ( `PRAGMA ${ pragma } = ${ value } ` ) )
101
+ }
110
102
}
0 commit comments