renderAlterAddColumns method

  1. @override
List<String> renderAlterAddColumns(
  1. String table,
  2. TableBlueprint changes, {
  3. String afterColumn = '',
  4. String beforeColumn = '',
})
override

Implementation

@override
List<String> renderAlterAddColumns(
  String table,
  TableBlueprint changes, {
  String afterColumn = '',
  String beforeColumn = '',
}) {
  final statements = <String>[];

  if (changes.columns.isNotEmpty) {
    final required = <String>[];
    final properties = <String, dynamic>{};
    for (final col in changes.columns) {
      properties[col.name] = _mongoBsonSchema(col);
      if (!col.nullable) required.add(col.name);
    }

    statements.add(
      jsonEncode({
        '_vania_migration': 'addValidatorFields',
        'collection': table,
        'properties': properties,
        if (required.isNotEmpty) 'required': required,
      }),
    );
  }

  for (final idx in changes.indexes) {
    statements.add(
      jsonEncode({
        '_vania_migration': 'createIndex',
        'collection': table,
        'keys': {for (final c in idx.columns) c: 1},
        'options': {
          'name': idx.name,
          if (idx.type == ColumnIndex.unique) 'unique': true,
        },
      }),
    );
  }

  return statements;
}