dinoco 0.0.7

A modern Rust ORM for schema-driven queries, migrations, and database operations.
Documentation
use dinoco_engine::{DinocoGenericRow, DinocoResult, DinocoRow};

mod insert;
mod lookup;
mod qualify;
mod read;
mod relation;
mod reload;
mod update;

pub use insert::*;
pub use qualify::*;
pub use read::*;
pub use relation::*;
pub(crate) use reload::{execute_reload_by_identity, execute_reload_many_by_identity};
pub use update::*;

pub(super) struct DinocoCountRow {
    pub(super) count: i64,
}

pub(super) struct DinocoValueRow {
    pub(super) value: dinoco_engine::DinocoValue,
}

pub(super) struct DinocoPairRow {
    pub(super) left: dinoco_engine::DinocoValue,
    pub(super) right: dinoco_engine::DinocoValue,
}

impl DinocoRow for DinocoCountRow {
    fn from_row<R: DinocoGenericRow>(row: &R) -> DinocoResult<Self> {
        Ok(Self { count: row.get(0)? })
    }
}

impl DinocoRow for DinocoValueRow {
    fn from_row<R: DinocoGenericRow>(row: &R) -> DinocoResult<Self> {
        Ok(Self { value: row.get_value(0)? })
    }
}

impl DinocoRow for DinocoPairRow {
    fn from_row<R: DinocoGenericRow>(row: &R) -> DinocoResult<Self> {
        Ok(Self { left: row.get_value(0)?, right: row.get_value(1)? })
    }
}

pub(super) fn should_qualify_query_column(value: &str) -> bool {
    !value.is_empty()
        && value != "*"
        && !value.contains('.')
        && !value.contains(' ')
        && !value.contains('(')
        && !value.contains(')')
        && !value.contains(',')
}