use std::marker::PhantomData;

pub trait EntityMetadata {
    const TABLE_NAME: &'static str;

    type Columns: 'static;
    const C: &'static Self::Columns;
    const COLUMN_NAMES: &'static [&'static str];
}

#[derive(Debug)]
pub struct EntityColumn<T>(&'static str, PhantomData<T>);

impl<T> EntityColumn<T> {
    pub const fn new(s: &'static str) -> Self {
        return Self(s, PhantomData);
    }

    pub const fn as_str(&self) -> &'static str {
        return &self.0;
    }
}
