WIP feat(db+indexer): certifications
@librelois Voici un début.
- J'ai dû un peu modifier
gen_next_wot_id
car les deux premiers IDs générés étaient0
(les tests ne généraient qu'une seule identité donc ça ne se voyait pas). - J'ai aussi eu quelques problèmes de traits avec le schéma de db, donc j'ai dû créer des types wrappers pour les valeurs. Il voulait qu'ils implémentent
zerocopy::{AsBytes, FromBytes}
(j'ai réussi à faire ça uniquement avec#[repr(packed)]
) etDefault
. Les contraintes pourX
semblent être différentes si la valeur estX
ouVec<X>
par exemple, c'est bizarre. - À propos de
WotId
: Est-il judicieux de stocker desusize
en db ? Ça peut causer des problèmes si on change d'architecture. - J'ai un panic dans le test
test_update_certifications
: (peut-être à cause du#[repr(packed)]
?)
panicked at 'source slice length (33) does not match destination slice length (32)'
stack backtrace:
0: rust_begin_unwind
at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/std/src/panicking.rs:493:5
1: core::panicking::panic_fmt
at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/core/src/panicking.rs:92:14
2: core::slice::<impl [T]>::copy_from_slice::len_mismatch_fail
at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/core/src/slice/mod.rs:3041:13
3: core::slice::<impl [T]>::copy_from_slice
at /home/tuxmain/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/mod.rs:3048:13
4: <duniter_gva_db::values::PublicKeyDb as kv_typed::from_bytes::FromBytes>::from_bytes
at /home/tuxmain/Documents/projets/duniter-gva/db/src/values.rs:75:9
5: <kv_typed::backend::memory::MemCol as kv_typed::backend::BackendCol>::get::{{closure}}::{{closure}}
at /home/tuxmain/.cargo/git/checkouts/duniter-core-11cd823ec7c898cf/56dd979/tools/kv_typed/src/backend/memory.rs:104:30
6: core::option::Option<T>::map
at /home/tuxmain/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:487:29
7: <kv_typed::backend::memory::MemCol as kv_typed::backend::BackendCol>::get::{{closure}}
at /home/tuxmain/.cargo/git/checkouts/duniter-core-11cd823ec7c898cf/56dd979/tools/kv_typed/src/backend/memory.rs:102:13
8: <kv_typed::key::U64BE as kv_typed::as_bytes::AsBytes>::as_bytes
at /home/tuxmain/.cargo/git/checkouts/duniter-core-11cd823ec7c898cf/56dd979/tools/kv_typed/src/as_bytes.rs:81:17
9: <kv_typed::backend::memory::MemCol as kv_typed::backend::BackendCol>::get
at /home/tuxmain/.cargo/git/checkouts/duniter-core-11cd823ec7c898cf/56dd979/tools/kv_typed/src/backend/memory.rs:101:9
10: kv_typed::transactional_write::TxColRw<BC,E>::get
at /home/tuxmain/.cargo/git/checkouts/duniter-core-11cd823ec7c898cf/56dd979/tools/kv_typed/src/transactional_write.rs:76:38
11: duniter_gva_indexer::certifications::update_certifications
at ./src/certifications.rs:41:38
...
- Dans
db
, certains noms sont préfixés pargva
, d'autres non. Puisqu'on est déjà dansduniter-gva
je choisis de ne pas le faire, mais ça pourrait être harmonisé.
Voilà il y a des TODO un peu partout où j'ai des doutes, et je me lancerai dans le revert quand les tests de l'apply passeront.
Edit: Chose étonnante, le pipeline a une erreur de compilation, alors que chez moi ça compile bien. (je suis bien en stable x86_64 1.52.1)
Edited by Pascal Engélibert