getCreateTableStatement static method

String getCreateTableStatement(
  1. Map<String, dynamic> tableDefinition
)

Implementation

static String getCreateTableStatement(Map<String, dynamic> tableDefinition) {
  String tbName = tableDefinition[tableName];
  Map<String, dynamic> fields = tableDefinition[tableFields];
  Map<String, Object> fieldCreatedOn = {};
  fieldCreatedOn[fieldName] = createdOn;
  fieldCreatedOn[fieldType] = typeDateTime;
  fieldCreatedOn[fieldValue] = "NOW";
  fieldCreatedOn[fieldAttributes] = [attributeTimestamp];

  Map<String, Object> fieldModifiedOn = {};
  fieldModifiedOn[fieldName] = modifiedOn;
  fieldModifiedOn[fieldType] = typeDateTime;
  fieldModifiedOn[fieldValue] = "NOW";
  fieldModifiedOn[fieldAttributes] = [
    attributeTimestamp,
    attributeUpdateTimestamp
  ];
  fields[createdOn] = fieldCreatedOn;
  fields[modifiedOn] = fieldModifiedOn;

  List<String> columns = fields.keys.map((fieldName) {
    Map<String, dynamic> fieldDetails = fields[fieldName];
    String fieldTypes = "";
    if (fieldDetails[fieldSize] != null) {
      fieldTypes = fieldDetails[fieldType] +
          '(' +
          fieldDetails[fieldSize].toString() +
          ')';
    } else if (fieldDetails[fieldType] == "VARCHAR") {
      fieldTypes = fieldDetails[fieldType] + '(30)';
    } else {
      fieldTypes = fieldDetails[fieldType];
    }

    List<String> attributes = List<String>.from(
        fieldDetails[fieldAttributes]); // Specify the type here

    String columnDefinition =
        '$fieldName $fieldTypes${attributes.isNotEmpty ? ' ${attributes.join(" ")}' : ""}';
    return columnDefinition;
  }).toList();

  String createTableSql =
      'CREATE TABLE IF NOT EXISTS $tbName (${columns.join(', ')});';

  return createTableSql;
}