From af6f9d5db6f433d80b07257bb4f6e652f26fcde5 Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Tue, 23 Apr 2024 17:10:48 +0300 Subject: [PATCH] fix bug when source would indefinitely append to table instead of updating it because of null value behavior in unique indices --- src/main/java/com/mykola2312/mptv/crawler/Crawler.java | 7 +++---- src/main/java/com/mykola2312/mptv/db/pojo/Source.java | 7 ++----- src/main/resources/db/migration/V001.01__init.sql | 5 ++--- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/mykola2312/mptv/crawler/Crawler.java b/src/main/java/com/mykola2312/mptv/crawler/Crawler.java index 6452b9e..d09f8ae 100644 --- a/src/main/java/com/mykola2312/mptv/crawler/Crawler.java +++ b/src/main/java/com/mykola2312/mptv/crawler/Crawler.java @@ -43,8 +43,7 @@ public class Crawler { UpdatableRecord source = new UpdatableRecordImpl<>(SOURCE); source.set(SOURCE.TYPE, item.type.getSqlName()); source.set(SOURCE.ROOT_NAME, item.rootCategory); - source.set(SOURCE.URL, item.url); - source.set(SOURCE.PATH, item.path); + source.set(SOURCE.URL_OR_PATH, item.url != null ? item.url : item.path); source.set(SOURCE.COOKIES, item.cookies); sources.add(source); @@ -144,7 +143,7 @@ public class Crawler { switch (source.type) { case "m3u-local" -> { try { - if (source.path == null) { + if (source.urlOrPath == null) { logger.error("m3u local has to have \"path\" variable"); continue; } else if (source.rootName == null) { @@ -152,7 +151,7 @@ public class Crawler { continue; } - String m3uData = Files.readString(Paths.get(source.path), StandardCharsets.UTF_8); + String m3uData = Files.readString(Paths.get(source.urlOrPath), StandardCharsets.UTF_8); ArrayList m3u = M3UParser.parse(m3uData); updateAllChannels(m3u, source.rootName); diff --git a/src/main/java/com/mykola2312/mptv/db/pojo/Source.java b/src/main/java/com/mykola2312/mptv/db/pojo/Source.java index 48191e0..0320aeb 100644 --- a/src/main/java/com/mykola2312/mptv/db/pojo/Source.java +++ b/src/main/java/com/mykola2312/mptv/db/pojo/Source.java @@ -12,11 +12,8 @@ public class Source { @Column(name = "ROOT_NAME") public String rootName; - @Column(name = "URL") - public String url; - - @Column(name = "PATH") - public String path; + @Column(name = "URL_OR_PATH") + public String urlOrPath; @Column(name = "COOKIES") public String cookies; diff --git a/src/main/resources/db/migration/V001.01__init.sql b/src/main/resources/db/migration/V001.01__init.sql index 8484bde..8022030 100644 --- a/src/main/resources/db/migration/V001.01__init.sql +++ b/src/main/resources/db/migration/V001.01__init.sql @@ -2,12 +2,11 @@ CREATE TABLE source ( id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT NOT NULL, root_name TEXT NOT NULL, - url TEXT, - path TEXT, + url_or_path TEXT NOT NULL, cookies TEXT ); -CREATE UNIQUE INDEX idx_source_url_path ON source(url,path); +CREATE UNIQUE INDEX idx_source_url_or_path ON source(url_or_path); CREATE TABLE crawl ( id INTEGER PRIMARY KEY AUTOINCREMENT,