Skip to content

Commit

Permalink
feat: 루트 도메인 목록 스케줄러 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
hseong3243 committed Mar 27, 2024
1 parent ee5c94a commit e8136e9
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@
public interface DomainCacheRepository {

List<String> findRootDomains(String prefix, int count);

void insert(String rootDomain);
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package com.seong.shoutlink.domain.domain.repository;

import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

public interface DomainJpaRepository extends JpaRepository<DomainEntity, Long> {

Optional<DomainEntity> findByRootDomain(String rootDomain);

@Query("select d.rootDomain from DomainEntity d")
List<String> findRootDomains();
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,9 @@ public class DomainMemoryRepository implements DomainCacheRepository {
public List<String> findRootDomains(String prefix, int count) {
return trie.search(prefix, count);
}

@Override
public void insert(String rootDomain) {
trie.insert(rootDomain);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,10 @@ public Domain save(Domain domain) {
public List<String> findRootDomains(String keyword, int size) {
return domainCacheRepository.findRootDomains(keyword, size);
}

@Override
public void synchronizeRootDomains() {
domainJpaRepository.findRootDomains().forEach(domainCacheRepository::insert);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ public interface DomainRepository {
Domain save(Domain domain);

List<String> findRootDomains(String keyword, int size);

void synchronizeRootDomains();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.seong.shoutlink.global.config;

import com.seong.shoutlink.domain.domain.service.DomainRepository;
import com.seong.shoutlink.global.scheduler.DomainScheduler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@EnableScheduling
public class SchedulerConfig {

@Bean
public DomainScheduler domainScheduler(DomainRepository domainRepository) {
return new DomainScheduler(domainRepository);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.seong.shoutlink.global.scheduler;

import com.seong.shoutlink.domain.domain.service.DomainRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Scheduled;

@RequiredArgsConstructor
public class DomainScheduler {

private final DomainRepository domainRepository;

@Scheduled(cron = "0 0 * * * *")
public void synchronizeRootDomains() {
domainRepository.synchronizeRootDomains();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,11 @@ private Long nextId() {
public List<String> findRootDomains(String keyword, int size) {
return searchAutoComplete.search(keyword, size);
}

@Override
public void synchronizeRootDomains() {
for (Domain domain : memory.values()) {
searchAutoComplete.insert(domain.getRootDomain());
}
}
}

0 comments on commit e8136e9

Please sign in to comment.