2
2
3
3
use super :: cache_db:: CacheDB ;
4
4
use super :: cache_db:: CacheDBConfiguration ;
5
+ use super :: cache_db:: CacheDBHash ;
5
6
use super :: cache_db:: CacheFailure ;
6
7
use deno_ast:: ModuleSpecifier ;
7
8
use deno_core:: error:: AnyError ;
8
9
use deno_runtime:: deno_webstorage:: rusqlite:: params;
9
10
10
11
pub static TYPE_CHECK_CACHE_DB : CacheDBConfiguration = CacheDBConfiguration {
11
12
table_initializer : concat ! (
12
- "CREATE TABLE IF NOT EXISTS checkcache (
13
- check_hash TEXT PRIMARY KEY
14
- );" ,
15
- "CREATE TABLE IF NOT EXISTS tsbuildinfo (
16
- specifier TEXT PRIMARY KEY,
17
- text TEXT NOT NULL
18
- );" ,
13
+ "CREATE TABLE IF NOT EXISTS checkcache (" ,
14
+ " check_hash INT PRIMARY KEY" ,
15
+ " );",
16
+ "CREATE TABLE IF NOT EXISTS tsbuildinfo (" ,
17
+ " specifier TEXT PRIMARY KEY," ,
18
+ " text TEXT NOT NULL" ,
19
+ " );",
19
20
) ,
20
21
on_version_change : concat ! (
21
22
"DELETE FROM checkcache;" ,
@@ -37,7 +38,7 @@ impl TypeCheckCache {
37
38
Self ( db)
38
39
}
39
40
40
- pub fn has_check_hash ( & self , hash : u64 ) -> bool {
41
+ pub fn has_check_hash ( & self , hash : CacheDBHash ) -> bool {
41
42
match self . hash_check_hash_result ( hash) {
42
43
Ok ( val) => val,
43
44
Err ( err) => {
@@ -52,14 +53,17 @@ impl TypeCheckCache {
52
53
}
53
54
}
54
55
55
- fn hash_check_hash_result ( & self , hash : u64 ) -> Result < bool , AnyError > {
56
+ fn hash_check_hash_result (
57
+ & self ,
58
+ hash : CacheDBHash ,
59
+ ) -> Result < bool , AnyError > {
56
60
self . 0 . exists (
57
61
"SELECT * FROM checkcache WHERE check_hash=?1 LIMIT 1" ,
58
- params ! [ hash. to_string ( ) ] ,
62
+ params ! [ hash] ,
59
63
)
60
64
}
61
65
62
- pub fn add_check_hash ( & self , check_hash : u64 ) {
66
+ pub fn add_check_hash ( & self , check_hash : CacheDBHash ) {
63
67
if let Err ( err) = self . add_check_hash_result ( check_hash) {
64
68
if cfg ! ( debug_assertions) {
65
69
panic ! ( "Error saving check hash: {err}" ) ;
@@ -69,13 +73,16 @@ impl TypeCheckCache {
69
73
}
70
74
}
71
75
72
- fn add_check_hash_result ( & self , check_hash : u64 ) -> Result < ( ) , AnyError > {
76
+ fn add_check_hash_result (
77
+ & self ,
78
+ check_hash : CacheDBHash ,
79
+ ) -> Result < ( ) , AnyError > {
73
80
let sql = "
74
81
INSERT OR REPLACE INTO
75
82
checkcache (check_hash)
76
83
VALUES
77
84
(?1)" ;
78
- self . 0 . execute ( sql, params ! [ & check_hash. to_string ( ) , ] ) ?;
85
+ self . 0 . execute ( sql, params ! [ check_hash] ) ?;
79
86
Ok ( ( ) )
80
87
}
81
88
@@ -123,10 +130,10 @@ mod test {
123
130
let conn = CacheDB :: in_memory ( & TYPE_CHECK_CACHE_DB , "1.0.0" ) ;
124
131
let cache = TypeCheckCache :: new ( conn) ;
125
132
126
- assert ! ( !cache. has_check_hash( 1 ) ) ;
127
- cache. add_check_hash ( 1 ) ;
128
- assert ! ( cache. has_check_hash( 1 ) ) ;
129
- assert ! ( !cache. has_check_hash( 2 ) ) ;
133
+ assert ! ( !cache. has_check_hash( CacheDBHash :: new ( 1 ) ) ) ;
134
+ cache. add_check_hash ( CacheDBHash :: new ( 1 ) ) ;
135
+ assert ! ( cache. has_check_hash( CacheDBHash :: new ( 1 ) ) ) ;
136
+ assert ! ( !cache. has_check_hash( CacheDBHash :: new ( 2 ) ) ) ;
130
137
131
138
let specifier1 = ModuleSpecifier :: parse ( "file:///test.json" ) . unwrap ( ) ;
132
139
assert_eq ! ( cache. get_tsbuildinfo( & specifier1) , None ) ;
@@ -137,9 +144,9 @@ mod test {
137
144
let conn = cache. 0 . recreate_with_version ( "2.0.0" ) ;
138
145
let cache = TypeCheckCache :: new ( conn) ;
139
146
140
- assert ! ( !cache. has_check_hash( 1 ) ) ;
141
- cache. add_check_hash ( 1 ) ;
142
- assert ! ( cache. has_check_hash( 1 ) ) ;
147
+ assert ! ( !cache. has_check_hash( CacheDBHash :: new ( 1 ) ) ) ;
148
+ cache. add_check_hash ( CacheDBHash :: new ( 1 ) ) ;
149
+ assert ! ( cache. has_check_hash( CacheDBHash :: new ( 1 ) ) ) ;
143
150
assert_eq ! ( cache. get_tsbuildinfo( & specifier1) , None ) ;
144
151
cache. set_tsbuildinfo ( & specifier1, "test" ) ;
145
152
assert_eq ! ( cache. get_tsbuildinfo( & specifier1) , Some ( "test" . to_string( ) ) ) ;
@@ -148,13 +155,13 @@ mod test {
148
155
let conn = cache. 0 . recreate_with_version ( "2.0.0" ) ;
149
156
let cache = TypeCheckCache :: new ( conn) ;
150
157
151
- assert ! ( cache. has_check_hash( 1 ) ) ;
152
- assert ! ( !cache. has_check_hash( 2 ) ) ;
158
+ assert ! ( cache. has_check_hash( CacheDBHash :: new ( 1 ) ) ) ;
159
+ assert ! ( !cache. has_check_hash( CacheDBHash :: new ( 2 ) ) ) ;
153
160
assert_eq ! ( cache. get_tsbuildinfo( & specifier1) , Some ( "test" . to_string( ) ) ) ;
154
161
155
162
// adding when already exists should not cause issue
156
- cache. add_check_hash ( 1 ) ;
157
- assert ! ( cache. has_check_hash( 1 ) ) ;
163
+ cache. add_check_hash ( CacheDBHash :: new ( 1 ) ) ;
164
+ assert ! ( cache. has_check_hash( CacheDBHash :: new ( 1 ) ) ) ;
158
165
cache. set_tsbuildinfo ( & specifier1, "other" ) ;
159
166
assert_eq ! (
160
167
cache. get_tsbuildinfo( & specifier1) ,
0 commit comments