mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 21:18:58 +00:00
(assistant) Add scheduled update job for screenshot information
This commit is contained in:
parent
c91435e314
commit
3566fe296a
@ -21,6 +21,9 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
public class SimilarDomainsService {
|
public class SimilarDomainsService {
|
||||||
@ -48,7 +51,33 @@ public class SimilarDomainsService {
|
|||||||
this.dataSource = dataSource;
|
this.dataSource = dataSource;
|
||||||
this.linkGraphClient = linkGraphClient;
|
this.linkGraphClient = linkGraphClient;
|
||||||
|
|
||||||
Thread.ofPlatform().start(this::init);
|
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
|
||||||
|
|
||||||
|
service.scheduleWithFixedDelay(this::init, 0, 1, TimeUnit.SECONDS);
|
||||||
|
|
||||||
|
// Update screenshot info every hour
|
||||||
|
service.scheduleAtFixedRate(this::updateScreenshotInfo, 1, 1, TimeUnit.HOURS);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateScreenshotInfo() {
|
||||||
|
try (var connection = dataSource.getConnection()) {
|
||||||
|
try (var stmt = connection.createStatement()) {
|
||||||
|
var rs = stmt.executeQuery("""
|
||||||
|
SELECT EC_DOMAIN.ID
|
||||||
|
FROM EC_DOMAIN INNER JOIN DATA_DOMAIN_SCREENSHOT AS SCREENSHOT ON EC_DOMAIN.DOMAIN_NAME = SCREENSHOT.DOMAIN_NAME
|
||||||
|
""");
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
final int id = rs.getInt(1);
|
||||||
|
final int idx = domainIdToIdx.get(id);
|
||||||
|
|
||||||
|
screenshotDomains.add(idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SQLException throwables) {
|
||||||
|
logger.warn("Failed to update screenshot info", throwables);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
@ -137,18 +166,7 @@ public class SimilarDomainsService {
|
|||||||
activeDomains.add(idx);
|
activeDomains.add(idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateScreenshotInfo();
|
||||||
rs = stmt.executeQuery("""
|
|
||||||
SELECT EC_DOMAIN.ID
|
|
||||||
FROM EC_DOMAIN INNER JOIN DATA_DOMAIN_SCREENSHOT AS SCREENSHOT ON EC_DOMAIN.DOMAIN_NAME = SCREENSHOT.DOMAIN_NAME
|
|
||||||
""");
|
|
||||||
|
|
||||||
while (rs.next()) {
|
|
||||||
final int id = rs.getInt(1);
|
|
||||||
final int idx = domainIdToIdx.get(id);
|
|
||||||
|
|
||||||
screenshotDomains.add(idx);
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.info("Loaded {} domains", domainRanks.size());
|
logger.info("Loaded {} domains", domainRanks.size());
|
||||||
isReady = true;
|
isReady = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user