deleteRefreshTokens method

Future<List<DeletedRefreshToken>> deleteRefreshTokens(
  1. Session session, {
  2. UuidValue? refreshTokenId,
  3. UuidValue? authUserId,
  4. String? method,
  5. Transaction? transaction,
})

Deletes the refresh tokens matching the given filters.

If refreshTokenId is provided, only the refresh token with that ID will be deleted. If authUserId is provided, only the refresh tokens for that user will be deleted. If method is provided, only the refresh tokens created with that method will be deleted.

Returns a list with DeletedRefreshTokens.

Implementation

Future<List<DeletedRefreshToken>> deleteRefreshTokens(
  Session session, {
  UuidValue? refreshTokenId,
  UuidValue? authUserId,
  String? method,
  Transaction? transaction,
}) async {
  final refreshTokens = await RefreshToken.db.deleteWhere(
    session,
    where: (row) {
      Expression<dynamic> expression = Constant.bool(true);

      if (authUserId != null) {
        expression &= row.authUserId.equals(authUserId);
      }

      if (refreshTokenId != null) {
        expression &= row.id.equals(refreshTokenId);
      }

      if (method != null) {
        expression &= row.method.equals(method);
      }

      return expression;
    },
    transaction: transaction,
  );

  return refreshTokens
      .map(
        (refreshToken) => (
          authUserId: refreshToken.authUserId,
          refreshTokenId: refreshToken.id!,
        ),
      )
      .toList();
}