package com.airlock.iam.common.domain.model.state;

import java.util.Optional;

public record LockAndFindResult(boolean isLockedBySomeoneElse, boolean entryExists, Optional<String> value) implements RetryableOperation {
   public static LockAndFindResult found(String value) {
      return new LockAndFindResult(false, true, Optional.of(value));
   }

   public static LockAndFindResult notFound() {
      return new LockAndFindResult(false, false, Optional.empty());
   }

   public static LockAndFindResult lockedBySomeoneElse() {
      return new LockAndFindResult(true, true, Optional.empty());
   }

   @Override
   public boolean shouldRetry() {
      return this.isLockedBySomeoneElse;
   }
}
