-
Notifications
You must be signed in to change notification settings - Fork 53
Closed
Description
I followed the discussion on #531 to implement my that comes from supabase as string, to be stored locally also as string.
Using
brick_core: ^2.0.0
brick_offline_first_with_supabase: ^2.0.0
brick_supabase: ^2.0.0
brick_sqlite: ^4.0.2
sqflite: ^2.4.2
dart_mappable: ^4.5.0With an enum like this
@MappableEnum(mode: ValuesMode.named)
enum OperatingSystem {
@MappableValue('ios')
ios._('ios'),
@MappableValue('android')
android._('android');
const OperatingSystem._(this.supabaseValue);
final String supabaseValue;
factory OperatingSystem.fromSupabase(String? value) {
return OperatingSystem.values.firstWhere((v) => v.supabaseValue == value);
}
String toSupabase() {
return supabaseValue;
}
}And a model like this
@MappableClass(ignoreNull: true)
@ConnectOfflineFirstWithSupabase(
supabaseConfig: SupabaseSerializable(tableName: 'devices'),
sqliteConfig: SqliteSerializable.defaults,
)
class DeviceEntity extends OfflineFirstWithSupabaseModel
with DeviceEntityMappable {
@Supabase(unique: true)
@Sqlite(index: true, unique: true, nullable: false)
final String id;
@Supabase(enumAsString: true)
@Sqlite(enumAsString: true)
final OperatingSystem operatingSystem;
DeviceEntity({
String? id,
required this.operatingSystem,
}) : id = id ?? const Uuid().v4();
}I get a proper adapter to and from Sqlite:
operatingSystem: OperatingSystem.values.byName(
data['operating_system'] as String,'operating_system': instance.operatingSystem.name,The sqlite column definition looks like this
'operatingSystem': const RuntimeSqliteColumnDefinition(
association: false,
columnName: 'operating_system',
iterable: false,
type: OperatingSystem,
),But the migration has wrongly the integer type
InsertColumn('operating_system', Column.integer, onTable: 'DeviceEntity'),Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels