db_dsl 0.3.3

A simple DSL for creating database objects.
Documentation
use crate::{Column, ForeignKey, Index, SqlUp};

#[derive(Clone, Debug)]
pub enum TableDefinition {
    Column(Column),
    Index(Index),
    ForeignKey(ForeignKey),
}

impl TableDefinition {
    pub fn column(column: Column) -> Self {
        TableDefinition::Column(column)
    }

    pub fn index(index: Index) -> Self {
        TableDefinition::Index(index)
    }

    pub fn foreign_key(foreign_key: ForeignKey) -> Self {
        TableDefinition::ForeignKey(foreign_key)
    }
}

impl SqlUp for TableDefinition {
    fn sqlite_up(&self) -> Option<String> {
        match self {
            TableDefinition::Column(column) => column.sqlite_up(),
            TableDefinition::Index(index) => index.sqlite_up(),
            TableDefinition::ForeignKey(foreign_key) => foreign_key.sqlite_up(),
        }
    }
}