Files
crowsnest/src/cmd/frontend/main.go

66 lines
1.4 KiB
Go

package main
import (
"crowsnest/internal/app"
"crowsnest/internal/crawler"
"crowsnest/internal/middleware"
"crowsnest/internal/model"
"crowsnest/internal/model/database"
"crowsnest/internal/util"
"log"
"net/http"
_ "github.com/lib/pq"
)
func main() {
db, err := database.DbConnection()
if err != nil {
log.Fatal("failed to connect to database due to", err.Error())
}
// summarize documents
documents := &database.DocumentRepository{DB: db}
go documents.Map(func(doc *model.Document) *model.Document {
if doc.Summary == "" {
summaryText, err := util.Summarize(doc.Content)
if err == nil {
doc.Summary = summaryText
return doc
}
log.Println(err.Error())
}
return doc
})
// run web crawlers
articles := &database.ArticleRepository{DB: db}
crawler := crawler.CrawlerFacade{}
crawler.Init()
crawler.SubscribeToSpiegelFeed(func(a *model.Article) {
articles.Insert(a)
})
crawler.SubscribeToZeitFeed(func(a *model.Article) {
articles.Insert(a)
})
// define app
webapp := app.NewApp(db)
// create middle
stack := middleware.CreateStack(
middleware.Logging,
)
// start web server
server := http.Server{
Addr: ":8080",
Handler: stack(webapp.Routes()),
}
log.Println("server started, listening on :8080")
server.ListenAndServe()
}