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

66 lines
1.4 KiB
Go
Raw Normal View History

2024-12-20 01:15:56 +01:00
package main
import (
"crowsnest/internal/app"
2025-01-12 03:35:19 +01:00
"crowsnest/internal/crawler"
"crowsnest/internal/middleware"
2025-01-20 08:58:49 +01:00
"crowsnest/internal/model"
2025-01-06 19:58:01 +01:00
"crowsnest/internal/model/database"
2025-01-20 20:34:23 +01:00
"crowsnest/internal/util"
2025-01-02 16:21:02 +01:00
"log"
"net/http"
2025-01-03 01:00:06 +01:00
2025-01-06 19:58:01 +01:00
_ "github.com/lib/pq"
2024-12-20 01:15:56 +01:00
)
func main() {
db, err := database.DbConnection()
2025-01-07 09:32:57 +01:00
if err != nil {
log.Fatal("failed to connect to database due to", err.Error())
2025-01-11 01:00:32 +01:00
}
2025-01-06 19:58:01 +01:00
2025-01-20 20:34:23 +01:00
// 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
})
2025-01-12 03:35:19 +01:00
// run web crawlers
2025-01-20 11:31:32 +01:00
articles := &database.ArticleRepository{DB: db}
2025-01-20 08:58:49 +01:00
crawler := crawler.CrawlerFacade{}
crawler.Init()
crawler.SubscribeToSpiegelFeed(func(a *model.Article) {
articles.Insert(a)
})
crawler.SubscribeToZeitFeed(func(a *model.Article) {
articles.Insert(a)
})
2025-01-12 03:35:19 +01:00
2025-01-06 19:58:01 +01:00
// define app
webapp := app.NewApp(db)
2025-01-06 19:58:01 +01:00
2025-01-11 19:28:53 +01:00
// create middle
stack := middleware.CreateStack(
middleware.Logging,
)
2025-01-06 19:58:01 +01:00
// start web server
server := http.Server{
2025-01-11 01:35:25 +01:00
Addr: ":8080",
2025-01-11 19:28:53 +01:00
Handler: stack(webapp.Routes()),
2025-01-06 19:58:01 +01:00
}
2025-01-11 01:35:25 +01:00
log.Println("server started, listening on :8080")
2025-01-06 19:58:01 +01:00
server.ListenAndServe()
2024-12-20 01:15:56 +01:00
}