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:
11
internal/database/chapter.go
Normal file
11
internal/database/chapter.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package database
|
||||
|
||||
type Chapter struct {
|
||||
Id int
|
||||
Manga *Manga
|
||||
InternalIdentifier string
|
||||
Url string
|
||||
Name string
|
||||
Number int
|
||||
TimeStampUnix int64
|
||||
}
|
||||
@@ -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)
|
||||
);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
18
internal/database/manga.go
Normal file
18
internal/database/manga.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user