create method
Creates a new item
in the local database.
Returns the created item with its generated ID.
Implementation
@override
Future<T> create(T item) async {
try {
// Generate and set ID if not provided
final id = item.id ?? const Uuid().v4();
// Generate and set timeOffset if not provided
final timeOffset =
item.timeOffset ?? DateTime.now().timeZoneOffset.toString();
final now = DateTime.now();
final createdAt = item.createdAt ?? now;
final updatedAt = item.updatedAt ?? now;
final newItem = item.copyWith(
id: id,
timeOffset: timeOffset,
createdAt: createdAt,
updatedAt: updatedAt,
) as T;
await (database).insert(tableName, newItem.toJson());
return newItem;
} on DatabaseException catch (e) {
_logger.e('Error creating item: $e');
rethrow;
}
}