SupabaseIndexInfo.fromJson constructor

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

Creates a SupabaseIndexInfo instance from a JSON map.

This is useful for deserialization, for example, when loading schema information from a file. It handles potential missing fields from older versions of serialized data by providing default values.

Implementation

factory SupabaseIndexInfo.fromJson(Map<String, dynamic> json) {
  // Handle potential missing original names in older delta files
  final cols = List<String>.from(json['columns'] as List? ?? []);
  final origCols = List<String>.from(
    json['originalColumns'] as List? ?? cols,
  );
  final name = json['name'] as String? ?? ''; // Provide default if missing
  final origName = json['originalName'] as String? ?? name;

  return SupabaseIndexInfo(
    name: name,
    originalName: origName,
    localName: json['localName'] as String? ?? _makeSafeDartIdentifier(name),
    isUnique: json['isUnique'] as bool? ?? false,
    columns: cols,
    originalColumns: origCols,
  );
}