/// {{ model_name }} model.
///
/// Scalar fields mirror the schema exactly. Partial `select` results use the
/// delegate projection APIs instead of this full model type.
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct {{ model_name }} {
{%- for field in scalar_fields %}
{%- if field.doc_comment %}
    /// {{ field.doc_comment }}
{%- endif %}
    pub {{ field.name }}: {{ field.rust_type }},
{%- endfor %}
{%- for field in relation_fields %}
    #[serde(default, alias = "{{ field.name }}_json")]
    /// Relation field (lazy-loaded)
    pub {{ field.name }}: {{ field.rust_type }},
{%- endfor %}
}
