@@ -40,7 +40,7 @@ impl From<Snapshot> for SignedEntityRecord {
40
40
let entity = serde_json:: to_string ( & other) . unwrap ( ) ;
41
41
SignedEntityRecord {
42
42
signed_entity_id : other. digest ,
43
- signed_entity_type : SignedEntityType :: CardanoImmutableFilesFull ,
43
+ signed_entity_type : SignedEntityType :: CardanoImmutableFilesFull ( other . beacon ) ,
44
44
certificate_id : other. certificate_hash ,
45
45
entity,
46
46
created_at : other. created_at ,
@@ -62,21 +62,20 @@ impl SqLiteEntity for SignedEntityRecord {
62
62
let signed_entity_id = row. get :: < String , _ > ( 0 ) ;
63
63
let signed_entity_type_id_int = row. get :: < i64 , _ > ( 1 ) ;
64
64
let certificate_id = row. get :: < String , _ > ( 2 ) ;
65
- let entity_str = row. get :: < String , _ > ( 3 ) ;
66
- let created_at = row. get :: < String , _ > ( 4 ) ;
65
+ let beacon_str = row. get :: < String , _ > ( 3 ) ;
66
+ let entity_str = row. get :: < String , _ > ( 4 ) ;
67
+ let created_at = row. get :: < String , _ > ( 5 ) ;
67
68
68
69
let signed_entity_record = Self {
69
70
signed_entity_id,
70
- signed_entity_type : SignedEntityType :: from_repr (
71
+ signed_entity_type : SignedEntityType :: hydrate (
71
72
signed_entity_type_id_int. try_into ( ) . map_err ( |e| {
72
73
HydrationError :: InvalidData ( format ! (
73
74
"Could not cast i64 ({signed_entity_type_id_int}) to u64. Error: '{e}'"
74
75
) )
75
76
} ) ?,
76
- )
77
- . ok_or ( HydrationError :: InconsistentType ( format ! (
78
- "Could not convert ({signed_entity_type_id_int}) to SignedEntityType"
79
- ) ) ) ?,
77
+ & beacon_str,
78
+ ) ?,
80
79
certificate_id,
81
80
entity : entity_str,
82
81
created_at,
@@ -98,6 +97,7 @@ impl SqLiteEntity for SignedEntityRecord {
98
97
"integer" ,
99
98
) ,
100
99
( "certificate_id" , "{:signed_entity:}.certificate_id" , "text" ) ,
100
+ ( "beacon" , "{:signed_entity:}.beacon" , "text" ) ,
101
101
( "entity" , "{:signed_entity:}.entity" , "text" ) ,
102
102
( "created_at" , "{:signed_entity:}.created_at" , "text" ) ,
103
103
] )
@@ -129,7 +129,7 @@ impl<'client> SignedEntityRecordProvider<'client> {
129
129
& self ,
130
130
signed_entity_type : SignedEntityType ,
131
131
) -> Result < WhereCondition , StdError > {
132
- let signed_entity_type_id: i64 = i64 :: try_from ( signed_entity_type as usize ) ? ;
132
+ let signed_entity_type_id: i64 = signed_entity_type. index ( ) as i64 ;
133
133
134
134
Ok ( WhereCondition :: new (
135
135
"signed_entity_type_id = ?*" ,
@@ -197,11 +197,12 @@ impl<'conn> InsertSignedEntityRecordProvider<'conn> {
197
197
198
198
fn get_insert_condition ( & self , signed_entity_record : SignedEntityRecord ) -> WhereCondition {
199
199
WhereCondition :: new (
200
- "(signed_entity_id, signed_entity_type_id, certificate_id, entity, created_at) values (?*, ?*, ?*, ?*, ?*)" ,
200
+ "(signed_entity_id, signed_entity_type_id, certificate_id, beacon, entity, created_at) values (?*, ?*, ?*, ?*, ?*, ?*)" ,
201
201
vec ! [
202
202
Value :: String ( signed_entity_record. signed_entity_id) ,
203
- Value :: Integer ( i64 :: try_from ( signed_entity_record. signed_entity_type as usize ) . unwrap ( ) ) ,
203
+ Value :: Integer ( signed_entity_record. signed_entity_type. index ( ) as i64 ) ,
204
204
Value :: String ( signed_entity_record. certificate_id) ,
205
+ Value :: String ( signed_entity_record. signed_entity_type. get_json_beacon( ) . unwrap( ) ) ,
205
206
Value :: String ( signed_entity_record. entity) ,
206
207
Value :: String ( signed_entity_record. created_at) ,
207
208
] ,
@@ -318,7 +319,7 @@ impl StoreAdapter for SignedEntityStoreAdapter {
318
319
319
320
#[ cfg( test) ]
320
321
mod tests {
321
- use mithril_common:: test_utils:: fake_data;
322
+ use mithril_common:: { entities :: Beacon , test_utils:: fake_data} ;
322
323
323
324
use crate :: database:: migration:: get_migrations;
324
325
@@ -332,7 +333,9 @@ mod tests {
332
333
let entity = serde_json:: to_string ( & snapshot) . unwrap ( ) ;
333
334
SignedEntityRecord {
334
335
signed_entity_id : snapshot. digest ,
335
- signed_entity_type : SignedEntityType :: CardanoImmutableFilesFull ,
336
+ signed_entity_type : SignedEntityType :: CardanoImmutableFilesFull (
337
+ snapshot. beacon ,
338
+ ) ,
336
339
certificate_id : snapshot. certificate_hash ,
337
340
entity,
338
341
created_at : snapshot. created_at ,
@@ -370,16 +373,26 @@ mod tests {
370
373
. bind ( 1 , signed_entity_record. signed_entity_id . as_str ( ) )
371
374
. unwrap ( ) ;
372
375
statement
373
- . bind ( 2 , signed_entity_record. signed_entity_type as i64 )
376
+ . bind ( 2 , signed_entity_record. signed_entity_type . index ( ) as i64 )
374
377
. unwrap ( ) ;
375
378
statement
376
379
. bind ( 3 , signed_entity_record. certificate_id . as_str ( ) )
377
380
. unwrap ( ) ;
378
381
statement
379
- . bind ( 4 , signed_entity_record. entity . as_str ( ) )
382
+ . bind (
383
+ 4 ,
384
+ signed_entity_record
385
+ . signed_entity_type
386
+ . get_json_beacon ( )
387
+ . unwrap ( )
388
+ . as_str ( ) ,
389
+ )
390
+ . unwrap ( ) ;
391
+ statement
392
+ . bind ( 5 , signed_entity_record. entity . as_str ( ) )
380
393
. unwrap ( ) ;
381
394
statement
382
- . bind ( 5 , signed_entity_record. created_at . as_str ( ) )
395
+ . bind ( 6 , signed_entity_record. created_at . as_str ( ) )
383
396
. unwrap ( ) ;
384
397
385
398
statement. next ( ) . unwrap ( ) ;
@@ -405,7 +418,7 @@ mod tests {
405
418
let aliases = SourceAlias :: new ( & [ ( "{:signed_entity:}" , "se" ) ] ) ;
406
419
407
420
assert_eq ! (
408
- "se.signed_entity_id as signed_entity_id, se.signed_entity_type_id as signed_entity_type_id, se.certificate_id as certificate_id, se.entity as entity, se.created_at as created_at"
421
+ "se.signed_entity_id as signed_entity_id, se.signed_entity_type_id as signed_entity_type_id, se.certificate_id as certificate_id, se.beacon as beacon, se. entity as entity, se.created_at as created_at"
409
422
. to_string( ) ,
410
423
projection. expand( aliases)
411
424
) ;
@@ -422,7 +435,7 @@ mod tests {
422
435
423
436
assert_eq ! ( "signed_entity_type_id = ?1" . to_string( ) , filter) ;
424
437
assert_eq ! (
425
- vec![ Value :: Integer ( SignedEntityType :: dummy( ) as i64 ) ] ,
438
+ vec![ Value :: Integer ( SignedEntityType :: dummy( ) . index ( ) as i64 ) ] ,
426
439
values
427
440
) ;
428
441
}
@@ -451,16 +464,20 @@ mod tests {
451
464
let ( values, params) = condition. expand ( ) ;
452
465
453
466
assert_eq ! (
454
- "(signed_entity_id, signed_entity_type_id, certificate_id, entity, created_at) values (?1, ?2, ?3, ?4, ?5)" . to_string( ) ,
467
+ "(signed_entity_id, signed_entity_type_id, certificate_id, beacon, entity, created_at) values (?1, ?2, ?3, ?4, ?5, ?6 )" . to_string( ) ,
455
468
values
456
469
) ;
457
470
assert_eq ! (
458
471
vec![
459
472
Value :: String ( signed_entity_record. signed_entity_id) ,
460
- Value :: Integer (
461
- i64 :: try_from( signed_entity_record. signed_entity_type as usize ) . unwrap( )
462
- ) ,
473
+ Value :: Integer ( signed_entity_record. signed_entity_type. index( ) as i64 ) ,
463
474
Value :: String ( signed_entity_record. certificate_id) ,
475
+ Value :: String (
476
+ signed_entity_record
477
+ . signed_entity_type
478
+ . get_json_beacon( )
479
+ . unwrap( )
480
+ ) ,
464
481
Value :: String ( signed_entity_record. entity) ,
465
482
Value :: String ( signed_entity_record. created_at) ,
466
483
] ,
@@ -485,14 +502,17 @@ mod tests {
485
502
assert_eq ! ( vec![ first_signed_entity_type] , signed_entity_records) ;
486
503
487
504
let signed_entity_records: Vec < SignedEntityRecord > = provider
488
- . get_by_signed_entity_type ( SignedEntityType :: CardanoImmutableFilesFull )
505
+ . get_by_signed_entity_type ( SignedEntityType :: CardanoImmutableFilesFull (
506
+ Beacon :: default ( ) ,
507
+ ) )
489
508
. unwrap ( )
490
509
. collect ( ) ;
491
510
let expected_signed_entity_records: Vec < SignedEntityRecord > = signed_entity_records
492
511
. iter ( )
493
512
. filter_map ( |se| {
494
- ( se. signed_entity_type == SignedEntityType :: CardanoImmutableFilesFull )
495
- . then_some ( se. to_owned ( ) )
513
+ ( se. signed_entity_type . index ( )
514
+ == SignedEntityType :: CardanoImmutableFilesFull ( Beacon :: default ( ) ) . index ( ) )
515
+ . then_some ( se. to_owned ( ) )
496
516
} )
497
517
. collect ( ) ;
498
518
assert_eq ! ( expected_signed_entity_records, signed_entity_records) ;
0 commit comments