package tk.antoine_roux.wiki.service; import org.springframework.stereotype.Service; import tk.antoine_roux.wiki.model.internal.Runner; import tk.antoine_roux.wiki.model.request.AddRunner; import tk.antoine_roux.wiki.model.request.TokenRunner; import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; /** * Class use to perist registered gitlab runner */ @Service public class RunnerRegistrar { private final List runners = new ArrayList<>(); AtomicInteger idIncrementer = new AtomicInteger(); public List getRunners() { return this.runners; } public Runner addRunner(AddRunner addRunner) { Runner r = new Runner(); r.id = this.idIncrementer.getAndIncrement(); r.authenticationToken = UUID.randomUUID(); r.registrationToken = addRunner.token; r.tags = addRunner.tags; r.description = addRunner.description; this.runners.add(r); return r; } public boolean removeRunnerByRegistrationToken(TokenRunner r) { return this.runners.removeIf(runner -> runner.authenticationToken.equals(r.token)); } public boolean checkRunner(TokenRunner body) { return this.runners.stream().anyMatch(runner -> runner.authenticationToken.equals(body.token)); } }