instanceFieldsAndMethods property
Any instance fields that should be copied to the adapter.
Should terminate in ;
if required.
Implementation
@override
List<String> get instanceFieldsAndMethods {
final fieldsToColumns = <String>[];
final uniqueFields = <String>{};
final config = (fields as SupabaseFields).config;
for (final field in unignoredFields) {
final annotation = fields.annotationForField(field);
final checker = checkerForType(field.type);
final columnName = providerNameForField(annotation.name, checker: checker);
final isAssociation = checker.isSibling || (checker.isIterable && checker.isArgTypeASibling);
var definition = '''
'${field.name}': const RuntimeSupabaseColumnDefinition(
association: $isAssociation,
columnName: '$columnName',
''';
if (isAssociation) definition += 'associationType: ${checker.withoutNullResultType},';
if (isAssociation) definition += 'associationIsNullable: ${checker.isNullable},';
if (annotation.foreignKey != null) definition += "foreignKey: '${annotation.foreignKey}',";
if (annotation.query != null) definition += "query: '''${annotation.query}''',";
definition += ')';
fieldsToColumns.add(definition);
if (annotation.unique) uniqueFields.add(field.name);
}
return [
if (config?.defaultToNull != null)
'@override\nfinal defaultToNull = ${config?.defaultToNull};',
'@override\nfinal fieldsToSupabaseColumns = {${fieldsToColumns.join(',\n')}};',
'@override\nfinal ignoreDuplicates = ${config?.ignoreDuplicates};',
if (config?.onConflict != null) "@override\nfinal onConflict = '${config?.onConflict}';",
'@override\nfinal uniqueFields = {${uniqueFields.map((u) => "'$u'").join(',\n')}};',
];
}