getTransactions method

  1. @override
Future<List<WalletTransaction>> getTransactions({
  1. int? limit,
  2. int? offset,
  3. String? walletId,
  4. String? unit,
  5. WalletType? walletType,
})
override

Get transactions with optional filtering

Implementation

@override
Future<List<WalletTransaction>> getTransactions({
  int? limit,
  int? offset,
  String? walletId,
  String? unit,
  WalletType? walletType,
}) async {
  await dbRdy;

  final transactionBox = _objectBox.store.box<DbWalletTransaction>();

  Condition<DbWalletTransaction>? condition;
  if (walletId != null && walletId.isNotEmpty) {
    condition = DbWalletTransaction_.walletId.equals(walletId);
  }
  if (unit != null && unit.isNotEmpty) {
    final unitCondition = DbWalletTransaction_.unit.equals(unit);
    condition =
        (condition == null) ? unitCondition : condition.and(unitCondition);
  }
  if (walletType != null) {
    final typeCondition =
        DbWalletTransaction_.walletType.equals(walletType.toString());
    condition =
        (condition == null) ? typeCondition : condition.and(typeCondition);
  }
  QueryBuilder<DbWalletTransaction> queryBuilder;
  if (condition != null) {
    queryBuilder = transactionBox.query(condition);
  } else {
    queryBuilder = transactionBox.query();
  }

  // sort
  queryBuilder.order(DbWalletTransaction_.transactionDate,
      flags: Order.descending);

  final query = queryBuilder.build();
  // limit
  if (limit != null) {
    query..limit = limit;
  }

  // offset
  if (offset != null) {
    query..offset = offset;
  }

  final results = query.find();
  return results.map((dbTransaction) => dbTransaction.toNdk()).toList();
}