@@ -2,7 +2,7 @@ use diesel::{ExpressionMethods, JoinOnDsl, OptionalExtension, QueryDsl, RunQuery
22use std:: { collections:: HashMap , sync:: Arc , time:: SystemTime } ;
33
44use graph:: {
5- components:: store:: { BlockStore as _, DeploymentId } ,
5+ components:: store:: { BlockStore as _, DeploymentId , DeploymentLocator } ,
66 data:: query:: QueryTarget ,
77 prelude:: {
88 anyhow:: { anyhow, bail, Error } ,
@@ -84,10 +84,9 @@ impl CopyState {
8484 }
8585}
8686
87- pub async fn create (
87+ async fn create_inner (
8888 store : Arc < Store > ,
89- primary : ConnectionPool ,
90- src : DeploymentSearch ,
89+ src : & DeploymentLocator ,
9190 shard : String ,
9291 shards : Vec < String > ,
9392 node : String ,
@@ -104,7 +103,6 @@ pub async fn create(
104103 } ;
105104
106105 let subgraph_store = store. subgraph_store ( ) ;
107- let src = src. locate_unique ( & primary) ?;
108106 let query_store = store
109107 . query_store ( QueryTarget :: Deployment (
110108 src. hash . clone ( ) ,
@@ -154,6 +152,32 @@ pub async fn create(
154152 Ok ( ( ) )
155153}
156154
155+ pub async fn create (
156+ store : Arc < Store > ,
157+ primary : ConnectionPool ,
158+ src : DeploymentSearch ,
159+ shard : String ,
160+ shards : Vec < String > ,
161+ node : String ,
162+ block_offset : u32 ,
163+ activate : bool ,
164+ replace : bool ,
165+ ) -> Result < ( ) , Error > {
166+ let src = src. locate_unique ( & primary) ?;
167+ create_inner (
168+ store,
169+ & src,
170+ shard,
171+ shards,
172+ node,
173+ block_offset,
174+ activate,
175+ replace,
176+ )
177+ . await
178+ . map_err ( |e| anyhow ! ( "cannot copy {src}: {e}" ) )
179+ }
180+
157181pub fn activate ( store : Arc < SubgraphStore > , deployment : String , shard : String ) -> Result < ( ) , Error > {
158182 let shard = Shard :: new ( shard) ?;
159183 let deployment =
0 commit comments