Well this doesnt work yet, and is likely not the correct way, this needs more thought put into it, probably a complete rewrite is advisable because bringing this into a shape where it could have multiple Providers is hard

This commit is contained in:
Pablu23
2024-02-26 22:21:59 +01:00
parent 87ec7aa1a8
commit 18d9ecf4ad
11 changed files with 234 additions and 115 deletions

View File

@@ -0,0 +1,11 @@
package database
type Chapter struct {
Id int
Manga *Manga
InternalIdentifier string
Url string
Name string
Number int
TimeStampUnix int64
}

View File

@@ -1,16 +1,27 @@
create table if not exists Manga (
ID integer not null primary key,
Title text,
TimeStampUnixEpoch int,
Thumbnail blob
drop table if exists Chapter;
drop table if exists Manga;
create table if not exists Manga
(
ID integer not null primary key autoincrement,
Provider integer not null,
Rating integer,
Title text,
TimeStampUnixEpoch integer,
Thumbnail blob
);
create table if not exists Chapter (
ID integer not null primary key,
MangaID integer not null,
Url text not null,
Name text null,
Number int not null,
TimeStampUnixEpoch int,
foreign key(MangaID) references Manga(ID)
);
create table if not exists Chapter
(
ID integer not null primary key autoincrement,
MangaID integer not null,
InternalIdentifier text not null,
Url text not null,
Name text null,
Number integer not null,
TimeStampUnixEpoch integer,
foreign key (MangaID) references Manga (ID)
);

View File

@@ -5,30 +5,12 @@ import (
"database/sql"
_ "embed"
"fmt"
"mangaGetter/internal/provider"
"sync"
_ "github.com/mattn/go-sqlite3"
)
type Manga struct {
Id int
Title string
TimeStampUnix int64
Thumbnail *bytes.Buffer
// Not in DB
LatestChapter *Chapter
}
type Chapter struct {
Id int
Manga *Manga
Url string
Name string
Number int
TimeStampUnix int64
}
type Manager struct {
ConnectionString string
db *sql.DB
@@ -183,7 +165,7 @@ func (dbMgr *Manager) load() error {
dbMgr.Rw.Unlock()
}()
rows, err := db.Query("SELECT * FROM Manga")
rows, err := db.Query("SELECT ID, Provider, Title, TimeStampUnixEpoch, Thumbnail, Rating FROM Manga")
if err != nil {
return err
}
@@ -191,14 +173,16 @@ func (dbMgr *Manager) load() error {
for rows.Next() {
manga := Manga{}
var thumbnail []byte
if err = rows.Scan(&manga.Id, &manga.Title, &manga.TimeStampUnix, &thumbnail); err != nil {
var providerId int
if err = rows.Scan(&manga.Id, &providerId, &manga.Title, &manga.TimeStampUnix, &thumbnail, &manga.Rating); err != nil {
return err
}
manga.Thumbnail = bytes.NewBuffer(thumbnail)
manga.Provider = provider.GetProviderByType(provider.ProviderType(providerId))
dbMgr.Mangas[manga.Id] = &manga
}
rows, err = db.Query("SELECT * FROM Chapter")
rows, err = db.Query("SELECT ID, MangaID, Url, Name, Number, TimeStampUnixEpoch, InternalIdentifier FROM Chapter")
if err != nil {
return err
}
@@ -206,7 +190,7 @@ func (dbMgr *Manager) load() error {
for rows.Next() {
chapter := Chapter{}
var mangaID int
if err = rows.Scan(&chapter.Id, &mangaID, &chapter.Url, &chapter.Name, &chapter.Number, &chapter.TimeStampUnix); err != nil {
if err = rows.Scan(&chapter.Id, &mangaID, &chapter.Url, &chapter.Name, &chapter.Number, &chapter.TimeStampUnix, &chapter.InternalIdentifier); err != nil {
return err
}

View File

@@ -0,0 +1,18 @@
package database
import (
"bytes"
"mangaGetter/internal/provider"
)
type Manga struct {
Id int
Provider provider.Provider
Rating int
Title string
TimeStampUnix int64
Thumbnail *bytes.Buffer
// Not in DB
LatestChapter *Chapter
}