clarax-django 1.0.1

High-performance Django integration layer — Rust-accelerated serialization, validation, and field mapping for Django 5.x+
Documentation
// Author: Abdulwahed Mansour
//! Django serialization — delegates to clarax-core.
//!
//! This module is a thin wrapper that converts Django-specific types
//! to clarax-core types and calls the core serialization engine.

use crate::error::DjangoError;
use crate::field_types::FieldDescriptor;

// Re-export the core types for downstream use.
pub use clarax_core::engine_serialize::SerializedRecord;
pub use clarax_core::types::FieldValue;

/// Serializes a set of Django field values into a JSON-compatible record.
///
/// Delegates to `clarax_core::serialize_fields()` after converting
/// Django descriptors to core descriptors.
pub fn serialize_model_fields(
    descriptors: &[FieldDescriptor],
    values: &[FieldValue],
) -> Result<SerializedRecord, DjangoError> {
    let core_descs: Vec<_> = descriptors.iter().map(|d| d.to_core()).collect();
    clarax_core::serialize_fields(&core_descs, values).map_err(|e| DjangoError::Serialization {
        field: "<batch>".into(),
        message: e.to_string(),
    })
}

/// Serializes multiple rows of Django field values.
///
/// Delegates to `clarax_core::serialize_rows()`.
pub fn serialize_queryset_rows(
    descriptors: &[FieldDescriptor],
    rows: &[Vec<FieldValue>],
) -> Result<Vec<SerializedRecord>, DjangoError> {
    let core_descs: Vec<_> = descriptors.iter().map(|d| d.to_core()).collect();
    clarax_core::serialize_rows(&core_descs, rows).map_err(|e| DjangoError::Serialization {
        field: "<batch>".into(),
        message: e.to_string(),
    })
}