create method

  1. @override
Future<T> create(
  1. T item
)
override

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;
  }
}