Skip to main content

CodegenBackend

Trait CodegenBackend 

Source
pub trait CodegenBackend: Send + Sync {
    // Required methods
    fn name(&self) -> &str;
    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 method
    fn file_header(&self) -> String { ... }
}
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 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.

Implementors§