Skip to content

Commit 2d0ea9a

Browse files
committed
Revert "chore: refactor database query generator usage"
This reverts commit 542b79f.
1 parent 30d6088 commit 2d0ea9a

14 files changed

+207
-118
lines changed

rust/cli/src/main.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ async fn main_wrapped() -> Result<(), String> {
134134
let database = database_query_generator_from_config(config)
135135
.map_err(|e| format!("Error creating database query generator: {}", e))?;
136136

137-
let (project, _) = parse_project(&*database)
137+
let (project, _) = parse_project(&database)
138138
.await
139139
.map_err(|e| format!("Error parsing project: {}", e))?;
140140

@@ -155,7 +155,7 @@ async fn main_wrapped() -> Result<(), String> {
155155

156156
let database = database_from_config(&config).await?;
157157
let query_generator = database.query_generator();
158-
let (project, file_system) = parse_project(&*query_generator).await?;
158+
let (project, file_system) = parse_project(&query_generator).await?;
159159

160160
// If cache table deletes any previous cache views.
161161
let cache_delete_views_sqls: Vec<(String, String)> = if build_args.cache_views {
@@ -167,7 +167,7 @@ async fn main_wrapped() -> Result<(), String> {
167167
.into_iter()
168168
.map(|view| {
169169
let is_cache =
170-
is_cache_full_path(&*database.query_generator(), &view.full_path)?;
170+
is_cache_full_path(&database.query_generator(), &view.full_path)?;
171171
Ok((view, is_cache))
172172
})
173173
.collect::<Result<Vec<_>, String>>()?;
@@ -192,7 +192,7 @@ async fn main_wrapped() -> Result<(), String> {
192192
let cache_to_create: Vec<(String, Vec<String>)> = if build_args.cache_views {
193193
let project_graph = project_to_graph(project.clone())?;
194194
let views =
195-
derive_hash_views(&*database.query_generator(), &project, &project_graph)?;
195+
derive_hash_views(&database.query_generator(), &project, &project_graph)?;
196196
Ok::<_, String>(
197197
views
198198
.into_iter()
@@ -206,7 +206,7 @@ async fn main_wrapped() -> Result<(), String> {
206206
let sqls = project_and_fs_to_sql_for_views(
207207
&project,
208208
&file_system,
209-
&*query_generator,
209+
&query_generator,
210210
false,
211211
false,
212212
)
@@ -287,12 +287,12 @@ async fn main_wrapped() -> Result<(), String> {
287287

288288
let database = database_from_config(&config).await?;
289289
let query_generator = database.query_generator();
290-
let (project, file_system) = parse_project(&*query_generator).await?;
290+
let (project, file_system) = parse_project(&query_generator).await?;
291291

292292
let limit = if test_args.verbose { None } else { Some(1) };
293293

294294
let tests = return_tests_sql(
295-
&*database.query_generator(),
295+
&database.query_generator(),
296296
&project,
297297
&file_system,
298298
test_args.full_source,
@@ -336,7 +336,7 @@ async fn main_wrapped() -> Result<(), String> {
336336
// TODO Need to reintroduce the progressbar
337337
println!("running tests {}", tests.len());
338338
return match run_tests_internal(
339-
&*query_generator,
339+
&query_generator,
340340
&file_system,
341341
&project,
342342
"",
@@ -473,7 +473,7 @@ async fn main_wrapped() -> Result<(), String> {
473473
Commands::GenerateSources(_) => {
474474
let config = get_config_file(&args.project_file)?;
475475
let database = database_from_config(&config).await?;
476-
let sources = generate_sources(&*database).await?;
476+
let sources = generate_sources(database.as_ref()).await?;
477477
let project_file = ProjectFile {
478478
sources,
479479
models: vec![],
@@ -488,12 +488,12 @@ async fn main_wrapped() -> Result<(), String> {
488488
let config = get_config_file(&args.project_file)?;
489489
let database = database_from_config(&config).await?;
490490
let query_generator = database.query_generator();
491-
let (project, file_system) = parse_project(&*query_generator).await?;
491+
let (project, file_system) = parse_project(&query_generator).await?;
492492
let snapshots_sql = project_and_fs_to_sql_for_snapshots(
493493
&project,
494494
&file_system,
495-
&*query_generator,
496-
&*database,
495+
&query_generator,
496+
database.as_ref(),
497497
)
498498
.await?;
499499

@@ -603,7 +603,7 @@ fn address_to_source(address_with_columns: AddressWithColumns) -> ProjectFileSou
603603
}
604604

605605
async fn parse_project(
606-
database: &dyn DatabaseQueryGenerator,
606+
database: &impl DatabaseQueryGenerator,
607607
) -> Result<(quary_proto::Project, LocalFS), String> {
608608
let dir = std::env::current_dir().map_err(|e| e.to_string())?;
609609
let filesystem = LocalFS::new(dir);

rust/cli/src/rpc_functions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ async fn list_sources(
9999
_: ListSourcesRequest,
100100
database: Box<dyn DatabaseConnection>,
101101
) -> Result<ListSourcesResponse, String> {
102-
let sources = generate_sources(&*database)
102+
let sources = generate_sources(database.as_ref())
103103
.await
104104
.map_err(|e| format!("Failed to list sources: {}", e))?;
105105
Ok(ListSourcesResponse { sources })

rust/core/src/automatic_branching.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ pub fn derive_model_hash(
9191
}
9292
hasher.finalize()
9393
};
94-
Ok(HEXLOWER.encode(&*hash_of_hashes))
94+
Ok(HEXLOWER.encode(hash_of_hashes.as_ref()))
9595
}
9696

9797
fn hash_source(source: &Source) -> String {
@@ -139,7 +139,7 @@ pub async fn derive_sha256_file_contents(
139139
/// and seed inside of the project that is passed in. The returned type is a map from the model
140140
/// to a tuple of the model hash and sql statements required to create the view.
141141
pub fn derive_hash_views<'a>(
142-
database: &dyn DatabaseQueryGenerator,
142+
database: &impl DatabaseQueryGenerator,
143143
project: &'a Project,
144144
project_graph: &'_ ProjectGraph,
145145
) -> Result<BTreeMap<ModelName<'a>, (String, Vec<String>)>, String> {
@@ -206,7 +206,7 @@ pub fn cache_view_name_to_table_name_and_hash(
206206

207207
/// is_cache_full_path returns true if the full path is a cache view name.
208208
pub fn is_cache_full_path(
209-
database: &dyn DatabaseQueryGenerator,
209+
database: &impl DatabaseQueryGenerator,
210210
full_path: &str,
211211
) -> Result<bool, String> {
212212
let view_name = database.return_name_from_full_path(full_path)?;

rust/core/src/databases.rs

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,85 @@ pub trait DatabaseQueryGenerator: SnapshotGenerator + Debug + Sync {
141141
}
142142
}
143143

144+
impl DatabaseQueryGenerator for Box<dyn DatabaseQueryGenerator> {
145+
fn validate_materialization_type(
146+
&self,
147+
materialization_type: &Option<String>,
148+
) -> Result<(), String> {
149+
self.as_ref()
150+
.validate_materialization_type(materialization_type)
151+
}
152+
153+
fn models_drop_query(
154+
&self,
155+
view_name: &str,
156+
materialization_type: &Option<String>,
157+
) -> Result<String, String> {
158+
self.as_ref()
159+
.models_drop_query(view_name, materialization_type)
160+
}
161+
162+
fn models_create_query(
163+
&self,
164+
view_name: &str,
165+
original_select_statement: &str,
166+
materialization_type: &Option<String>,
167+
) -> Result<String, String> {
168+
self.as_ref().models_create_query(
169+
view_name,
170+
original_select_statement,
171+
materialization_type,
172+
)
173+
}
174+
175+
fn seeds_drop_table_query(&self, table_name: &str) -> String {
176+
self.as_ref().seeds_drop_table_query(table_name)
177+
}
178+
179+
fn seeds_create_table_query(&self, table_name: &str, columns: &[String]) -> String {
180+
self.as_ref().seeds_create_table_query(table_name, columns)
181+
}
182+
183+
fn seeds_insert_into_table_query(
184+
&self,
185+
table_name: &str,
186+
columns: &[String],
187+
values: &[Vec<String>],
188+
) -> String {
189+
self.as_ref()
190+
.seeds_insert_into_table_query(table_name, columns, values)
191+
}
192+
193+
fn escape_seed_value(&self, seed_value: &str) -> String {
194+
self.as_ref().escape_seed_value(seed_value)
195+
}
196+
197+
fn return_full_path_requirement(&self, table_name: &str) -> String {
198+
self.as_ref().return_full_path_requirement(table_name)
199+
}
200+
201+
fn return_name_from_full_path<'a>(&self, full_path: &'a str) -> Result<&'a str, String> {
202+
self.as_ref().return_name_from_full_path(full_path)
203+
}
204+
205+
fn automatic_cache_sql_create_statement(
206+
&self,
207+
model: &str,
208+
model_cache_name: &str,
209+
) -> Vec<String> {
210+
self.as_ref()
211+
.automatic_cache_sql_create_statement(model, model_cache_name)
212+
}
213+
214+
fn get_dialect(&self) -> &Dialect {
215+
self.as_ref().get_dialect()
216+
}
217+
218+
fn database_name_wrapper(&self, name: &str) -> String {
219+
self.as_ref().database_name_wrapper(name)
220+
}
221+
}
222+
144223
pub trait SnapshotGenerator {
145224
/// GenerateSnapshotSQL generates the SQL statements to create a snapshot of a table.
146225
///
@@ -191,6 +270,36 @@ pub trait SnapshotGenerator {
191270
}
192271
}
193272

273+
impl SnapshotGenerator for Box<dyn DatabaseQueryGenerator> {
274+
fn generate_snapshot_sql(
275+
&self,
276+
path: &str,
277+
templated_select: &str,
278+
unique_key: &str,
279+
strategy: &StrategyType,
280+
table_exists: Option<bool>,
281+
) -> Result<Vec<String>, String> {
282+
self.as_ref().generate_snapshot_sql(
283+
path,
284+
templated_select,
285+
unique_key,
286+
strategy,
287+
table_exists,
288+
)
289+
}
290+
291+
fn generate_snapshot_query(
292+
&self,
293+
templated_select: &str,
294+
unique_key: &str,
295+
strategy: &StrategyType,
296+
now: &str,
297+
) -> Result<String, String> {
298+
self.as_ref()
299+
.generate_snapshot_query(templated_select, unique_key, strategy, now)
300+
}
301+
}
302+
194303
pub fn base_for_seeds_create_table_specifying_text_type(
195304
text_type: &str,
196305
table_name: &str,

rust/core/src/models.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub fn validate_model_name(name: &str) -> Result<(), String> {
2525
/// parse_model_schemas_to_views takes in a reader and reads it to a View file
2626
/// name_replacing_strategy takes in the reference name and replaces it with whatever strategy is necessary.
2727
pub async fn parse_model_schemas_to_views<F>(
28-
database: &dyn DatabaseQueryGenerator,
28+
database: &impl DatabaseQueryGenerator,
2929
file_reader: Box<dyn AsyncRead + Send + Unpin>,
3030
view_name: &str,
3131
materialization: &Option<String>,
@@ -76,7 +76,7 @@ pub async fn read_normalise_model(
7676
}
7777

7878
fn return_sql_model_template(
79-
database: &dyn DatabaseQueryGenerator,
79+
database: &impl DatabaseQueryGenerator,
8080
name: &str,
8181
materialization: &Option<String>,
8282
select_statement: &str,

0 commit comments

Comments
 (0)