begin implementing m3u loading into database

This commit is contained in:
mykola2312 2024-04-20 16:57:43 +03:00
parent a80da909b7
commit 4dd212dff8
3 changed files with 76 additions and 0 deletions

View file

@ -0,0 +1,45 @@
package com.mykola2312.mptv.db;
import java.util.ArrayList;
import java.util.HashMap;
import org.jooq.*;
import org.jooq.impl.*;
import static com.mykola2312.mptv.tables.Category.*;
import com.mykola2312.mptv.db.pojo.Category;
import com.mykola2312.mptv.parser.M3U;
public class M3ULoader {
public static void loadAll(ArrayList<M3U> items) {
// cache categories' ids
HashMap<String, Integer> categories = new HashMap<>();
for (M3U item : items) {
// category
if (item.groupTitle != null) {
Integer id;
Category category = DSL.using(DB.CONFIG)
.select()
.from(CATEGORY)
.where(CATEGORY.TITLE.eq(item.groupTitle))
.limit(1)
.fetchOne()
.into(Category.class);
if (category == null) {
id = DSL.using(DB.CONFIG)
.insertInto(CATEGORY, CATEGORY.TITLE)
.values(item.groupTitle)
.returningResult(CATEGORY.ID)
.fetchOne()
.into(Integer.class);
} else {
id = category.id;
}
categories.put(item.groupTitle, id);
}
// channel
}
}
}

View file

@ -0,0 +1,11 @@
package com.mykola2312.mptv.db.pojo;
import jakarta.persistence.Column;
public class Category {
@Column(name = "ID")
public int id;
@Column(name = "TITLE")
public String title;
}

View file

@ -0,0 +1,20 @@
package com.mykola2312.mptv.db.pojo;
import jakarta.persistence.Column;
public class Channel {
@Column(name = "ID")
public int id;
@Column(name = "CATEGORY")
public int category;
@Column(name = "TITLE")
public String title;
@Column(name = "URL")
public String url;
@Column(name = "LOGO")
public String logo;
}