Skip to content

Commit 62290c6

Browse files
author
Zoran Cvetkov
committed
add types to the enities
1 parent 9b184f9 commit 62290c6

File tree

7 files changed

+29
-46
lines changed

7 files changed

+29
-46
lines changed

graph/src/blockchain/block_stream.rs

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -437,33 +437,7 @@ async fn get_entities_for_range(
437437
schema: &InputSchema,
438438
from: BlockNumber,
439439
to: BlockNumber,
440-
/*
441-
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, Error> {
442-
let mut entities_by_block = BTreeMap::new();
443-
444-
for entity_name in &filter.entities {
445-
let entity_type = schema.entity_type(entity_name)?;
446-
447-
let entity_ranges = store.get_range(&entity_type, from..to)?;
448-
449-
for (block_number, entity_vec) in entity_ranges {
450-
let mut entity_vec = entity_vec
451-
.into_iter()
452-
.map(|e| EntityWithType {
453-
entity_type: entity_type.clone(),
454-
entity: e,
455-
})
456-
.collect();
457-
458-
entities_by_block
459-
.entry(block_number)
460-
.and_modify(|existing_vec: &mut Vec<EntityWithType>| {
461-
existing_vec.append(&mut entity_vec);
462-
})
463-
.or_insert(entity_vec);
464-
}
465-
*/
466-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, Error> {
440+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, Error> {
467441
let mut entity_types = vec![];
468442
for entity_name in &filter.entities {
469443
let entity_type = schema.entity_type(entity_name)?;

graph/src/components/store/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ use std::sync::atomic::{AtomicUsize, Ordering};
2626
use std::sync::{Arc, RwLock};
2727
use std::time::Duration;
2828

29+
use crate::blockchain::block_stream::EntityWithType;
2930
use crate::blockchain::{Block, BlockHash, BlockPtr};
3031
use crate::cheap_clone::CheapClone;
3132
use crate::components::store::write::EntityModification;
@@ -1043,7 +1044,7 @@ impl ReadStore for EmptyStore {
10431044
&self,
10441045
_entity_types: Vec<EntityType>,
10451046
_block_range: Range<BlockNumber>,
1046-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError> {
1047+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError> {
10471048
Ok(BTreeMap::new())
10481049
}
10491050

graph/src/components/store/traits.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use async_trait::async_trait;
66
use web3::types::{Address, H256};
77

88
use super::*;
9-
use crate::blockchain::block_stream::FirehoseCursor;
9+
use crate::blockchain::block_stream::{EntityWithType, FirehoseCursor};
1010
use crate::blockchain::{BlockTime, ChainIdentifier};
1111
use crate::components::metrics::stopwatch::StopwatchMetrics;
1212
use crate::components::server::index_node::VersionInfo;
@@ -233,7 +233,7 @@ pub trait ReadStore: Send + Sync + 'static {
233233
&self,
234234
entity_types: Vec<EntityType>,
235235
block_range: Range<BlockNumber>,
236-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError>;
236+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError>;
237237

238238
/// Reverse lookup
239239
fn get_derived(
@@ -261,7 +261,7 @@ impl<T: ?Sized + ReadStore> ReadStore for Arc<T> {
261261
&self,
262262
entity_types: Vec<EntityType>,
263263
block_range: Range<BlockNumber>,
264-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError> {
264+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError> {
265265
(**self).get_range(entity_types, block_range)
266266
}
267267

store/postgres/src/deployment_store.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use diesel::pg::PgConnection;
44
use diesel::r2d2::{ConnectionManager, PooledConnection};
55
use diesel::{prelude::*, sql_query};
66
use graph::anyhow::Context;
7-
use graph::blockchain::block_stream::FirehoseCursor;
7+
use graph::blockchain::block_stream::{EntityWithType, FirehoseCursor};
88
use graph::blockchain::BlockTime;
99
use graph::components::store::write::RowGroup;
1010
use graph::components::store::{
@@ -1061,7 +1061,7 @@ impl DeploymentStore {
10611061
site: Arc<Site>,
10621062
entity_types: Vec<EntityType>,
10631063
block_range: Range<BlockNumber>,
1064-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError> {
1064+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError> {
10651065
let mut conn = self.get_conn()?;
10661066
let layout = self.layout(&mut conn, site)?;
10671067
layout.find_range(&mut conn, entity_types, block_range)

store/postgres/src/relational.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ use diesel::serialize::{Output, ToSql};
2424
use diesel::sql_types::Text;
2525
use diesel::{connection::SimpleConnection, Connection};
2626
use diesel::{debug_query, sql_query, OptionalExtension, PgConnection, QueryResult, RunQueryDsl};
27+
use graph::blockchain::block_stream::EntityWithType;
2728
use graph::blockchain::BlockTime;
2829
use graph::cheap_clone::CheapClone;
2930
use graph::components::store::write::{RowGroup, WriteChunk};
@@ -520,23 +521,30 @@ impl Layout {
520521
conn: &mut PgConnection,
521522
entity_types: Vec<EntityType>,
522523
block_range: Range<BlockNumber>,
523-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError> {
524+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError> {
524525
let mut tables = vec![];
526+
let mut et_map: HashMap<String, Arc<EntityType>> = HashMap::new();
525527
for et in entity_types {
526-
tables.push(self.table_for_entity(&et)?.as_ref())
528+
tables.push(self.table_for_entity(&et)?.as_ref());
529+
et_map.insert(et.to_string(), Arc::new(et));
527530
}
528-
let mut entities: BTreeMap<BlockNumber, Vec<Entity>> = BTreeMap::new();
531+
let mut entities: BTreeMap<BlockNumber, Vec<EntityWithType>> = BTreeMap::new();
529532
if let Some(vec) = FindRangeQuery::new(&tables, block_range)
530533
.get_results::<EntityData>(conn)
531534
.optional()?
532535
{
533536
for e in vec {
534537
let block = e.clone().deserialize_block_number::<Entity>()?;
535-
let en = e.deserialize_with_layout::<Entity>(self, None)?;
538+
let entity_type = e.entity_type(&self.input_schema);
539+
let entity = e.deserialize_with_layout::<Entity>(self, None)?;
540+
let ewt = EntityWithType {
541+
entity_type,
542+
entity,
543+
};
536544
match entities.get_mut(&block) {
537-
Some(vec) => vec.push(en),
545+
Some(vec) => vec.push(ewt),
538546
None => {
539-
let _ = entities.insert(block, vec![en]);
547+
let _ = entities.insert(block, vec![ewt]);
540548
}
541549
};
542550
}

store/postgres/src/writable.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::sync::{Mutex, RwLock, TryLockError as RwLockError};
55
use std::time::Instant;
66
use std::{collections::BTreeMap, sync::Arc};
77

8-
use graph::blockchain::block_stream::FirehoseCursor;
8+
use graph::blockchain::block_stream::{EntityWithType, FirehoseCursor};
99
use graph::blockchain::BlockTime;
1010
use graph::components::store::{Batch, DeploymentCursorTracker, DerivedEntityQuery, ReadStore};
1111
use graph::constraint_violation;
@@ -356,7 +356,7 @@ impl SyncStore {
356356
&self,
357357
entity_types: Vec<EntityType>,
358358
block_range: Range<BlockNumber>,
359-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError> {
359+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError> {
360360
retry::forever(&self.logger, "get_range", || {
361361
self.writable.get_range(
362362
self.site.cheap_clone(),
@@ -1235,7 +1235,7 @@ impl Queue {
12351235
&self,
12361236
entity_types: Vec<EntityType>,
12371237
block_range: Range<BlockNumber>,
1238-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError> {
1238+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError> {
12391239
self.store.get_range(entity_types, block_range)
12401240
}
12411241

@@ -1455,7 +1455,7 @@ impl Writer {
14551455
&self,
14561456
entity_types: Vec<EntityType>,
14571457
block_range: Range<BlockNumber>,
1458-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError> {
1458+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError> {
14591459
match self {
14601460
Writer::Sync(store) => store.get_range(entity_types, block_range),
14611461
Writer::Async { queue, .. } => queue.get_range(entity_types, block_range),
@@ -1594,7 +1594,7 @@ impl ReadStore for WritableStore {
15941594
&self,
15951595
entity_types: Vec<EntityType>,
15961596
block_range: Range<BlockNumber>,
1597-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError> {
1597+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError> {
15981598
self.writer.get_range(entity_types, block_range)
15991599
}
16001600

store/test-store/tests/graph/entity_cache.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use graph::blockchain::block_stream::FirehoseCursor;
1+
use graph::blockchain::block_stream::{EntityWithType, FirehoseCursor};
22
use graph::blockchain::BlockTime;
33
use graph::components::store::{
44
DeploymentCursorTracker, DerivedEntityQuery, GetScope, LoadRelatedRequest, ReadStore,
@@ -71,7 +71,7 @@ impl ReadStore for MockStore {
7171
&self,
7272
_entity_types: Vec<EntityType>,
7373
_block_range: Range<BlockNumber>,
74-
) -> Result<BTreeMap<BlockNumber, Vec<Entity>>, StoreError> {
74+
) -> Result<BTreeMap<BlockNumber, Vec<EntityWithType>>, StoreError> {
7575
todo!()
7676
}
7777

0 commit comments

Comments
 (0)