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,
    localName:
        json['localName'] as String? ?? _makeSafeDartClassName(originalName),
    schema: json['schema'] as String? ?? '',
    columns:
        (json['columns'] as List?)
            ?.map((c) => TetherColumnInfo.fromJson(c as Map<String, dynamic>))
            .toList() ??
        [],
    foreignKeys:
        (json['foreignKeys'] as List?)
            ?.map(
              (fk) => SupabaseForeignKeyConstraint.fromJson(
                fk as Map<String, dynamic>,
              ),
            )
            .toList() ??
        [],
    indexes:
        (json['indexes'] as List?)
            ?.map(
              (idx) =>
                  SupabaseIndexInfo.fromJson(idx as Map<String, dynamic>),
            )
            .toList() ??
        [],
    comment: json['comment'] as String?,
    reverseRelations:
        (json['reverseRelations'] as List?) // <<< ADDED TO fromJson
            ?.map(
              (rr) => ModelReverseRelationInfo.fromJson(
                rr as Map<String, dynamic>,
              ),
            )
            .toList() ??
        const [],
  );
}