Works now, Mutex whatever
This commit is contained in:
17
database.go
17
database.go
@@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
_ "embed"
|
_ "embed"
|
||||||
|
"sync"
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
)
|
)
|
||||||
@@ -28,16 +29,18 @@ type Chapter struct {
|
|||||||
type DatabaseManager struct {
|
type DatabaseManager struct {
|
||||||
ConnectionString string
|
ConnectionString string
|
||||||
db *sql.DB
|
db *sql.DB
|
||||||
Mangas map[int]*Manga
|
|
||||||
Chapters map[int]*Chapter
|
rw *sync.Mutex
|
||||||
|
Mangas map[int]*Manga
|
||||||
|
Chapters map[int]*Chapter
|
||||||
|
|
||||||
CreateIfNotExists bool
|
CreateIfNotExists bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDatabase(connectionString string, createIfNotExists bool) DatabaseManager {
|
func NewDatabase(connectionString string, createIfNotExists bool) DatabaseManager {
|
||||||
return DatabaseManager{
|
return DatabaseManager{
|
||||||
ConnectionString: connectionString,
|
ConnectionString: connectionString,
|
||||||
|
rw: &sync.Mutex{},
|
||||||
Mangas: make(map[int]*Manga),
|
Mangas: make(map[int]*Manga),
|
||||||
Chapters: make(map[int]*Chapter),
|
Chapters: make(map[int]*Chapter),
|
||||||
CreateIfNotExists: createIfNotExists,
|
CreateIfNotExists: createIfNotExists,
|
||||||
@@ -75,6 +78,8 @@ func (dbMgr *DatabaseManager) Close() error {
|
|||||||
func (dbMgr *DatabaseManager) Save() error {
|
func (dbMgr *DatabaseManager) Save() error {
|
||||||
db := dbMgr.db
|
db := dbMgr.db
|
||||||
|
|
||||||
|
dbMgr.rw.Lock()
|
||||||
|
defer dbMgr.rw.Unlock()
|
||||||
for _, m := range dbMgr.Mangas {
|
for _, m := range dbMgr.Mangas {
|
||||||
count := 0
|
count := 0
|
||||||
err := db.QueryRow("SELECT COUNT(*) FROM Manga where ID = ?", m.Id).Scan(&count)
|
err := db.QueryRow("SELECT COUNT(*) FROM Manga where ID = ?", m.Id).Scan(&count)
|
||||||
@@ -128,6 +133,10 @@ func (dbMgr *DatabaseManager) createDatabaseIfNotExists() error {
|
|||||||
|
|
||||||
func (dbMgr *DatabaseManager) load() error {
|
func (dbMgr *DatabaseManager) load() error {
|
||||||
db := dbMgr.db
|
db := dbMgr.db
|
||||||
|
|
||||||
|
dbMgr.rw.Lock()
|
||||||
|
defer dbMgr.rw.Unlock()
|
||||||
|
|
||||||
rows, err := db.Query("SELECT * FROM Manga")
|
rows, err := db.Query("SELECT * FROM Manga")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
17
main.go
17
main.go
@@ -37,19 +37,6 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//var latestTimeStamp int64 = 0
|
|
||||||
//var latestUrl string
|
|
||||||
//for _, m := range db.Mangas {
|
|
||||||
// if latestTimeStamp < m.LatestChapter.TimeStampUnix {
|
|
||||||
// latestTimeStamp = m.LatestChapter.TimeStampUnix
|
|
||||||
// latestUrl = m.LatestChapter.Url
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//if latestUrl == "" {
|
|
||||||
// latestUrl = "/title/80381-i-stan-the-prince/1539086-ch_16"
|
|
||||||
//}
|
|
||||||
|
|
||||||
server := Server{
|
server := Server{
|
||||||
ImageBuffers: make(map[string]*bytes.Buffer),
|
ImageBuffers: make(map[string]*bytes.Buffer),
|
||||||
NextReady: make(chan bool),
|
NextReady: make(chan bool),
|
||||||
@@ -68,10 +55,6 @@ func main() {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
//server.LoadCurr()
|
|
||||||
//go server.LoadPrev()
|
|
||||||
//go server.LoadNext()
|
|
||||||
|
|
||||||
http.HandleFunc("/", server.HandleMenu)
|
http.HandleFunc("/", server.HandleMenu)
|
||||||
http.HandleFunc("/new/title/{title}/{chapter}", server.HandleNew)
|
http.HandleFunc("/new/title/{title}/{chapter}", server.HandleNew)
|
||||||
http.HandleFunc("/current/", server.HandleCurrent)
|
http.HandleFunc("/current/", server.HandleCurrent)
|
||||||
|
|||||||
@@ -188,7 +188,10 @@ func (s *Server) HandlePrev(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) HandleCurrent(w http.ResponseWriter, _ *http.Request) {
|
func (s *Server) HandleCurrent(w http.ResponseWriter, _ *http.Request) {
|
||||||
tmpl := template.Must(template.ParseFiles("test.gohtml"))
|
tmpl := template.Must(template.ParseFiles("viewer.gohtml"))
|
||||||
|
|
||||||
|
s.DbMgr.rw.Lock()
|
||||||
|
defer s.DbMgr.rw.Unlock()
|
||||||
|
|
||||||
mangaId, chapterId, err := getMangaIdAndChapterId(s.CurrSubUrl)
|
mangaId, chapterId, err := getMangaIdAndChapterId(s.CurrSubUrl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -311,6 +314,9 @@ func (s *Server) AppendImagesToBuf(html string) ([]Image, error) {
|
|||||||
func (s *Server) HandleMenu(w http.ResponseWriter, r *http.Request) {
|
func (s *Server) HandleMenu(w http.ResponseWriter, r *http.Request) {
|
||||||
tmpl := template.Must(template.ParseFiles("menu.gohtml"))
|
tmpl := template.Must(template.ParseFiles("menu.gohtml"))
|
||||||
|
|
||||||
|
s.DbMgr.rw.Lock()
|
||||||
|
defer s.DbMgr.rw.Unlock()
|
||||||
|
|
||||||
all := s.DbMgr.Mangas
|
all := s.DbMgr.Mangas
|
||||||
l := len(all)
|
l := len(all)
|
||||||
mangaViewModels := make([]MangaViewModel, l)
|
mangaViewModels := make([]MangaViewModel, l)
|
||||||
|
|||||||
Reference in New Issue
Block a user