added tapology updater for all events

This commit is contained in:
2025-02-16 21:21:35 -06:00
parent c8184d5a71
commit a494fc3bf8
4 changed files with 97 additions and 22 deletions
+45 -5
View File
@@ -103,6 +103,46 @@ func (q *Queries) GetUpcomingEvent(ctx context.Context, date int64) (Event, erro
} }
const listEvents = `-- name: ListEvents :many const listEvents = `-- name: ListEvents :many
SELECT
url, slug, name, location, organization, image, date, fights, history
FROM
event
`
func (q *Queries) ListEvents(ctx context.Context) ([]Event, error) {
rows, err := q.db.QueryContext(ctx, listEvents)
if err != nil {
return nil, err
}
defer rows.Close()
var items []Event
for rows.Next() {
var i Event
if err := rows.Scan(
&i.Url,
&i.Slug,
&i.Name,
&i.Location,
&i.Organization,
&i.Image,
&i.Date,
&i.Fights,
&i.History,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const listUpcomingEvents = `-- name: ListUpcomingEvents :many
SELECT SELECT
name, name,
slug, slug,
@@ -115,21 +155,21 @@ ORDER BY
date ASC date ASC
` `
type ListEventsRow struct { type ListUpcomingEventsRow struct {
Name string `json:"name"` Name string `json:"name"`
Slug string `json:"slug"` Slug string `json:"slug"`
Date int64 `json:"date"` Date int64 `json:"date"`
} }
func (q *Queries) ListEvents(ctx context.Context, date int64) ([]ListEventsRow, error) { func (q *Queries) ListUpcomingEvents(ctx context.Context, date int64) ([]ListUpcomingEventsRow, error) {
rows, err := q.db.QueryContext(ctx, listEvents, date) rows, err := q.db.QueryContext(ctx, listUpcomingEvents, date)
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer rows.Close() defer rows.Close()
var items []ListEventsRow var items []ListUpcomingEventsRow
for rows.Next() { for rows.Next() {
var i ListEventsRow var i ListUpcomingEventsRow
if err := rows.Scan(&i.Name, &i.Slug, &i.Date); err != nil { if err := rows.Scan(&i.Name, &i.Slug, &i.Date); err != nil {
return nil, err return nil, err
} }
+5 -2
View File
@@ -18,10 +18,13 @@ var migrations embed.FS
func main() { func main() {
q, err := InitDb("db.sqlite") q, err := InitDb("db.sqlite")
if err != nil { if err != nil {
fmt.Println("Error initializing database: ", err) fmt.Println("Error initializing database:", err)
} else { } else {
client := NewScraperClient() client := NewScraperClient()
ScrapeEvents(q, client) err := UpdateAllTapology(q, client)
if err != nil {
fmt.Println("Error updating all tapology:", err)
}
} }
} }
+40 -14
View File
@@ -19,18 +19,50 @@ func ScrapeEvents(q *event.Queries, client ClientScraper) {
for _, scraper := range scrapers { for _, scraper := range scrapers {
e, err := scraper(client) e, err := scraper(client)
if err != nil { if err != nil {
fmt.Println("Error scraping events: ", err) fmt.Println("Error scraping events:", err)
} else { } else {
events = append(events, *e...) events = append(events, *e...)
} }
} }
err := SetTapologyCSRF(client) UpdateTapology(q, client, &events)
if len(events) > 0 {
err := q.UpsertEvents(context.Background(), events)
if err != nil {
fmt.Println("Error updating events in database:", err)
}
}
}
func UpdateAllTapology(q *event.Queries, client ClientScraper) error {
events_, err := q.ListEvents(context.Background())
if err != nil { if err != nil {
fmt.Println("Error settings tapology CSRF: ", err) return err
} }
for _, e := range events { events := []*event.Event{}
for _, e := range events_ {
events = append(events, &e)
}
UpdateTapology(q, client, &events)
err = q.UpsertEvents(context.Background(), events)
if err != nil {
return err
}
return nil
}
func UpdateTapology(q *event.Queries, client ClientScraper, events *[]*event.Event) {
err := SetTapologyCSRF(client)
if err != nil {
fmt.Println("Error settings tapology CSRF:", err)
}
for _, e := range *events {
fights := e.UnmarshalFights() fights := e.UnmarshalFights()
for _, f := range fights { for _, f := range fights {
fighters := []*event.Fighter{ fighters := []*event.Fighter{
@@ -38,16 +70,17 @@ func ScrapeEvents(q *event.Queries, client ClientScraper) {
f.FighterB, f.FighterB,
} }
for _, ff := range fighters { for _, ff := range fighters {
fmt.Println("Getting tapology link for", ff.Name)
tapology, err := q.GetTapology(context.Background(), ff.Name) tapology, err := q.GetTapology(context.Background(), ff.Name)
if err != nil { if err != nil {
fmt.Println("Error getting tapology from database: ", err) fmt.Println("Error getting tapology from database:", err)
link, err := GetTapologyLink(client, ff.Name) link, err := GetTapologyLink(client, ff.Name)
if err != nil { if err != nil {
fmt.Println("Error getting tapology from site: ", err) fmt.Println("Error getting tapology from site:", err)
} else if len(link) > 0 { } else if len(link) > 0 {
err := q.CreateTapology(context.Background(), event.CreateTapologyParams{Name: ff.Name, Url: link}) err := q.CreateTapology(context.Background(), event.CreateTapologyParams{Name: ff.Name, Url: link})
if err != nil { if err != nil {
fmt.Println("Error creating tapology in database: ", err) fmt.Println("Error creating tapology in database:", err)
} }
ff.Link = link ff.Link = link
} }
@@ -59,11 +92,4 @@ func ScrapeEvents(q *event.Queries, client ClientScraper) {
} }
e.MarshalFights(fights) e.MarshalFights(fights)
} }
if len(events) > 0 {
err := q.UpsertEvents(context.Background(), events)
if err != nil {
fmt.Println("Error updating events in database: ", err)
}
}
} }
+7 -1
View File
@@ -8,6 +8,12 @@ WHERE
LIMIT LIMIT
1; 1;
-- name: ListEvents :many
SELECT
*
FROM
event;
-- name: GetUpcomingEvent :one -- name: GetUpcomingEvent :one
SELECT SELECT
* *
@@ -20,7 +26,7 @@ ORDER BY
LIMIT LIMIT
1; 1;
-- name: ListEvents :many -- name: ListUpcomingEvents :many
SELECT SELECT
name, name,
slug, slug,