updateAddressUsage method

  1. @override
Future<void> updateAddressUsage(
  1. String walletId,
  2. String address, {
  3. DateTime? usedAt,
  4. BigInt? balanceDelta,
})
override

Update address usage statistics

Implementation

@override
Future<void> updateAddressUsage(
  String walletId,
  String address, {
  DateTime? usedAt,
  BigInt? balanceDelta,
}) async {
  _ensureInitialized();

  var sql = 'UPDATE addresses SET usage_count = usage_count + 1';
  final params = <String, dynamic>{
    'walletId': walletId,
    'address': address,
  };

  if (usedAt != null) {
    sql += ', last_used_at = @usedAt';
    sql += ', first_used_at = COALESCE(first_used_at, @usedAt)';
    params['usedAt'] = usedAt;
  }

  if (balanceDelta != null) {
    sql += ', balance = balance + @balanceDelta';
    params['balanceDelta'] = balanceDelta.toInt();
  }

  sql += ' WHERE wallet_id = @walletId AND address = @address';

  await _pool!.execute(Sql.named(sql), parameters: params);
}