Skip to main content

CodegenBackend

Trait CodegenBackend 

Source
pub trait CodegenBackend: Send + Sync {
Show 13 methods // Required methods fn name(&self) -> &str; fn manifest(&self) -> &BackendManifest; fn generate_row_struct( &self, query_name: &str, columns: &[ResolvedColumn], ) -> Result<String, ScytheError>; fn generate_model_struct( &self, table_name: &str, columns: &[ResolvedColumn], ) -> Result<String, ScytheError>; fn generate_query_fn( &self, analyzed: &AnalyzedQuery, struct_name: &str, columns: &[ResolvedColumn], params: &[ResolvedParam], ) -> Result<String, ScytheError>; fn generate_enum_def( &self, enum_info: &EnumInfo, ) -> Result<String, ScytheError>; fn generate_composite_def( &self, composite: &CompositeInfo, ) -> Result<String, ScytheError>; // Provided methods fn file_header(&self) -> String { ... } fn file_footer(&self) -> String { ... } fn query_class_header(&self) -> String { ... } fn generate_rbs_file( &self, _context: &RbsGenerationContext, ) -> Option<String> { ... } fn apply_options( &mut self, _options: &HashMap<String, String>, ) -> Result<(), ScytheError> { ... } fn supported_engines(&self) -> &[&str] { ... }
}
Expand description

Trait that all codegen backends must implement.

Required Methods§

Source

fn name(&self) -> &str

The backend’s name (e.g. “rust-sqlx”, “rust-tokio-postgres”).

Source

fn manifest(&self) -> &BackendManifest

The backend’s manifest (type mappings, naming conventions, etc).

Source

fn generate_row_struct( &self, query_name: &str, columns: &[ResolvedColumn], ) -> Result<String, ScytheError>

Generate a row struct for a query result.

Source

fn generate_model_struct( &self, table_name: &str, columns: &[ResolvedColumn], ) -> Result<String, ScytheError>

Generate a model struct for a table.

Source

fn generate_query_fn( &self, analyzed: &AnalyzedQuery, struct_name: &str, columns: &[ResolvedColumn], params: &[ResolvedParam], ) -> Result<String, ScytheError>

Generate a query function.

Source

fn generate_enum_def(&self, enum_info: &EnumInfo) -> Result<String, ScytheError>

Generate an enum definition.

Source

fn generate_composite_def( &self, composite: &CompositeInfo, ) -> Result<String, ScytheError>

Generate a composite type definition.

Provided Methods§

Source

fn file_header(&self) -> String

Generate a file-level header (imports, docstring, etc). Returns an empty string by default; backends may override.

Generate a file-level footer (closing braces, etc). Returns an empty string by default; backends may override.

Source

fn query_class_header(&self) -> String

Generate a class header that wraps query functions only. When non-empty, the assembly will emit all type definitions (enums, row structs, model structs) first, then this class header, then all query functions, then the file footer. Returns an empty string by default (no class wrapper).

Source

fn generate_rbs_file(&self, _context: &RbsGenerationContext) -> Option<String>

Generate an RBS type signature file for Ruby backends. Returns None by default; Ruby backends override this.

Source

fn apply_options( &mut self, _options: &HashMap<String, String>, ) -> Result<(), ScytheError>

Apply per-backend configuration options from [[sql.gen]]. Backends override this to handle options like row_type = "pydantic".

Source

fn supported_engines(&self) -> &[&str]

Database engines this backend supports. Defaults to PostgreSQL only. Multi-DB backends override this.

Implementors§

Source§

impl CodegenBackend for CsharpMicrosoftSqliteBackend

Source§

impl CodegenBackend for CsharpMysqlConnectorBackend

Source§

impl CodegenBackend for CsharpNpgsqlBackend

Source§

impl CodegenBackend for ElixirEctoBackend

Source§

impl CodegenBackend for ElixirExqliteBackend

Source§

impl CodegenBackend for ElixirMyxqlBackend

Source§

impl CodegenBackend for ElixirPostgrexBackend

Source§

impl CodegenBackend for GoDatabaseSqlBackend

Source§

impl CodegenBackend for GoPgxBackend

Source§

impl CodegenBackend for JavaJdbcBackend

Source§

impl CodegenBackend for JavaR2dbcBackend

Source§

impl CodegenBackend for KotlinExposedBackend

Source§

impl CodegenBackend for KotlinJdbcBackend

Source§

impl CodegenBackend for KotlinR2dbcBackend

Source§

impl CodegenBackend for PhpAmphpBackend

Source§

impl CodegenBackend for PhpPdoBackend

Source§

impl CodegenBackend for PythonAiomysqlBackend

Source§

impl CodegenBackend for PythonAiosqliteBackend

Source§

impl CodegenBackend for PythonAsyncpgBackend

Source§

impl CodegenBackend for PythonDuckdbBackend

Source§

impl CodegenBackend for PythonPsycopg3Backend

Source§

impl CodegenBackend for RubyMysql2Backend

Source§

impl CodegenBackend for RubyPgBackend

Source§

impl CodegenBackend for RubySqlite3Backend

Source§

impl CodegenBackend for RubyTrilogyBackend

Source§

impl CodegenBackend for SqlxBackend

Source§

impl CodegenBackend for TokioPostgresBackend

Source§

impl CodegenBackend for TypescriptBetterSqlite3Backend

Source§

impl CodegenBackend for TypescriptDuckdbBackend

Source§

impl CodegenBackend for TypescriptMysql2Backend

Source§

impl CodegenBackend for TypescriptPgBackend

Source§

impl CodegenBackend for TypescriptPostgresBackend