kosame_repr 0.3.0

Macro-based Rust ORM focused on developer ergonomics
Documentation
use crate::Ident;

use super::{Column, Relation};

pub struct Table<'a> {
    name: Ident<'a>,
    columns: &'a [&'a Column<'a>],
    relations: &'a [&'a Relation<'a>],
}

impl<'a> Table<'a> {
    #[inline]
    #[must_use]
    pub const fn new(
        name: &'a str,
        columns: &'a [&'a Column],
        relations: &'a [&'a Relation],
    ) -> Self {
        Self {
            name: Ident::new(name),
            columns,
            relations,
        }
    }

    #[inline]
    #[must_use]
    pub const fn name(&self) -> Ident<'a> {
        self.name
    }

    #[inline]
    #[must_use]
    pub const fn columns(&self) -> &'a [&'a Column<'a>] {
        self.columns
    }

    #[inline]
    #[must_use]
    pub const fn relations(&self) -> &'a [&'a Relation<'a>] {
        self.relations
    }
}