SupabaseTableInfo.fromJson constructor

SupabaseTableInfo.fromJson(
  1. Map<String, dynamic> json
)

Creates a SupabaseTableInfo instance from a JSON map (deserialization). Handles missing fields from older data formats with default values.

Implementation

factory SupabaseTableInfo.fromJson(Map<String, dynamic> json) {
  final originalName =
      json['originalName'] as String? ?? json['name'] as String? ?? '';
  return SupabaseTableInfo(
    name: json['name'] as String? ?? originalName,
    originalName: originalName,
    localName: json['localName'] as String?,
    schema: json['schema'] as String? ?? 'public',
    columns: (json['columns'] as List<dynamic>? ?? [])
        .map((c) => TetherColumnInfo.fromJson(c as Map<String, dynamic>))
        .toList(),
    foreignKeys: (json['foreignKeys'] as List<dynamic>? ?? [])
        .map((fk) =>
            SupabaseForeignKeyConstraint.fromJson(fk as Map<String, dynamic>))
        .toList(),
    indexes: (json['indexes'] as List<dynamic>? ?? [])
        .map((idx) => SupabaseIndexInfo.fromJson(idx as Map<String, dynamic>))
        .toList(),
    comment: json['comment'] as String?,
    reverseRelations: (json['reverseRelations'] as List<dynamic>? ?? [])
        .map((rr) =>
            ModelReverseRelationInfo.fromJson(rr as Map<String, dynamic>))
        .toList(),
  );
}