@@ -45,13 +45,15 @@ pub enum EntityModification {
4545 data : Arc < Entity > ,
4646 block : BlockNumber ,
4747 end : Option < BlockNumber > ,
48+ vid : i64 ,
4849 } ,
4950 /// Update the entity by overwriting it
5051 Overwrite {
5152 key : EntityKey ,
5253 data : Arc < Entity > ,
5354 block : BlockNumber ,
5455 end : Option < BlockNumber > ,
56+ vid : i64 ,
5557 } ,
5658 /// Remove the entity
5759 Remove { key : EntityKey , block : BlockNumber } ,
@@ -67,6 +69,7 @@ pub struct EntityWrite<'a> {
6769 // The end of the block range for which this write is valid. The value
6870 // of `end` itself is not included in the range
6971 pub end : Option < BlockNumber > ,
72+ pub vid : i64 ,
7073}
7174
7275impl std:: fmt:: Display for EntityWrite < ' _ > {
@@ -89,24 +92,28 @@ impl<'a> TryFrom<&'a EntityModification> for EntityWrite<'a> {
8992 data,
9093 block,
9194 end,
95+ vid,
9296 } => Ok ( EntityWrite {
9397 id : & key. entity_id ,
9498 entity : data,
9599 causality_region : key. causality_region ,
96100 block : * block,
97101 end : * end,
102+ vid : * vid,
98103 } ) ,
99104 EntityModification :: Overwrite {
100105 key,
101106 data,
102107 block,
103108 end,
109+ vid,
104110 } => Ok ( EntityWrite {
105111 id : & key. entity_id ,
106112 entity : & data,
107113 causality_region : key. causality_region ,
108114 block : * block,
109115 end : * end,
116+ vid : * vid,
110117 } ) ,
111118
112119 EntityModification :: Remove { .. } => Err ( ( ) ) ,
@@ -213,11 +220,13 @@ impl EntityModification {
213220 data,
214221 block,
215222 end,
223+ vid,
216224 } => Ok ( Insert {
217225 key,
218226 data,
219227 block,
220228 end,
229+ vid,
221230 } ) ,
222231 Remove { key, .. } => {
223232 return Err ( constraint_violation ! (
@@ -271,21 +280,23 @@ impl EntityModification {
271280}
272281
273282impl EntityModification {
274- pub fn insert ( key : EntityKey , data : Entity , block : BlockNumber ) -> Self {
283+ pub fn insert ( key : EntityKey , data : Entity , block : BlockNumber , vid : i64 ) -> Self {
275284 EntityModification :: Insert {
276285 key,
277286 data : Arc :: new ( data) ,
278287 block,
279288 end : None ,
289+ vid,
280290 }
281291 }
282292
283- pub fn overwrite ( key : EntityKey , data : Entity , block : BlockNumber ) -> Self {
293+ pub fn overwrite ( key : EntityKey , data : Entity , block : BlockNumber , vid : i64 ) -> Self {
284294 EntityModification :: Overwrite {
285295 key,
286296 data : Arc :: new ( data) ,
287297 block,
288298 end : None ,
299+ vid,
289300 }
290301 }
291302
@@ -1017,31 +1028,36 @@ mod test {
10171028
10181029 let value = value. clone ( ) ;
10191030 let key = THING_TYPE . parse_key ( "one" ) . unwrap ( ) ;
1031+ let vid = 0 ;
10201032 match value {
10211033 Ins ( block) => EntityModification :: Insert {
10221034 key,
10231035 data : Arc :: new ( entity ! { SCHEMA => id: "one" , count: block } ) ,
10241036 block,
10251037 end : None ,
1038+ vid,
10261039 } ,
10271040 Ovw ( block) => EntityModification :: Overwrite {
10281041 key,
10291042 data : Arc :: new ( entity ! { SCHEMA => id: "one" , count: block } ) ,
10301043 block,
10311044 end : None ,
1045+ vid,
10321046 } ,
10331047 Rem ( block) => EntityModification :: Remove { key, block } ,
10341048 InsC ( block, end) => EntityModification :: Insert {
10351049 key,
10361050 data : Arc :: new ( entity ! { SCHEMA => id: "one" , count: block } ) ,
10371051 block,
10381052 end : Some ( end) ,
1053+ vid,
10391054 } ,
10401055 OvwC ( block, end) => EntityModification :: Overwrite {
10411056 key,
10421057 data : Arc :: new ( entity ! { SCHEMA => id: "one" , count: block } ) ,
10431058 block,
10441059 end : Some ( end) ,
1060+ vid,
10451061 } ,
10461062 }
10471063 }
0 commit comments