SchemaMutation.fromJson constructor

SchemaMutation.fromJson(
  1. Map<String, Object?> json
)

Implementation

factory SchemaMutation.fromJson(Map<String, Object?> json) {
  final operation = SchemaMutationOperation.values.byName(
    json['operation'] as String,
  );
  switch (operation) {
    case SchemaMutationOperation.createTable:
    case SchemaMutationOperation.alterTable:
      final blueprintJson = json['blueprint'] as Map<String, Object?>;
      final blueprint = TableBlueprint.fromJson(blueprintJson);
      return SchemaMutation._(operation: operation, blueprint: blueprint);
    case SchemaMutationOperation.dropTable:
      return SchemaMutation._(
        operation: operation,
        dropOptions: DropTableOptions.fromJson(
          json['drop'] as Map<String, Object?>,
        ),
      );
    case SchemaMutationOperation.renameTable:
      return SchemaMutation._(
        operation: operation,
        rename: RenameTableOptions.fromJson(
          json['rename'] as Map<String, Object?>,
        ),
      );
    case SchemaMutationOperation.rawSql:
      return SchemaMutation._(
        operation: operation,
        sql: json['sql'] as String,
        parameters: (json['parameters'] as List?)?.toList() ?? const [],
      );
    case SchemaMutationOperation.createCollection:
    case SchemaMutationOperation.dropCollection:
    case SchemaMutationOperation.createIndex:
    case SchemaMutationOperation.dropIndex:
    case SchemaMutationOperation.modifyValidator:
    case SchemaMutationOperation.createDatabase:
    case SchemaMutationOperation.dropDatabase:
      return SchemaMutation._(
        operation: operation,
        documentPayload:
            (json['payload'] as Map?)?.cast<String, Object?>() ?? const {},
      );
  }
}