SupabaseForeignKeyConstraint.fromJson constructor
Creates a SupabaseForeignKeyConstraint instance from a JSON map (deserialization). Handles missing fields from older data formats with default values.
Implementation
factory SupabaseForeignKeyConstraint.fromJson(Map<String, dynamic> json) {
final cols = List<String>.from(json['columns'] as List);
final origCols = List<String>.from(
json['originalColumns'] as List? ?? cols,
);
final localCols =
json['localColumns'] != null
? List<String>.from(json['localColumns'] as List)
: origCols.map(_makeSafeDartIdentifier).toList();
final fTblName = json['foreignTableName'] as String;
final origFTblName =
json['originalForeignTableName'] as String? ?? fTblName;
final localFTblName =
json['localForeignTableName'] as String? ??
_makeSafeDartClassName(origFTblName);
final fCols = List<String>.from(json['foreignColumns'] as List);
final origFCols = List<String>.from(
json['originalForeignColumns'] as List? ?? fCols,
);
final localFCols =
json['localForeignColumns'] != null
? List<String>.from(json['localForeignColumns'] as List)
: origFCols.map(_makeSafeDartIdentifier).toList();
return SupabaseForeignKeyConstraint(
constraintName: json['constraintName'] as String,
columns: cols,
originalColumns: origCols,
localColumns: localCols,
foreignTableSchema: json['foreignTableSchema'] as String,
foreignTableName: fTblName,
originalForeignTableName: origFTblName,
localForeignTableName: localFTblName,
foreignColumns: fCols,
originalForeignColumns: origFCols,
localForeignColumns: localFCols,
updateRule: json['updateRule'] as String,
deleteRule: json['deleteRule'] as String,
matchOption: json['matchOption'] as String,
isDeferrable: json['isDeferrable'] as bool,
initiallyDeferred: json['initiallyDeferred'] as bool,
joinTableName:
json['joinTableName'] as String?, // Deserialize the join table name
);
}