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§