subgraph/data_sources/sql/create_query/create_create_one_query/
mod.rs

1use 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}