mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
refactoring
This commit is contained in:
parent
b223233318
commit
9b04353c4a
1
go.mod
1
go.mod
@ -6,5 +6,6 @@ require (
|
||||
github.com/PuerkitoBio/goquery v1.5.1
|
||||
github.com/mattn/go-sqlite3 v1.14.0
|
||||
github.com/mmcdole/gofeed v1.0.0
|
||||
github.com/shibukawa/configdir v0.0.0-20170330084843-e180dbdc8da0 // indirect
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e
|
||||
)
|
||||
|
2
go.sum
2
go.sum
@ -13,6 +13,8 @@ github.com/mmcdole/gofeed v1.0.0/go.mod h1:tkVcyzS3qVMlQrQxJoEH1hkTiuo9a8emDzkMi
|
||||
github.com/mmcdole/goxpp v0.0.0-20181012175147-0068e33feabf h1:sWGE2v+hO0Nd4yFU/S/mDBM5plIU8v/Qhfz41hkDIAI=
|
||||
github.com/mmcdole/goxpp v0.0.0-20181012175147-0068e33feabf/go.mod h1:pasqhqstspkosTneA62Nc+2p9SOBBYAPbnmRRWPQ0V8=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/shibukawa/configdir v0.0.0-20170330084843-e180dbdc8da0 h1:Xuk8ma/ibJ1fOy4Ee11vHhUFHQNpHhrBneOCNHVXS5w=
|
||||
github.com/shibukawa/configdir v0.0.0-20170330084843-e180dbdc8da0/go.mod h1:7AwjWCpdPhkSmNAgUv5C7EJ4AbmjEB3r047r3DXWu3Y=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
24
main.go
24
main.go
@ -2,9 +2,29 @@ package main
|
||||
|
||||
import (
|
||||
"github.com/nkanaev/yarr/server"
|
||||
"github.com/nkanaev/yarr/storage"
|
||||
"github.com/shibukawa/configdir"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func main() {
|
||||
srv := server.New()
|
||||
srv.ListenAndServe()
|
||||
logger := log.New(os.Stdout, "", log.Ldate|log.Ltime|log.Lshortfile)
|
||||
|
||||
configDirs := configdir.New("", "yarr")
|
||||
storageDir := configDirs.QueryFolders(configdir.Global)[0].Path
|
||||
storageFile := filepath.Join(storageDir, "storage.db")
|
||||
|
||||
if err := os.MkdirAll(storageDir, 0755); err != nil {
|
||||
logger.Fatal(err)
|
||||
}
|
||||
|
||||
db, err := storage.New(storageFile, logger)
|
||||
if err != nil {
|
||||
logger.Fatal(err)
|
||||
}
|
||||
|
||||
srv := server.New(db, logger)
|
||||
srv.Start("127.0.0.1:8000")
|
||||
}
|
||||
|
@ -17,12 +17,30 @@ type Route struct {
|
||||
|
||||
type Handler struct {
|
||||
db *storage.Storage
|
||||
log *log.Logger
|
||||
fetchRunning bool
|
||||
feedQueue chan storage.Feed
|
||||
counter chan int
|
||||
queueSize int
|
||||
}
|
||||
|
||||
func New(db *storage.Storage, logger *log.Logger) *Handler {
|
||||
db.DeleteOldItems()
|
||||
h := Handler{
|
||||
db: db,
|
||||
log: logger,
|
||||
feedQueue: make(chan storage.Feed),
|
||||
counter: make(chan int),
|
||||
}
|
||||
return &h
|
||||
}
|
||||
|
||||
func (h *Handler) Start(addr string) {
|
||||
h.startJobs()
|
||||
s := &http.Server{Addr: addr, Handler: h}
|
||||
s.ListenAndServe()
|
||||
}
|
||||
|
||||
func (h *Handler) startJobs() {
|
||||
go func() {
|
||||
for {
|
||||
@ -138,16 +156,3 @@ func writeJSON(rw http.ResponseWriter, data interface{}) {
|
||||
rw.Write(reply)
|
||||
rw.Write([]byte("\n"))
|
||||
}
|
||||
|
||||
func New() *http.Server {
|
||||
db, _ := storage.New()
|
||||
db.DeleteOldItems()
|
||||
h := Handler{
|
||||
db: db,
|
||||
feedQueue: make(chan storage.Feed),
|
||||
counter: make(chan int),
|
||||
}
|
||||
s := &http.Server{Addr: "127.0.0.1:8000", Handler: h}
|
||||
//h.startJobs()
|
||||
return s
|
||||
}
|
||||
|
@ -324,5 +324,7 @@ func (s *Storage) DeleteOldItems() {
|
||||
s.log.Print(err)
|
||||
return
|
||||
}
|
||||
s.log.Printf("Deleted %d items\n", num)
|
||||
if num > 0 {
|
||||
s.log.Printf("Deleted %d old items\n", num)
|
||||
}
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ create table if not exists settings (
|
||||
val blob
|
||||
);
|
||||
|
||||
create virtual table if not exists search using fts5(title, description, content);
|
||||
create virtual table if not exists search using fts4(title, description, content);
|
||||
|
||||
create trigger if not exists del_item_search after delete on items begin
|
||||
delete from search where rowid = old.search_rowid;
|
||||
@ -67,17 +67,26 @@ type Storage struct {
|
||||
log *log.Logger
|
||||
}
|
||||
|
||||
func New() (*Storage, error) {
|
||||
path := "./storage.db"
|
||||
func New(path string, logger *log.Logger) (*Storage, error) {
|
||||
initialize := false
|
||||
if _, err := os.Stat(path); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
initialize = true
|
||||
} else {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
db, err := sql.Open("sqlite3", path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, err = db.Exec(initQuery)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
if initialize {
|
||||
if _, err := db.Exec(initQuery); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
logger := log.New(os.Stdout, "storage: ", log.Ldate|log.Ltime|log.Lshortfile)
|
||||
return &Storage{db: db, log: logger}, nil
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user