protected function AppendCreateTableStructureQuery(QueryBuilder $QueryBuilder, Syncing\Traits\ITableTraitManager $TableTraitManager, IColumnTraitManager $ColumnTraitManager, Table $Table)
{
$QueryBuilder->AppendIdentifier('CREATE TABLE # ', [$Table->GetName()]);
$QueryBuilder->Append('(');
$First = true;
foreach ($Table->GetColumns() as $Column) {
if ($First) {
$First = false;
} else {
$QueryBuilder->Append(',');
}
$this->AppendFullColumn($QueryBuilder, $ColumnTraitManager, $Column, null, false);
}
$TableOptions = [];
foreach ($Table->GetStructuralTraits() as $StructuralTableTrait) {
if ($StructuralTableTrait instanceof Tables\CharacterSet || $StructuralTableTrait instanceof Tables\Collation || $StructuralTableTrait instanceof Tables\Engine || $StructuralTableTrait instanceof Relational\Traits\Comment) {
$TableOptions[] = $StructuralTableTrait;
} else {
$QueryBuilder->Append(',');
$TableTraitManager->AppendDefinition($QueryBuilder, $Table, $StructuralTableTrait);
}
}
$QueryBuilder->Append(')');
foreach ($TableOptions as $TableOption) {
$QueryBuilder->Append(',');
$TableTraitManager->AppendDefinition($QueryBuilder, $Table, $TableOption);
}
}