@@ -12,6 +12,7 @@ use prometheus::{
1212 register_counter, register_counter_vec, register_histogram, register_histogram_vec, Counter ,
1313 CounterVec , Histogram , HistogramVec ,
1414} ;
15+ use indexer_common:: tap:: CostModelSource ;
1516use serde:: { Deserialize , Serialize } ;
1617use serde_json:: Value ;
1718use thegraph_core:: DeploymentId ;
@@ -66,6 +67,16 @@ pub struct GraphQlCostModel {
6667 pub variables : Option < Value > ,
6768}
6869
70+ impl From < CostModel > for CostModelSource {
71+ fn from ( value : CostModel ) -> Self {
72+ Self {
73+ deployment_id : value. deployment ,
74+ model : value. model . unwrap_or_default ( ) ,
75+ variables : value. variables . unwrap_or_default ( ) . to_string ( ) ,
76+ }
77+ }
78+ }
79+
6980impl From < CostModel > for GraphQlCostModel {
7081 fn from ( model : CostModel ) -> Self {
7182 Self {
@@ -127,8 +138,20 @@ impl Query {
127138 ctx : & Context < ' _ > ,
128139 deployment_ids : Vec < DeploymentId > ,
129140 ) -> Result < Vec < GraphQlCostModel > , anyhow:: Error > {
130- let pool = & ctx. data_unchecked :: < Arc < SubgraphServiceState > > ( ) . database ;
141+ let state = & ctx. data_unchecked :: < Arc < SubgraphServiceState > > ( ) ;
142+
143+ let cost_model_sender = & state. value_check_sender ;
144+
145+ let pool = & state. database ;
131146 let cost_models = database:: cost_models ( pool, & deployment_ids) . await ?;
147+
148+ for model in & cost_models {
149+ let _ = cost_model_sender
150+ . tx_cost_model
151+ . send ( CostModelSource :: from ( model. clone ( ) ) )
152+ . await ;
153+ }
154+
132155 Ok ( cost_models. into_iter ( ) . map ( |m| m. into ( ) ) . collect ( ) )
133156 }
134157
@@ -137,10 +160,20 @@ impl Query {
137160 ctx : & Context < ' _ > ,
138161 deployment_id : DeploymentId ,
139162 ) -> Result < Option < GraphQlCostModel > , anyhow:: Error > {
163+
164+ let state = & ctx. data_unchecked :: < Arc < SubgraphServiceState > > ( ) ;
165+ let cost_model_sender = & state. value_check_sender ;
140166 let pool = & ctx. data_unchecked :: < Arc < SubgraphServiceState > > ( ) . database ;
141- database:: cost_model ( pool, & deployment_id)
142- . await
143- . map ( |model_opt| model_opt. map ( GraphQlCostModel :: from) )
167+ let model = database:: cost_model ( pool, & deployment_id) . await ?;
168+
169+ if let Some ( model) = & model {
170+ let _ = cost_model_sender
171+ . tx_cost_model
172+ . send ( CostModelSource :: from ( model. clone ( ) ) )
173+ . await ;
174+ }
175+
176+ Ok ( model. map ( GraphQlCostModel :: from) )
144177 }
145178}
146179
0 commit comments