Implemented bucket service

This commit is contained in:
Andrey Terentev 2023-11-26 23:11:42 +07:00
parent b0f23f129d
commit e034bad71e
3 changed files with 65 additions and 2 deletions

View File

@ -9,9 +9,9 @@ import java.util.Optional;
public interface BucketService { public interface BucketService {
void createBucket(Bucket lobby); void createBucket(Bucket bucket);
void removeBucket(Bucket lobby); void removeBucket(Bucket bucket);
Optional<Bucket> findBucket(Node node, String identifier); Optional<Bucket> findBucket(Node node, String identifier);

View File

@ -0,0 +1,59 @@
package ru.dragonestia.loadbalancer.service.impl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import ru.dragonestia.loadbalancer.model.Bucket;
import ru.dragonestia.loadbalancer.model.Node;
import ru.dragonestia.loadbalancer.model.User;
import ru.dragonestia.loadbalancer.repository.BucketRepository;
import ru.dragonestia.loadbalancer.service.BucketService;
import ru.dragonestia.loadbalancer.util.NamingValidator;
import java.util.List;
import java.util.Optional;
@Service
@RequiredArgsConstructor
public class BucketServiceImpl implements BucketService {
private final BucketRepository bucketRepository;
@Override
public void createBucket(Bucket bucket) {
if (!NamingValidator.validateBucketIdentifier(bucket.getIdentifier())) {
throw new Error("Invalid bucket identifier format");
}
bucketRepository.createBucket(bucket);
}
@Override
public void removeBucket(Bucket bucket) {
bucketRepository.removeBucket(bucket);
}
@Override
public Optional<Bucket> findBucket(Node node, String identifier) {
return bucketRepository.findBucket(node, identifier);
}
@Override
public List<Bucket> allBuckets(Node node) {
return bucketRepository.all(node);
}
@Override
public int countAvailableBuckets(Node node, int requiredSlots) {
throw new RuntimeException("Not implemented");
}
@Override
public Bucket pickAvailableBucket(Node node, List<User> users) {
throw new RuntimeException("Not implemented");
}
@Override
public void freeBucket(Bucket bucket, List<User> users) {
throw new RuntimeException("Not implemented");
}
}

View File

@ -8,4 +8,8 @@ public class NamingValidator {
public boolean validateNodeIdentifier(String input) { public boolean validateNodeIdentifier(String input) {
return input.matches("^[a-z\\d-]+$"); return input.matches("^[a-z\\d-]+$");
} }
public boolean validateBucketIdentifier(String input) {
return input.matches("^[a-z\\d-]+$");
}
} }