getTransactions method
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();
}