datasources 0.1.5

Async datasource interfaces, middleware, registry, and test doubles
Documentation
use crate::built_repository::BuiltRepository;
use crate::connection::Connection;
use crate::crud_repository::CRUDRepository;
use crate::crud_repository_options::CRUDRepositoryOptions;
use crate::crud_repository_statements::CRUDRepositoryStatements;
use crate::readonly_repository_builder::assemble;
use crate::readonly_repository_statements::ReadonlyRepositoryStatements;
use crate::result::Result;
use std::sync::Arc;

pub struct CRUDRepositoryBuilder;

pub(crate) fn write_statements(read: &ReadonlyRepositoryStatements) -> CRUDRepositoryStatements {
    CRUDRepositoryStatements::new(
        read.table().to_string(),
        read.read_columns().to_vec(),
        read.mappings(),
    )
}

impl CRUDRepositoryBuilder {
    pub fn parts(
        connection: Arc<dyn Connection>,
        options: CRUDRepositoryOptions,
    ) -> Result<BuiltRepository> {
        let ids = options.ids;
        assemble(connection, options.read, ids)
    }

    pub fn build(
        connection: Arc<dyn Connection>,
        options: CRUDRepositoryOptions,
    ) -> Result<CRUDRepository> {
        CRUDRepository::new(connection, options)
    }
}