oneiriq-surql 0.2.2

Code-first database toolkit for SurrealDB - schema definitions, migrations, query building, and typed CRUD (Rust port of oneiriq-surql). Published as the `oneiriq-surql` crate; imported as `use surql::...`.
Documentation
//! Schema definition layer.
//!
//! Port of `surql/schema/` from `oneiriq-surql` (Python). This module currently
//! covers the pure definition types:
//!
//! - [`fields`]: [`FieldDefinition`] + [`FieldType`] enum and builder helpers
//!   ([`string_field`], [`int_field`], [`float_field`], [`bool_field`],
//!   [`datetime_field`], [`record_field`], [`array_field`], [`object_field`],
//!   [`computed_field`]).
//! - [`table`]: [`TableDefinition`] + [`TableMode`], [`IndexDefinition`] /
//!   [`IndexType`] / [`MTreeDistanceType`] / [`HnswDistanceType`] /
//!   [`MTreeVectorType`], and [`EventDefinition`]; plus [`table_schema`],
//!   [`index`], [`unique_index`], [`search_index`], [`mtree_index`],
//!   [`hnsw_index`], [`event`] builders.
//! - [`edge`]: [`EdgeDefinition`] + [`EdgeMode`] and [`edge_schema`] /
//!   [`typed_edge`] / [`bidirectional_edge`] helpers.
//! - [`access`]: [`AccessDefinition`] + [`AccessType`], [`JwtConfig`] /
//!   [`RecordAccessConfig`] credential-config types, and the
//!   [`access_schema`] / [`jwt_access`] / [`record_access`] helpers.
//!
//! Each value object exposes a `to_surql*` method that renders the matching
//! `DEFINE` statement.
//!
//! - [`sql`]: free functions ([`generate_table_sql`], [`generate_edge_sql`],
//!   [`generate_access_sql`], [`generate_schema_sql`]) composing full
//!   DEFINE-statement scripts from the definitions above.
//! - [`registry`]: process-wide [`SchemaRegistry`] singleton plus the
//!   [`get_registry`], [`register_table`], [`register_edge`],
//!   [`clear_registry`], [`get_registered_tables`], and
//!   [`get_registered_edges`] helpers.
//! - [`validator`]: cross-schema validation comparing code-defined schemas
//!   against database-observed schemas; returns a `Vec<ValidationResult>`.
//! - [`validator_utils`]: filtering, grouping, summary, and human-readable
//!   report helpers for working with validation results.
//! - [`parser`]: inverse of the definition-to-SurrealQL path — parses
//!   `INFO FOR DB` / `INFO FOR TABLE` responses back into [`TableDefinition`]
//!   / [`EdgeDefinition`] / [`AccessDefinition`] values.
//! - [`themes`]: preset themes ([`modern_theme`], [`dark_theme`],
//!   [`forest_theme`], [`minimal_theme`]) plus [`Theme`], [`ColorScheme`],
//!   [`GraphVizTheme`], [`MermaidTheme`], [`ASCIITheme`] and the
//!   [`get_theme`] / [`list_themes`] helpers.
//! - [`visualize`]: [`generate_mermaid`], [`generate_graphviz`],
//!   [`generate_ascii`] diagram generators plus [`visualize_schema`] /
//!   [`visualize_from_registry`] and the [`OutputFormat`] enum.
//! - [`utils`]: shared helpers used by the visualiser
//!   ([`display_width`], [`strip_ansi`]).

pub mod access;
pub mod edge;
pub mod fields;
pub mod parser;
pub mod registry;
pub mod sql;
pub mod table;
pub mod themes;
pub mod utils;
pub mod validator;
pub mod validator_utils;
pub mod visualize;

pub use access::{
    access_schema, jwt_access, record_access, AccessDefinition, AccessSchemaBuilder, AccessType,
    JwtConfig, RecordAccessConfig,
};
pub use edge::{bidirectional_edge, edge_schema, typed_edge, EdgeDefinition, EdgeMode};
pub use fields::{
    array_field, bool_field, computed_field, datetime_field, field, float_field, int_field,
    object_field, record_field, string_field, validate_field_name, FieldBuilder, FieldDefinition,
    FieldType,
};
pub use parser::{
    parse_access, parse_db_info, parse_event, parse_field, parse_fields, parse_index,
    parse_indexes, parse_table_info, parse_table_mode, DatabaseInfo,
};
pub use registry::{
    clear_registry, get_registered_edges, get_registered_tables, get_registry, register_edge,
    register_table, SchemaRegistry,
};
pub use sql::{generate_access_sql, generate_edge_sql, generate_schema_sql, generate_table_sql};
pub use table::{
    event, hnsw_index, index, mtree_index, search_index, table_schema, unique_index,
    EventDefinition, HnswDistanceType, IndexDefinition, IndexType, MTreeDistanceType,
    MTreeVectorType, TableDefinition, TableMode,
};
pub use themes::{
    dark_ascii, dark_color_scheme, dark_graphviz, dark_mermaid, dark_theme, forest_ascii,
    forest_color_scheme, forest_graphviz, forest_mermaid, forest_theme, get_theme, list_themes,
    minimal_ascii, minimal_color_scheme, minimal_graphviz, minimal_mermaid, minimal_theme,
    modern_ascii, modern_color_scheme, modern_graphviz, modern_mermaid, modern_theme, ASCIITheme,
    ColorScheme, GraphVizTheme, MermaidTheme, Theme,
};
pub use utils::{char_display_width, display_width, strip_ansi};
pub use validator::{
    normalize_expression, validate_edge, validate_edges, validate_field, validate_index,
    validate_schema, validate_table, validate_tables, ValidationResult, ValidationSeverity,
};
pub use validator_utils::{
    filter_by_severity, filter_errors, filter_warnings, format_validation_report,
    get_validation_summary, group_by_table, has_errors, ValidationSummary,
};
pub use visualize::{
    generate_ascii, generate_graphviz, generate_mermaid, visualize_from_registry, visualize_schema,
    OutputFormat, ThemeOption,
};