1
+ // Copyright (C) 2024, Achiefs.
2
+
1
3
use crate :: appconfig;
2
4
use crate :: utils;
3
5
use crate :: dbfile:: * ;
@@ -65,7 +67,7 @@ impl DB {
65
67
pub fn is_empty ( & self ) -> bool {
66
68
let connection = self . open ( ) ;
67
69
let result = connection. query_row ( "SELECT * FROM files LIMIT 1" , [ ] , |_row| Ok ( 0 ) ) ;
68
- self . close ( connection) ;
70
+ self . close ( connection) ;
69
71
match result {
70
72
Ok ( _v) => false ,
71
73
Err ( e) => {
@@ -76,7 +78,7 @@ impl DB {
76
78
true
77
79
}
78
80
}
79
- }
81
+ }
80
82
}
81
83
82
84
// ------------------------------------------------------------------------
@@ -85,11 +87,13 @@ impl DB {
85
87
let connection = self . open ( ) ;
86
88
let result = connection. execute (
87
89
"CREATE TABLE IF NOT EXISTS files (
88
- id INTEGER PRIMARY KEY,
90
+ dbid INTEGER PRIMARY KEY,
91
+ id TEXT PRIMARY KEY,
89
92
timestamp TEXT NOT NULL,
90
93
hash TEXT NOT NULL,
91
94
path TEXT NOT NULL UNIQUE,
92
- size INTEGER)" ,
95
+ size INTEGER,
96
+ PRIMARY KEY(dbid, id) )" ,
93
97
( ) ,
94
98
) ;
95
99
match result {
@@ -122,14 +126,15 @@ impl DB {
122
126
"SELECT * FROM files WHERE path = ?1 LIMIT 1" ,
123
127
[ path. clone ( ) ] ,
124
128
|row| Ok ( DBFile {
125
- id : row. get ( 0 ) . unwrap ( ) ,
126
- timestamp : row. get ( 1 ) . unwrap ( ) ,
127
- hash : row. get ( 2 ) . unwrap ( ) ,
128
- path : row. get ( 3 ) . unwrap ( ) ,
129
- size : row. get ( 4 ) . unwrap ( )
129
+ dbid : row. get ( 0 ) . unwrap ( ) ,
130
+ id : row. get ( 1 ) . unwrap ( ) ,
131
+ timestamp : row. get ( 2 ) . unwrap ( ) ,
132
+ hash : row. get ( 3 ) . unwrap ( ) ,
133
+ path : row. get ( 4 ) . unwrap ( ) ,
134
+ size : row. get ( 5 ) . unwrap ( )
130
135
} )
131
136
) ;
132
-
137
+
133
138
let data = match result {
134
139
Ok ( d) => Ok ( d) ,
135
140
Err ( e) => {
@@ -149,17 +154,18 @@ impl DB {
149
154
150
155
// ------------------------------------------------------------------------
151
156
152
- pub fn get_file_by_id ( & self , id : u64 ) -> DBFile {
157
+ pub fn get_file_by_id ( & self , dbid : u64 ) -> DBFile {
153
158
let connection = self . open ( ) ;
154
159
let data = connection. query_row (
155
- "SELECT * FROM files WHERE id = ?1 LIMIT 1" ,
156
- [ id ] ,
160
+ "SELECT * FROM files WHERE dbid = ?1 LIMIT 1" ,
161
+ [ dbid ] ,
157
162
|row| Ok ( DBFile {
158
- id : row. get ( 0 ) . unwrap ( ) ,
159
- timestamp : row. get ( 1 ) . unwrap ( ) ,
160
- hash : row. get ( 2 ) . unwrap ( ) ,
161
- path : row. get ( 3 ) . unwrap ( ) ,
162
- size : row. get ( 4 ) . unwrap ( )
163
+ dbid : row. get ( 0 ) . unwrap ( ) ,
164
+ id : row. get ( 1 ) . unwrap ( ) ,
165
+ timestamp : row. get ( 2 ) . unwrap ( ) ,
166
+ hash : row. get ( 3 ) . unwrap ( ) ,
167
+ path : row. get ( 4 ) . unwrap ( ) ,
168
+ size : row. get ( 5 ) . unwrap ( )
163
169
} )
164
170
) . unwrap ( ) ;
165
171
@@ -185,8 +191,8 @@ impl DB {
185
191
None => String :: new ( )
186
192
} ;
187
193
188
- let query = format ! ( "UPDATE files SET {}, {}, {} WHERE id = {}" ,
189
- timestamp_str, hash_str, size_str, dbfile. id ) ;
194
+ let query = format ! ( "UPDATE files SET {}, {}, {} WHERE dbid = {}" ,
195
+ timestamp_str, hash_str, size_str, dbfile. dbid ) ;
190
196
191
197
let mut statement = connection. prepare ( & query) . unwrap ( ) ;
192
198
let result = statement. execute ( [ ] ) ;
@@ -205,11 +211,12 @@ impl DB {
205
211
"SELECT * from files" ) . unwrap ( ) ;
206
212
let files = query. query_map ( [ ] , |row|{
207
213
Ok ( DBFile {
208
- id : row. get ( 0 ) . unwrap ( ) ,
209
- timestamp : row. get ( 1 ) . unwrap ( ) ,
210
- hash : row. get ( 2 ) . unwrap ( ) ,
211
- path : row. get ( 3 ) . unwrap ( ) ,
212
- size : row. get ( 4 ) . unwrap ( ) ,
214
+ dbid : row. get ( 0 ) . unwrap ( ) ,
215
+ id : row. get ( 1 ) . unwrap ( ) ,
216
+ timestamp : row. get ( 2 ) . unwrap ( ) ,
217
+ hash : row. get ( 3 ) . unwrap ( ) ,
218
+ path : row. get ( 4 ) . unwrap ( ) ,
219
+ size : row. get ( 5 ) . unwrap ( ) ,
213
220
} )
214
221
} ) . unwrap ( ) ;
215
222
0 commit comments