Offline Support
This commit is contained in:
@@ -0,0 +1,319 @@
|
||||
// GENERATED CODE DO NOT EDIT
|
||||
part of '../brick.g.dart';
|
||||
|
||||
Future<Announcement> _$AnnouncementFromSupabase(
|
||||
Map<String, dynamic> data, {
|
||||
required SupabaseProvider provider,
|
||||
OfflineFirstWithSupabaseRepository? repository,
|
||||
}) async {
|
||||
return Announcement(
|
||||
id: data['id'] as String,
|
||||
authorId: data['author_id'] as String,
|
||||
title: data['title'] as String,
|
||||
body: data['body'] as String,
|
||||
visibleRoles: data['visible_roles'].toList().cast<String>(),
|
||||
isTemplate: data['is_template'] as bool,
|
||||
templateId: data['template_id'] == null
|
||||
? null
|
||||
: data['template_id'] as String?,
|
||||
createdAt: DateTime.parse(data['created_at'] as String),
|
||||
updatedAt: DateTime.parse(data['updated_at'] as String),
|
||||
bannerEnabled: data['banner_enabled'] as bool,
|
||||
bannerShowAt: data['banner_show_at'] == null
|
||||
? null
|
||||
: data['banner_show_at'] == null
|
||||
? null
|
||||
: DateTime.tryParse(data['banner_show_at'] as String),
|
||||
bannerHideAt: data['banner_hide_at'] == null
|
||||
? null
|
||||
: data['banner_hide_at'] == null
|
||||
? null
|
||||
: DateTime.tryParse(data['banner_hide_at'] as String),
|
||||
pushIntervalMinutes: data['push_interval_minutes'] == null
|
||||
? null
|
||||
: data['push_interval_minutes'] as int?,
|
||||
);
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> _$AnnouncementToSupabase(
|
||||
Announcement instance, {
|
||||
required SupabaseProvider provider,
|
||||
OfflineFirstWithSupabaseRepository? repository,
|
||||
}) async {
|
||||
return {
|
||||
'id': instance.id,
|
||||
'author_id': instance.authorId,
|
||||
'title': instance.title,
|
||||
'body': instance.body,
|
||||
'visible_roles': instance.visibleRoles,
|
||||
'is_template': instance.isTemplate,
|
||||
'template_id': instance.templateId,
|
||||
'created_at': instance.createdAt.toIso8601String(),
|
||||
'updated_at': instance.updatedAt.toIso8601String(),
|
||||
'banner_enabled': instance.bannerEnabled,
|
||||
'banner_show_at': instance.bannerShowAt?.toIso8601String(),
|
||||
'banner_hide_at': instance.bannerHideAt?.toIso8601String(),
|
||||
'push_interval_minutes': instance.pushIntervalMinutes,
|
||||
};
|
||||
}
|
||||
|
||||
Future<Announcement> _$AnnouncementFromSqlite(
|
||||
Map<String, dynamic> data, {
|
||||
required SqliteProvider provider,
|
||||
OfflineFirstWithSupabaseRepository? repository,
|
||||
}) async {
|
||||
return Announcement(
|
||||
id: data['id'] as String,
|
||||
authorId: data['author_id'] as String,
|
||||
title: data['title'] as String,
|
||||
body: data['body'] as String,
|
||||
visibleRoles: jsonDecode(data['visible_roles']).toList().cast<String>(),
|
||||
isTemplate: data['is_template'] == 1,
|
||||
templateId: data['template_id'] == null
|
||||
? null
|
||||
: data['template_id'] as String?,
|
||||
createdAt: DateTime.parse(data['created_at'] as String),
|
||||
updatedAt: DateTime.parse(data['updated_at'] as String),
|
||||
bannerEnabled: data['banner_enabled'] == 1,
|
||||
bannerShowAt: data['banner_show_at'] == null
|
||||
? null
|
||||
: data['banner_show_at'] == null
|
||||
? null
|
||||
: DateTime.tryParse(data['banner_show_at'] as String),
|
||||
bannerHideAt: data['banner_hide_at'] == null
|
||||
? null
|
||||
: data['banner_hide_at'] == null
|
||||
? null
|
||||
: DateTime.tryParse(data['banner_hide_at'] as String),
|
||||
pushIntervalMinutes: data['push_interval_minutes'] == null
|
||||
? null
|
||||
: data['push_interval_minutes'] as int?,
|
||||
)..primaryKey = data['_brick_id'] as int;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> _$AnnouncementToSqlite(
|
||||
Announcement instance, {
|
||||
required SqliteProvider provider,
|
||||
OfflineFirstWithSupabaseRepository? repository,
|
||||
}) async {
|
||||
return {
|
||||
'id': instance.id,
|
||||
'author_id': instance.authorId,
|
||||
'title': instance.title,
|
||||
'body': instance.body,
|
||||
'visible_roles': jsonEncode(instance.visibleRoles),
|
||||
'is_template': instance.isTemplate ? 1 : 0,
|
||||
'template_id': instance.templateId,
|
||||
'created_at': instance.createdAt.toIso8601String(),
|
||||
'updated_at': instance.updatedAt.toIso8601String(),
|
||||
'banner_enabled': instance.bannerEnabled ? 1 : 0,
|
||||
'banner_show_at': instance.bannerShowAt?.toIso8601String(),
|
||||
'banner_hide_at': instance.bannerHideAt?.toIso8601String(),
|
||||
'push_interval_minutes': instance.pushIntervalMinutes,
|
||||
};
|
||||
}
|
||||
|
||||
/// Construct a [Announcement]
|
||||
class AnnouncementAdapter
|
||||
extends OfflineFirstWithSupabaseAdapter<Announcement> {
|
||||
AnnouncementAdapter();
|
||||
|
||||
@override
|
||||
final supabaseTableName = 'announcements';
|
||||
@override
|
||||
final defaultToNull = true;
|
||||
@override
|
||||
final fieldsToSupabaseColumns = {
|
||||
'id': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'id',
|
||||
),
|
||||
'authorId': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'author_id',
|
||||
),
|
||||
'title': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'title',
|
||||
),
|
||||
'body': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'body',
|
||||
),
|
||||
'visibleRoles': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'visible_roles',
|
||||
),
|
||||
'isTemplate': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'is_template',
|
||||
),
|
||||
'templateId': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'template_id',
|
||||
),
|
||||
'createdAt': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'created_at',
|
||||
),
|
||||
'updatedAt': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'updated_at',
|
||||
),
|
||||
'bannerEnabled': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'banner_enabled',
|
||||
),
|
||||
'bannerShowAt': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'banner_show_at',
|
||||
),
|
||||
'bannerHideAt': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'banner_hide_at',
|
||||
),
|
||||
'pushIntervalMinutes': const RuntimeSupabaseColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'push_interval_minutes',
|
||||
),
|
||||
};
|
||||
@override
|
||||
final ignoreDuplicates = false;
|
||||
@override
|
||||
final uniqueFields = {};
|
||||
@override
|
||||
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
|
||||
'primaryKey': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: '_brick_id',
|
||||
iterable: false,
|
||||
type: int,
|
||||
),
|
||||
'id': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'id',
|
||||
iterable: false,
|
||||
type: String,
|
||||
),
|
||||
'authorId': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'author_id',
|
||||
iterable: false,
|
||||
type: String,
|
||||
),
|
||||
'title': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'title',
|
||||
iterable: false,
|
||||
type: String,
|
||||
),
|
||||
'body': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'body',
|
||||
iterable: false,
|
||||
type: String,
|
||||
),
|
||||
'visibleRoles': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'visible_roles',
|
||||
iterable: true,
|
||||
type: String,
|
||||
),
|
||||
'isTemplate': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'is_template',
|
||||
iterable: false,
|
||||
type: bool,
|
||||
),
|
||||
'templateId': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'template_id',
|
||||
iterable: false,
|
||||
type: String,
|
||||
),
|
||||
'createdAt': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'created_at',
|
||||
iterable: false,
|
||||
type: DateTime,
|
||||
),
|
||||
'updatedAt': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'updated_at',
|
||||
iterable: false,
|
||||
type: DateTime,
|
||||
),
|
||||
'bannerEnabled': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'banner_enabled',
|
||||
iterable: false,
|
||||
type: bool,
|
||||
),
|
||||
'bannerShowAt': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'banner_show_at',
|
||||
iterable: false,
|
||||
type: DateTime,
|
||||
),
|
||||
'bannerHideAt': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'banner_hide_at',
|
||||
iterable: false,
|
||||
type: DateTime,
|
||||
),
|
||||
'pushIntervalMinutes': const RuntimeSqliteColumnDefinition(
|
||||
association: false,
|
||||
columnName: 'push_interval_minutes',
|
||||
iterable: false,
|
||||
type: int,
|
||||
),
|
||||
};
|
||||
@override
|
||||
Future<int?> primaryKeyByUniqueColumns(
|
||||
Announcement instance,
|
||||
DatabaseExecutor executor,
|
||||
) async => instance.primaryKey;
|
||||
@override
|
||||
final String tableName = 'Announcement';
|
||||
|
||||
@override
|
||||
Future<Announcement> fromSupabase(
|
||||
Map<String, dynamic> input, {
|
||||
required provider,
|
||||
covariant OfflineFirstWithSupabaseRepository? repository,
|
||||
}) async => await _$AnnouncementFromSupabase(
|
||||
input,
|
||||
provider: provider,
|
||||
repository: repository,
|
||||
);
|
||||
@override
|
||||
Future<Map<String, dynamic>> toSupabase(
|
||||
Announcement input, {
|
||||
required provider,
|
||||
covariant OfflineFirstWithSupabaseRepository? repository,
|
||||
}) async => await _$AnnouncementToSupabase(
|
||||
input,
|
||||
provider: provider,
|
||||
repository: repository,
|
||||
);
|
||||
@override
|
||||
Future<Announcement> fromSqlite(
|
||||
Map<String, dynamic> input, {
|
||||
required provider,
|
||||
covariant OfflineFirstWithSupabaseRepository? repository,
|
||||
}) async => await _$AnnouncementFromSqlite(
|
||||
input,
|
||||
provider: provider,
|
||||
repository: repository,
|
||||
);
|
||||
@override
|
||||
Future<Map<String, dynamic>> toSqlite(
|
||||
Announcement input, {
|
||||
required provider,
|
||||
covariant OfflineFirstWithSupabaseRepository? repository,
|
||||
}) async => await _$AnnouncementToSqlite(
|
||||
input,
|
||||
provider: provider,
|
||||
repository: repository,
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user