+194
-170
Cargo.lock
+194
-170
Cargo.lock
···
4
4
5
5
[[package]]
6
6
name = "ahash"
7
-
version = "0.8.11"
7
+
version = "0.8.12"
8
8
source = "registry+https://github.com/rust-lang/crates.io-index"
9
-
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
9
+
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
10
10
dependencies = [
11
11
"cfg-if",
12
12
"once_cell",
···
14
14
"zerocopy",
15
15
]
16
16
17
-
[[package]]
18
-
name = "android-tzdata"
19
-
version = "0.1.1"
20
-
source = "registry+https://github.com/rust-lang/crates.io-index"
21
-
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
22
-
23
17
[[package]]
24
18
name = "android_system_properties"
25
19
version = "0.1.5"
···
31
25
32
26
[[package]]
33
27
name = "anyhow"
34
-
version = "1.0.94"
28
+
version = "1.0.100"
35
29
source = "registry+https://github.com/rust-lang/crates.io-index"
36
-
checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7"
30
+
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
37
31
38
32
[[package]]
39
33
name = "anymap"
···
43
37
44
38
[[package]]
45
39
name = "autocfg"
46
-
version = "1.4.0"
40
+
version = "1.5.0"
47
41
source = "registry+https://github.com/rust-lang/crates.io-index"
48
-
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
42
+
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
49
43
50
44
[[package]]
51
45
name = "bitflags"
52
-
version = "2.6.0"
46
+
version = "2.9.4"
53
47
source = "registry+https://github.com/rust-lang/crates.io-index"
54
-
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
48
+
checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
55
49
56
50
[[package]]
57
51
name = "bumpalo"
58
-
version = "3.16.0"
52
+
version = "3.19.0"
59
53
source = "registry+https://github.com/rust-lang/crates.io-index"
60
-
checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
54
+
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
61
55
62
56
[[package]]
63
57
name = "cc"
64
-
version = "1.2.2"
58
+
version = "1.2.38"
65
59
source = "registry+https://github.com/rust-lang/crates.io-index"
66
-
checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc"
60
+
checksum = "80f41ae168f955c12fb8960b057d70d0ca153fb83182b57d86380443527be7e9"
67
61
dependencies = [
62
+
"find-msvc-tools",
68
63
"shlex",
69
64
]
70
65
71
66
[[package]]
72
67
name = "cfg-if"
73
-
version = "1.0.0"
68
+
version = "1.0.3"
74
69
source = "registry+https://github.com/rust-lang/crates.io-index"
75
-
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
70
+
checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9"
76
71
77
72
[[package]]
78
73
name = "chrono"
79
-
version = "0.4.38"
74
+
version = "0.4.42"
80
75
source = "registry+https://github.com/rust-lang/crates.io-index"
81
-
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
76
+
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
82
77
dependencies = [
83
-
"android-tzdata",
84
78
"iana-time-zone",
85
79
"js-sys",
86
80
"num-traits",
87
81
"serde",
88
82
"wasm-bindgen",
89
-
"windows-targets",
83
+
"windows-link",
90
84
]
91
85
92
86
[[package]]
···
97
91
98
92
[[package]]
99
93
name = "darling"
100
-
version = "0.20.10"
94
+
version = "0.20.11"
101
95
source = "registry+https://github.com/rust-lang/crates.io-index"
102
-
checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
96
+
checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
103
97
dependencies = [
104
98
"darling_core",
105
99
"darling_macro",
···
107
101
108
102
[[package]]
109
103
name = "darling_core"
110
-
version = "0.20.10"
104
+
version = "0.20.11"
111
105
source = "registry+https://github.com/rust-lang/crates.io-index"
112
-
checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
106
+
checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
113
107
dependencies = [
114
108
"fnv",
115
109
"ident_case",
···
120
114
121
115
[[package]]
122
116
name = "darling_macro"
123
-
version = "0.20.10"
117
+
version = "0.20.11"
124
118
source = "registry+https://github.com/rust-lang/crates.io-index"
125
-
checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
119
+
checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
126
120
dependencies = [
127
121
"darling_core",
128
122
"quote",
···
144
138
"sea-query",
145
139
"serde",
146
140
"serde_json",
147
-
"thiserror 2.0.4",
141
+
"thiserror",
148
142
"tracing",
149
143
"tracing-subscriber",
150
144
]
···
160
154
161
155
[[package]]
162
156
name = "eloquent"
163
-
version = "2.0.3"
157
+
version = "2.0.4"
164
158
source = "registry+https://github.com/rust-lang/crates.io-index"
165
-
checksum = "517c3a122847f4da19d35f4bdbc40a712f1640b535a59c0559e2dbf3a39847f3"
159
+
checksum = "ebac9654d805c45acdc34fbd1662c9fb2f0f83212a5d1af5d535c378233ff1b9"
166
160
dependencies = [
167
161
"eloquent_core",
168
162
]
169
163
170
164
[[package]]
171
165
name = "eloquent_core"
172
-
version = "2.0.2"
166
+
version = "2.0.4"
173
167
source = "registry+https://github.com/rust-lang/crates.io-index"
174
-
checksum = "5a4ed861817efa9c37276a12abf36194a9737f54ab86ceaac973ee0bfb901ede"
168
+
checksum = "d29024f25aa28620ab42d49ab4d1ca77ec5fa8140389a9d3ad8b7ac980a7b640"
175
169
dependencies = [
176
170
"log",
177
171
"sqlformat",
···
189
183
source = "registry+https://github.com/rust-lang/crates.io-index"
190
184
checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
191
185
186
+
[[package]]
187
+
name = "find-msvc-tools"
188
+
version = "0.1.2"
189
+
source = "registry+https://github.com/rust-lang/crates.io-index"
190
+
checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959"
191
+
192
192
[[package]]
193
193
name = "fnv"
194
194
version = "1.0.7"
···
227
227
228
228
[[package]]
229
229
name = "iana-time-zone"
230
-
version = "0.1.61"
230
+
version = "0.1.64"
231
231
source = "registry+https://github.com/rust-lang/crates.io-index"
232
-
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
232
+
checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
233
233
dependencies = [
234
234
"android_system_properties",
235
235
"core-foundation-sys",
236
236
"iana-time-zone-haiku",
237
237
"js-sys",
238
+
"log",
238
239
"wasm-bindgen",
239
240
"windows-core",
240
241
]
···
256
257
257
258
[[package]]
258
259
name = "inherent"
259
-
version = "1.0.11"
260
+
version = "1.0.13"
260
261
source = "registry+https://github.com/rust-lang/crates.io-index"
261
-
checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947"
262
+
checksum = "c727f80bfa4a6c6e2508d2f05b6f4bfce242030bd88ed15ae5331c5b5d30fba7"
262
263
dependencies = [
263
264
"proc-macro2",
264
265
"quote",
···
267
268
268
269
[[package]]
269
270
name = "itoa"
270
-
version = "1.0.14"
271
+
version = "1.0.15"
271
272
source = "registry+https://github.com/rust-lang/crates.io-index"
272
-
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
273
+
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
273
274
274
275
[[package]]
275
276
name = "js-sys"
276
-
version = "0.3.74"
277
+
version = "0.3.80"
277
278
source = "registry+https://github.com/rust-lang/crates.io-index"
278
-
checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705"
279
+
checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e"
279
280
dependencies = [
280
281
"once_cell",
281
282
"wasm-bindgen",
···
289
290
290
291
[[package]]
291
292
name = "libc"
292
-
version = "0.2.167"
293
+
version = "0.2.176"
293
294
source = "registry+https://github.com/rust-lang/crates.io-index"
294
-
checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc"
295
+
checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174"
295
296
296
297
[[package]]
297
298
name = "libsqlite3-sys"
···
305
306
306
307
[[package]]
307
308
name = "log"
308
-
version = "0.4.22"
309
+
version = "0.4.28"
309
310
source = "registry+https://github.com/rust-lang/crates.io-index"
310
-
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
311
+
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
311
312
312
313
[[package]]
313
314
name = "memchr"
314
-
version = "2.7.4"
315
-
source = "registry+https://github.com/rust-lang/crates.io-index"
316
-
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
317
-
318
-
[[package]]
319
-
name = "minimal-lexical"
320
-
version = "0.2.1"
321
-
source = "registry+https://github.com/rust-lang/crates.io-index"
322
-
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
323
-
324
-
[[package]]
325
-
name = "nom"
326
-
version = "7.1.3"
315
+
version = "2.7.5"
327
316
source = "registry+https://github.com/rust-lang/crates.io-index"
328
-
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
329
-
dependencies = [
330
-
"memchr",
331
-
"minimal-lexical",
332
-
]
317
+
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
333
318
334
319
[[package]]
335
320
name = "nu-ansi-term"
336
-
version = "0.46.0"
321
+
version = "0.50.1"
337
322
source = "registry+https://github.com/rust-lang/crates.io-index"
338
-
checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
323
+
checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399"
339
324
dependencies = [
340
-
"overload",
341
-
"winapi",
325
+
"windows-sys",
342
326
]
343
327
344
328
[[package]]
···
352
336
353
337
[[package]]
354
338
name = "once_cell"
355
-
version = "1.20.2"
356
-
source = "registry+https://github.com/rust-lang/crates.io-index"
357
-
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
358
-
359
-
[[package]]
360
-
name = "overload"
361
-
version = "0.1.1"
339
+
version = "1.21.3"
362
340
source = "registry+https://github.com/rust-lang/crates.io-index"
363
-
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
341
+
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
364
342
365
343
[[package]]
366
344
name = "pin-project-lite"
367
-
version = "0.2.15"
345
+
version = "0.2.16"
368
346
source = "registry+https://github.com/rust-lang/crates.io-index"
369
-
checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"
347
+
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
370
348
371
349
[[package]]
372
350
name = "pkg-config"
373
-
version = "0.3.31"
351
+
version = "0.3.32"
374
352
source = "registry+https://github.com/rust-lang/crates.io-index"
375
-
checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
353
+
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
376
354
377
355
[[package]]
378
356
name = "proc-macro2"
379
-
version = "1.0.92"
357
+
version = "1.0.101"
380
358
source = "registry+https://github.com/rust-lang/crates.io-index"
381
-
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
359
+
checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
382
360
dependencies = [
383
361
"unicode-ident",
384
362
]
385
363
386
364
[[package]]
387
365
name = "quote"
388
-
version = "1.0.37"
366
+
version = "1.0.40"
389
367
source = "registry+https://github.com/rust-lang/crates.io-index"
390
-
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
368
+
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
391
369
dependencies = [
392
370
"proc-macro2",
393
371
]
···
406
384
"smallvec",
407
385
]
408
386
387
+
[[package]]
388
+
name = "rustversion"
389
+
version = "1.0.22"
390
+
source = "registry+https://github.com/rust-lang/crates.io-index"
391
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
392
+
409
393
[[package]]
410
394
name = "ryu"
411
-
version = "1.0.18"
395
+
version = "1.0.20"
412
396
source = "registry+https://github.com/rust-lang/crates.io-index"
413
-
checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
397
+
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
414
398
415
399
[[package]]
416
400
name = "sea-query"
417
-
version = "0.32.1"
401
+
version = "0.32.7"
418
402
source = "registry+https://github.com/rust-lang/crates.io-index"
419
-
checksum = "085e94f7d7271c0393ac2d164a39994b1dff1b06bc40cd9a0da04f3d672b0fee"
403
+
checksum = "8a5d1c518eaf5eda38e5773f902b26ab6d5e9e9e2bb2349ca6c64cf96f80448c"
420
404
dependencies = [
421
405
"inherent",
422
406
"sea-query-derive",
···
424
408
425
409
[[package]]
426
410
name = "sea-query-derive"
427
-
version = "0.4.2"
411
+
version = "0.4.3"
428
412
source = "registry+https://github.com/rust-lang/crates.io-index"
429
-
checksum = "9834af2c4bd8c5162f00c89f1701fb6886119a88062cf76fe842ea9e232b9839"
413
+
checksum = "bae0cbad6ab996955664982739354128c58d16e126114fe88c2a493642502aab"
430
414
dependencies = [
431
415
"darling",
432
416
"heck",
433
417
"proc-macro2",
434
418
"quote",
435
419
"syn",
436
-
"thiserror 1.0.69",
420
+
"thiserror",
437
421
]
438
422
439
423
[[package]]
440
424
name = "serde"
441
-
version = "1.0.215"
425
+
version = "1.0.226"
426
+
source = "registry+https://github.com/rust-lang/crates.io-index"
427
+
checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd"
428
+
dependencies = [
429
+
"serde_core",
430
+
"serde_derive",
431
+
]
432
+
433
+
[[package]]
434
+
name = "serde_core"
435
+
version = "1.0.226"
442
436
source = "registry+https://github.com/rust-lang/crates.io-index"
443
-
checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
437
+
checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4"
444
438
dependencies = [
445
439
"serde_derive",
446
440
]
447
441
448
442
[[package]]
449
443
name = "serde_derive"
450
-
version = "1.0.215"
444
+
version = "1.0.226"
451
445
source = "registry+https://github.com/rust-lang/crates.io-index"
452
-
checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
446
+
checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33"
453
447
dependencies = [
454
448
"proc-macro2",
455
449
"quote",
···
458
452
459
453
[[package]]
460
454
name = "serde_json"
461
-
version = "1.0.133"
455
+
version = "1.0.145"
462
456
source = "registry+https://github.com/rust-lang/crates.io-index"
463
-
checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
457
+
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
464
458
dependencies = [
465
459
"itoa",
466
460
"memchr",
467
461
"ryu",
468
462
"serde",
463
+
"serde_core",
469
464
]
470
465
471
466
[[package]]
···
485
480
486
481
[[package]]
487
482
name = "smallvec"
488
-
version = "1.13.2"
483
+
version = "1.15.1"
489
484
source = "registry+https://github.com/rust-lang/crates.io-index"
490
-
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
485
+
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
491
486
492
487
[[package]]
493
488
name = "sqlformat"
494
-
version = "0.2.6"
489
+
version = "0.3.5"
495
490
source = "registry+https://github.com/rust-lang/crates.io-index"
496
-
checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790"
491
+
checksum = "a0d7b3e8a3b6f2ee93ac391a0f757c13790caa0147892e3545cd549dd5b54bc0"
497
492
dependencies = [
498
-
"nom",
499
493
"unicode_categories",
494
+
"winnow",
500
495
]
501
496
502
497
[[package]]
503
498
name = "syn"
504
-
version = "2.0.90"
499
+
version = "2.0.106"
505
500
source = "registry+https://github.com/rust-lang/crates.io-index"
506
-
checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
501
+
checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
507
502
dependencies = [
508
503
"proc-macro2",
509
504
"quote",
···
512
507
513
508
[[package]]
514
509
name = "thiserror"
515
-
version = "1.0.69"
516
-
source = "registry+https://github.com/rust-lang/crates.io-index"
517
-
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
518
-
dependencies = [
519
-
"thiserror-impl 1.0.69",
520
-
]
521
-
522
-
[[package]]
523
-
name = "thiserror"
524
-
version = "2.0.4"
525
-
source = "registry+https://github.com/rust-lang/crates.io-index"
526
-
checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490"
527
-
dependencies = [
528
-
"thiserror-impl 2.0.4",
529
-
]
530
-
531
-
[[package]]
532
-
name = "thiserror-impl"
533
-
version = "1.0.69"
510
+
version = "2.0.16"
534
511
source = "registry+https://github.com/rust-lang/crates.io-index"
535
-
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
512
+
checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0"
536
513
dependencies = [
537
-
"proc-macro2",
538
-
"quote",
539
-
"syn",
514
+
"thiserror-impl",
540
515
]
541
516
542
517
[[package]]
543
518
name = "thiserror-impl"
544
-
version = "2.0.4"
519
+
version = "2.0.16"
545
520
source = "registry+https://github.com/rust-lang/crates.io-index"
546
-
checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061"
521
+
checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960"
547
522
dependencies = [
548
523
"proc-macro2",
549
524
"quote",
···
552
527
553
528
[[package]]
554
529
name = "thread_local"
555
-
version = "1.1.8"
530
+
version = "1.1.9"
556
531
source = "registry+https://github.com/rust-lang/crates.io-index"
557
-
checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
532
+
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
558
533
dependencies = [
559
534
"cfg-if",
560
-
"once_cell",
561
535
]
562
536
563
537
[[package]]
···
573
547
574
548
[[package]]
575
549
name = "tracing-attributes"
576
-
version = "0.1.28"
550
+
version = "0.1.30"
577
551
source = "registry+https://github.com/rust-lang/crates.io-index"
578
-
checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
552
+
checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
579
553
dependencies = [
580
554
"proc-macro2",
581
555
"quote",
···
584
558
585
559
[[package]]
586
560
name = "tracing-core"
587
-
version = "0.1.33"
561
+
version = "0.1.34"
588
562
source = "registry+https://github.com/rust-lang/crates.io-index"
589
-
checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
563
+
checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
590
564
dependencies = [
591
565
"once_cell",
592
566
"valuable",
···
605
579
606
580
[[package]]
607
581
name = "tracing-subscriber"
608
-
version = "0.3.19"
582
+
version = "0.3.20"
609
583
source = "registry+https://github.com/rust-lang/crates.io-index"
610
-
checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
584
+
checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5"
611
585
dependencies = [
612
586
"nu-ansi-term",
613
587
"sharded-slab",
···
619
593
620
594
[[package]]
621
595
name = "unicode-ident"
622
-
version = "1.0.14"
596
+
version = "1.0.19"
623
597
source = "registry+https://github.com/rust-lang/crates.io-index"
624
-
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
598
+
checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
625
599
626
600
[[package]]
627
601
name = "unicode_categories"
···
631
605
632
606
[[package]]
633
607
name = "valuable"
634
-
version = "0.1.0"
608
+
version = "0.1.1"
635
609
source = "registry+https://github.com/rust-lang/crates.io-index"
636
-
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
610
+
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
637
611
638
612
[[package]]
639
613
name = "vcpkg"
···
649
623
650
624
[[package]]
651
625
name = "wasm-bindgen"
652
-
version = "0.2.97"
626
+
version = "0.2.103"
653
627
source = "registry+https://github.com/rust-lang/crates.io-index"
654
-
checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c"
628
+
checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819"
655
629
dependencies = [
656
630
"cfg-if",
657
631
"once_cell",
632
+
"rustversion",
658
633
"wasm-bindgen-macro",
634
+
"wasm-bindgen-shared",
659
635
]
660
636
661
637
[[package]]
662
638
name = "wasm-bindgen-backend"
663
-
version = "0.2.97"
639
+
version = "0.2.103"
664
640
source = "registry+https://github.com/rust-lang/crates.io-index"
665
-
checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd"
641
+
checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c"
666
642
dependencies = [
667
643
"bumpalo",
668
644
"log",
669
-
"once_cell",
670
645
"proc-macro2",
671
646
"quote",
672
647
"syn",
···
675
650
676
651
[[package]]
677
652
name = "wasm-bindgen-macro"
678
-
version = "0.2.97"
653
+
version = "0.2.103"
679
654
source = "registry+https://github.com/rust-lang/crates.io-index"
680
-
checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051"
655
+
checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0"
681
656
dependencies = [
682
657
"quote",
683
658
"wasm-bindgen-macro-support",
···
685
660
686
661
[[package]]
687
662
name = "wasm-bindgen-macro-support"
688
-
version = "0.2.97"
663
+
version = "0.2.103"
689
664
source = "registry+https://github.com/rust-lang/crates.io-index"
690
-
checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d"
665
+
checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32"
691
666
dependencies = [
692
667
"proc-macro2",
693
668
"quote",
···
698
673
699
674
[[package]]
700
675
name = "wasm-bindgen-shared"
701
-
version = "0.2.97"
676
+
version = "0.2.103"
702
677
source = "registry+https://github.com/rust-lang/crates.io-index"
703
-
checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49"
678
+
checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf"
679
+
dependencies = [
680
+
"unicode-ident",
681
+
]
704
682
705
683
[[package]]
706
-
name = "winapi"
707
-
version = "0.3.9"
684
+
name = "windows-core"
685
+
version = "0.62.0"
708
686
source = "registry+https://github.com/rust-lang/crates.io-index"
709
-
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
687
+
checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c"
710
688
dependencies = [
711
-
"winapi-i686-pc-windows-gnu",
712
-
"winapi-x86_64-pc-windows-gnu",
689
+
"windows-implement",
690
+
"windows-interface",
691
+
"windows-link",
692
+
"windows-result",
693
+
"windows-strings",
713
694
]
714
695
715
696
[[package]]
716
-
name = "winapi-i686-pc-windows-gnu"
717
-
version = "0.4.0"
697
+
name = "windows-implement"
698
+
version = "0.60.0"
699
+
source = "registry+https://github.com/rust-lang/crates.io-index"
700
+
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
701
+
dependencies = [
702
+
"proc-macro2",
703
+
"quote",
704
+
"syn",
705
+
]
706
+
707
+
[[package]]
708
+
name = "windows-interface"
709
+
version = "0.59.1"
710
+
source = "registry+https://github.com/rust-lang/crates.io-index"
711
+
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
712
+
dependencies = [
713
+
"proc-macro2",
714
+
"quote",
715
+
"syn",
716
+
]
717
+
718
+
[[package]]
719
+
name = "windows-link"
720
+
version = "0.2.0"
718
721
source = "registry+https://github.com/rust-lang/crates.io-index"
719
-
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
722
+
checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65"
720
723
721
724
[[package]]
722
-
name = "winapi-x86_64-pc-windows-gnu"
725
+
name = "windows-result"
723
726
version = "0.4.0"
724
727
source = "registry+https://github.com/rust-lang/crates.io-index"
725
-
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
728
+
checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f"
729
+
dependencies = [
730
+
"windows-link",
731
+
]
732
+
733
+
[[package]]
734
+
name = "windows-strings"
735
+
version = "0.5.0"
736
+
source = "registry+https://github.com/rust-lang/crates.io-index"
737
+
checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda"
738
+
dependencies = [
739
+
"windows-link",
740
+
]
726
741
727
742
[[package]]
728
-
name = "windows-core"
743
+
name = "windows-sys"
729
744
version = "0.52.0"
730
745
source = "registry+https://github.com/rust-lang/crates.io-index"
731
-
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
746
+
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
732
747
dependencies = [
733
748
"windows-targets",
734
749
]
···
797
812
source = "registry+https://github.com/rust-lang/crates.io-index"
798
813
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
799
814
815
+
[[package]]
816
+
name = "winnow"
817
+
version = "0.6.26"
818
+
source = "registry+https://github.com/rust-lang/crates.io-index"
819
+
checksum = "1e90edd2ac1aa278a5c4599b1d89cf03074b610800f866d4026dc199d7929a28"
820
+
dependencies = [
821
+
"memchr",
822
+
]
823
+
800
824
[[package]]
801
825
name = "zerocopy"
802
-
version = "0.7.35"
826
+
version = "0.8.27"
803
827
source = "registry+https://github.com/rust-lang/crates.io-index"
804
-
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
828
+
checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
805
829
dependencies = [
806
830
"zerocopy-derive",
807
831
]
808
832
809
833
[[package]]
810
834
name = "zerocopy-derive"
811
-
version = "0.7.35"
835
+
version = "0.8.27"
812
836
source = "registry+https://github.com/rust-lang/crates.io-index"
813
-
checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
837
+
checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
814
838
dependencies = [
815
839
"proc-macro2",
816
840
"quote",
+5
src/change_tracking_disable.sql
+5
src/change_tracking_disable.sql
+40
src/change_tracking_enable.sql
+40
src/change_tracking_enable.sql
···
1
+
-- Runs when a component is attached
2
+
create trigger if not exists components_changes_attach_trigger
3
+
after insert
4
+
on components for each row
5
+
begin
6
+
insert into changes (entity, component, change)
7
+
select new.entity, new.component, 'create'
8
+
where not exists (
9
+
select true from components
10
+
where entity = new.entity
11
+
and component != new.component
12
+
);
13
+
14
+
insert into changes (entity, component, change)
15
+
select new.entity, new.component, 'attach';
16
+
end;
17
+
18
+
-- Runs when a component is changed
19
+
create trigger if not exists components_changes_update_trigger
20
+
after update
21
+
on components for each row
22
+
begin
23
+
insert into changes (entity, component, change)
24
+
values (new.entity, new.component, 'attach');
25
+
end;
26
+
27
+
-- Runs when a component is detached
28
+
create trigger if not exists components_changes_detach_trigger
29
+
after delete
30
+
on components for each row
31
+
begin
32
+
insert into changes (entity, component, change)
33
+
values (old.entity, old.component, 'detach');
34
+
35
+
insert into changes (entity, component, change)
36
+
select old.entity, old.component, 'destroy'
37
+
where not exists (
38
+
select true from components where entity = old.entity
39
+
);
40
+
end;
+1
-1
src/entity.rs
+1
-1
src/entity.rs
+138
-2
src/lib.rs
+138
-2
src/lib.rs
···
1
1
pub mod component;
2
-
3
2
pub use component::{Component, ComponentRead, ComponentWrite};
4
3
5
4
pub mod entity;
···
76
75
}
77
76
}
78
77
78
+
impl Ecs {
79
+
pub fn enable_change_tracking(&mut self) -> Result<(), Error> {
80
+
self.conn
81
+
.execute_batch(include_str!("change_tracking_enable.sql"))?;
82
+
Ok(())
83
+
}
84
+
85
+
pub fn disable_change_tracking(&mut self) -> Result<(), Error> {
86
+
self.conn
87
+
.execute_batch(include_str!("change_tracking_disable.sql"))?;
88
+
Ok(())
89
+
}
90
+
}
91
+
79
92
impl Ecs {
80
93
pub fn new_entity<'a>(&'a self) -> NewEntity<'a> {
81
94
Entity::without_id(self)
···
181
194
}
182
195
}
183
196
197
+
#[derive(Debug, PartialEq, Eq)]
198
+
pub enum Change {
199
+
Create { entity: EntityId },
200
+
Attach { entity: EntityId, component: String },
201
+
Detach { entity: EntityId, component: String },
202
+
Destroy { entity: EntityId },
203
+
}
204
+
205
+
impl Ecs {
206
+
pub fn changes(&self) -> Result<Vec<Change>, Error> {
207
+
let mut stmt = self
208
+
.conn
209
+
.prepare_cached("select * from changes order by sequence asc")?;
210
+
211
+
let changes = stmt
212
+
.query_map(params![], |row| {
213
+
let entity = row.get("entity")?;
214
+
let change: String = row.get("change")?;
215
+
216
+
match change.as_str() {
217
+
"create" => Ok(Change::Create { entity }),
218
+
"attach" => {
219
+
let component = row.get("component")?;
220
+
Ok(Change::Attach { entity, component })
221
+
}
222
+
"detach" => {
223
+
let component = row.get("component")?;
224
+
Ok(Change::Detach { entity, component })
225
+
}
226
+
"destroy" => Ok(Change::Destroy { entity }),
227
+
other => {
228
+
panic!("Invalid 'changes.change' {other:?}");
229
+
}
230
+
}
231
+
})?
232
+
.collect::<Result<_, _>>()?;
233
+
234
+
Ok(changes)
235
+
}
236
+
237
+
pub fn clear_changes(&self) -> Result<(), Error> {
238
+
self.conn.execute("delete from changes", params![])?;
239
+
Ok(())
240
+
}
241
+
}
242
+
184
243
pub mod rusqlite {
185
244
pub use rusqlite::*;
186
245
}
···
216
275
#[cfg(test)]
217
276
mod tests {
218
277
// #[derive(Component)] derives `impl ecsdb::Component for ...`
219
-
use crate::{self as ecsdb, Ecs};
278
+
use crate::{self as ecsdb, Change, Ecs};
220
279
use crate::{BelongsTo, Component};
221
280
222
281
use anyhow::anyhow;
···
572
631
573
632
Ok(())
574
633
}
634
+
635
+
#[test]
636
+
fn change_tracking_enable_disable() -> Result<(), anyhow::Error> {
637
+
let mut ecs = super::Ecs::open_in_memory()?;
638
+
ecs.enable_change_tracking()?;
639
+
640
+
assert_eq!(ecs.changes()?, vec![]);
641
+
642
+
ecs.new_entity().attach(A);
643
+
assert_eq!(ecs.changes()?.len(), 2);
644
+
645
+
ecs.disable_change_tracking()?;
646
+
ecs.clear_changes()?;
647
+
648
+
ecs.new_entity().attach(A);
649
+
assert!(ecs.changes()?.is_empty());
650
+
651
+
Ok(())
652
+
}
653
+
654
+
#[test]
655
+
fn change_tracking() -> Result<(), anyhow::Error> {
656
+
let mut ecs = super::Ecs::open_in_memory()?;
657
+
ecs.enable_change_tracking()?;
658
+
659
+
let mut changes = vec![];
660
+
661
+
assert_eq!(ecs.changes()?, vec![]);
662
+
663
+
let entity = ecs.new_entity().attach(A);
664
+
665
+
changes.extend([
666
+
Change::Create {
667
+
entity: entity.id(),
668
+
},
669
+
Change::Attach {
670
+
entity: entity.id(),
671
+
component: <A as Component>::component_name().to_owned(),
672
+
},
673
+
]);
674
+
675
+
assert_eq!(ecs.changes()?, changes);
676
+
677
+
entity.attach(B);
678
+
changes.push(Change::Attach {
679
+
entity: entity.id(),
680
+
component: <B as Component>::component_name().to_owned(),
681
+
});
682
+
683
+
assert_eq!(ecs.changes()?, changes);
684
+
685
+
entity.detach::<B>();
686
+
changes.push(Change::Detach {
687
+
entity: entity.id(),
688
+
component: <B as Component>::component_name().to_owned(),
689
+
});
690
+
691
+
assert_eq!(ecs.changes()?, changes);
692
+
693
+
entity.detach::<A>();
694
+
changes.extend([
695
+
Change::Detach {
696
+
entity: entity.id(),
697
+
component: <A as Component>::component_name().to_owned(),
698
+
},
699
+
Change::Destroy {
700
+
entity: entity.id(),
701
+
},
702
+
]);
703
+
704
+
assert_eq!(ecs.changes()?, changes);
705
+
706
+
ecs.clear_changes()?;
707
+
assert!(ecs.changes()?.is_empty());
708
+
709
+
Ok(())
710
+
}
575
711
}
+7
src/schema.sql
+7
src/schema.sql
···
20
20
21
21
end;
22
22
23
+
create table if not exists changes (
24
+
sequence integer primary key autoincrement,
25
+
entity integer not null,
26
+
component text,
27
+
change text not null
28
+
);
29
+
23
30
create table if not exists resources (
24
31
name text not null unique,
25
32
data blob,
+1
-1
src/system.rs
+1
-1
src/system.rs