use crate::{
dcl::{
AlterRoleStatement, AlterUserStatement, CreateRoleStatement, CreateUserStatement,
DropRoleStatement, DropUserStatement, GrantRoleStatement, GrantStatement,
RenameUserStatement, ResetRoleStatement, RevokeRoleStatement, RevokeStatement,
SetDefaultRoleStatement, SetRoleStatement,
},
query::{
AlterDatabaseStatement, AlterFunctionStatement, AlterIndexStatement,
AlterMaterializedViewStatement, AlterProcedureStatement, AlterSchemaStatement,
AlterSequenceStatement, AlterTableStatement, AlterTypeStatement, AnalyzeStatement,
CheckTableStatement, CommentStatement, CreateDatabaseStatement, CreateFunctionStatement,
CreateIndexStatement, CreateMaterializedViewStatement, CreateProcedureStatement,
CreateSchemaStatement, CreateSequenceStatement, CreateTableStatement,
CreateTriggerStatement, CreateTypeStatement, CreateViewStatement, DeleteStatement,
DropDatabaseStatement, DropFunctionStatement, DropIndexStatement,
DropMaterializedViewStatement, DropProcedureStatement, DropSchemaStatement,
DropSequenceStatement, DropTableStatement, DropTriggerStatement, DropTypeStatement,
DropViewStatement, InsertStatement, OptimizeTableStatement,
RefreshMaterializedViewStatement, ReindexStatement, RepairTableStatement, SelectStatement,
TruncateTableStatement, UpdateStatement, VacuumStatement,
},
value::Values,
};
mod cockroachdb;
mod mysql;
mod postgres;
mod sql_writer;
mod sqlite;
pub use cockroachdb::CockroachDBQueryBuilder;
pub use mysql::MySqlQueryBuilder;
pub use postgres::PostgresQueryBuilder;
pub use sql_writer::SqlWriter;
pub use sqlite::SqliteQueryBuilder;
pub trait QueryBuilder {
fn build_select(&self, stmt: &SelectStatement) -> (String, Values);
fn build_insert(&self, stmt: &InsertStatement) -> (String, Values);
fn build_update(&self, stmt: &UpdateStatement) -> (String, Values);
fn build_delete(&self, stmt: &DeleteStatement) -> (String, Values);
fn build_grant(&self, stmt: &GrantStatement) -> (String, Values);
fn build_revoke(&self, stmt: &RevokeStatement) -> (String, Values);
fn build_grant_role(&self, stmt: &GrantRoleStatement) -> (String, Values);
fn build_revoke_role(&self, stmt: &RevokeRoleStatement) -> (String, Values);
fn build_create_role(&self, stmt: &CreateRoleStatement) -> (String, Values);
fn build_drop_role(&self, stmt: &DropRoleStatement) -> (String, Values);
fn build_alter_role(&self, stmt: &AlterRoleStatement) -> (String, Values);
fn build_create_user(&self, stmt: &CreateUserStatement) -> (String, Values);
fn build_drop_user(&self, stmt: &DropUserStatement) -> (String, Values);
fn build_alter_user(&self, stmt: &AlterUserStatement) -> (String, Values);
fn build_rename_user(&self, stmt: &RenameUserStatement) -> (String, Values);
fn build_set_role(&self, stmt: &SetRoleStatement) -> (String, Values);
fn build_reset_role(&self, stmt: &ResetRoleStatement) -> (String, Values);
fn build_set_default_role(&self, stmt: &SetDefaultRoleStatement) -> (String, Values);
fn escape_identifier(&self, ident: &str) -> String;
fn format_placeholder(&self, index: usize) -> String;
fn build_create_table(&self, stmt: &CreateTableStatement) -> (String, Values);
fn build_alter_table(&self, stmt: &AlterTableStatement) -> (String, Values);
fn build_drop_table(&self, stmt: &DropTableStatement) -> (String, Values);
fn build_create_index(&self, stmt: &CreateIndexStatement) -> (String, Values);
fn build_drop_index(&self, stmt: &DropIndexStatement) -> (String, Values);
fn build_create_view(&self, stmt: &CreateViewStatement) -> (String, Values);
fn build_drop_view(&self, stmt: &DropViewStatement) -> (String, Values);
fn build_truncate_table(&self, stmt: &TruncateTableStatement) -> (String, Values);
fn build_create_trigger(&self, stmt: &CreateTriggerStatement) -> (String, Values);
fn build_drop_trigger(&self, stmt: &DropTriggerStatement) -> (String, Values);
fn build_alter_index(&self, stmt: &AlterIndexStatement) -> (String, Values);
fn build_reindex(&self, stmt: &ReindexStatement) -> (String, Values);
fn build_create_schema(&self, stmt: &CreateSchemaStatement) -> (String, Values);
fn build_alter_schema(&self, stmt: &AlterSchemaStatement) -> (String, Values);
fn build_drop_schema(&self, stmt: &DropSchemaStatement) -> (String, Values);
fn build_create_sequence(&self, stmt: &CreateSequenceStatement) -> (String, Values);
fn build_alter_sequence(&self, stmt: &AlterSequenceStatement) -> (String, Values);
fn build_drop_sequence(&self, stmt: &DropSequenceStatement) -> (String, Values);
fn build_comment(&self, stmt: &CommentStatement) -> (String, Values);
fn build_create_database(&self, stmt: &CreateDatabaseStatement) -> (String, Values);
fn build_alter_database(&self, stmt: &AlterDatabaseStatement) -> (String, Values);
fn build_drop_database(&self, stmt: &DropDatabaseStatement) -> (String, Values);
fn build_optimize_table(&self, stmt: &OptimizeTableStatement) -> (String, Values);
fn build_repair_table(&self, stmt: &RepairTableStatement) -> (String, Values);
fn build_check_table(&self, stmt: &CheckTableStatement) -> (String, Values);
fn build_create_function(&self, stmt: &CreateFunctionStatement) -> (String, Values);
fn build_alter_function(&self, stmt: &AlterFunctionStatement) -> (String, Values);
fn build_drop_function(&self, stmt: &DropFunctionStatement) -> (String, Values);
fn build_create_procedure(&self, stmt: &CreateProcedureStatement) -> (String, Values);
fn build_alter_procedure(&self, stmt: &AlterProcedureStatement) -> (String, Values);
fn build_drop_procedure(&self, stmt: &DropProcedureStatement) -> (String, Values);
fn build_create_type(&self, stmt: &CreateTypeStatement) -> (String, Values);
fn build_alter_type(&self, stmt: &AlterTypeStatement) -> (String, Values);
fn build_drop_type(&self, stmt: &DropTypeStatement) -> (String, Values);
fn build_vacuum(&self, stmt: &VacuumStatement) -> (String, Values);
fn build_analyze(&self, stmt: &AnalyzeStatement) -> (String, Values);
fn build_create_materialized_view(
&self,
stmt: &CreateMaterializedViewStatement,
) -> (String, Values);
fn build_alter_materialized_view(
&self,
stmt: &AlterMaterializedViewStatement,
) -> (String, Values);
fn build_drop_materialized_view(
&self,
stmt: &DropMaterializedViewStatement,
) -> (String, Values);
fn build_refresh_materialized_view(
&self,
stmt: &RefreshMaterializedViewStatement,
) -> (String, Values);
}