getCreateTableExpression static method
Implementation
static String getCreateTableExpression(
String tableName, List<Column> columns) {
List<String> columnsQueryExpressions = [];
List<String> referencedCreateTableExpressions = [];
List<String> foreignKeyContraints = [];
columns.forEach((column) {
if (column.relation?.relationType != RelationType.OneToMany) {
columnsQueryExpressions.add(column.columnQueryExpresion);
}
if (column.relation != null &&
column.relation?.relationType == RelationType.ManyToOne) {
referencedCreateTableExpressions.add(
QueryExpression.getCreateTableExpression(
column.relation!.referencedEntity!.tableName,
column.relation!.referencedEntityColumns as List<Column>));
foreignKeyContraints.add(
QueryExpression.getForeignKeyConstrainExpression(
foreignColumn: column.name as String,
referencedColumn: column.relation!.referencedColumn as String,
referencedTable: column.relation!.referencedEntity!.tableName));
}
});
final String columnsQueryExpression = columnsQueryExpressions.join(', ');
final String foreignKeyExpression = foreignKeyContraints.length > 0
? ', ' + foreignKeyContraints.join(', ')
: '';
final String referencedTableExpression =
referencedCreateTableExpressions.length > 0
? referencedCreateTableExpressions.join(';') + ';'
: '';
return '${referencedTableExpression}CREATE TABLE IF NOT EXISTS $tableName ($columnsQueryExpression$foreignKeyExpression)';
}