subgraph/data_sources/sql/create_query/create_create_one_query/
mod.rs1use crate::{
2 configuration::subgraph::data_sources::sql::DialectEnum, data_sources::sql::SqlDataSource,
3};
4
5impl SqlDataSource {
6 pub fn create_create_one_query(
7 table_name: &str,
8 value_keys: &Vec<String>,
9 dialect: &DialectEnum,
10 ) -> Result<String, async_graphql::Error> {
11 let mut query = String::new();
12 query.push_str("INSERT INTO ");
13 query.push_str(table_name);
14 query.push_str(" (");
15
16 for i in 0..value_keys.len() {
17 query.push_str(&value_keys[i]);
18 if i != value_keys.len() - 1 {
19 query.push_str(", ");
20 }
21 }
22
23 query.push_str(") VALUES (");
24
25 for i in 0..value_keys.len() {
26 query.push_str(SqlDataSource::get_placeholder(dialect, Some(i as i32)).as_str());
27 if i != value_keys.len() - 1 {
28 query.push_str(", ");
29 }
30 }
31
32 query.push_str(")");
33
34 match dialect {
35 DialectEnum::POSTGRES => {
36 query.push_str(" RETURNING *");
37 }
38 _ => {}
39 }
40
41 if !query.ends_with(';') {
42 query.push(';');
43 }
44
45 Ok(query)
46 }
47}