Add add Link usecase
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
qvalentin 2022-04-22 11:22:46 +02:00
parent e634fbd1aa
commit 1861bdfe74
Signed by: qvalentin
GPG key ID: C979FA1EAFCABF1C
4 changed files with 72 additions and 3 deletions

View file

@ -0,0 +1,8 @@
package link;
import category.CategoryId;
public interface LinkIdGenerator {
LinkId generateId();
}

View file

@ -0,0 +1,44 @@
package link;
import category.CategoryName;
import category.CategoryRepository;
import tag.TaggingUseCase;
import user.Username;
import java.util.Set;
import java.util.stream.Collectors;
public class LinkUseCase {
private final LinkRepository linkRepository;
private final CategoryRepository categoryRepository;
private final TaggingUseCase taggingUseCase;
private final LinkIdGenerator linkIdGenerator;
public LinkUseCase(LinkRepository linkRepository,
CategoryRepository categoryRepository,
TaggingUseCase taggingUseCase,
LinkIdGenerator linkIdGenerator) {
this.linkRepository = linkRepository;
this.categoryRepository = categoryRepository;
this.taggingUseCase = taggingUseCase;
this.linkIdGenerator = linkIdGenerator;
}
public void addLink(LinkUrl url, Set<CategoryName> categoryNames, Username creator) {
OnlineCheck.of(url);
var categoryIds = categoryNames.stream().map(categoryRepository::getIdByName).collect(Collectors.toSet());
var tags = taggingUseCase.getTagsFor(url);
var id = linkIdGenerator.generateId();
var link = new Link(id, creator, url, categoryIds, tags);
linkRepository.add(link);
}
}