use serde::{Deserialize, Serialize};

use crate::lib::ast::{
    ddl::{Column, CreateTableQuery},
    predule::{ForeignKey, TableName, UniqueKey},
};

#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct TableConfig {
    pub table: TableName,
    pub columns: Vec<Column>,
    pub primary_key: Vec<String>,
    pub foreign_keys: Vec<ForeignKey>,
    pub unique_keys: Vec<UniqueKey>,
}

impl From<CreateTableQuery> for TableConfig {
    fn from(query: CreateTableQuery) -> Self {
        Self {
            table: query.table.unwrap(),
            columns: query.columns,
            primary_key: query.primary_key,
            foreign_keys: query.foreign_keys,
            unique_keys: query.unique_keys,
        }
    }
}