From a494fc3bf8f5a073bf66963ce696044a6885fd41 Mon Sep 17 00:00:00 2001 From: long Date: Sun, 16 Feb 2025 21:21:35 -0600 Subject: [PATCH] added tapology updater for all events --- event/query.sql.go | 50 +++++++++++++++++++++++++++++++++++++----- main.go | 7 ++++-- orchestrator.go | 54 ++++++++++++++++++++++++++++++++++------------ sql/query.sql | 8 ++++++- 4 files changed, 97 insertions(+), 22 deletions(-) diff --git a/event/query.sql.go b/event/query.sql.go index 0ca4163..abe49ec 100644 --- a/event/query.sql.go +++ b/event/query.sql.go @@ -103,6 +103,46 @@ func (q *Queries) GetUpcomingEvent(ctx context.Context, date int64) (Event, erro } 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 name, slug, @@ -115,21 +155,21 @@ ORDER BY date ASC ` -type ListEventsRow struct { +type ListUpcomingEventsRow struct { Name string `json:"name"` Slug string `json:"slug"` Date int64 `json:"date"` } -func (q *Queries) ListEvents(ctx context.Context, date int64) ([]ListEventsRow, error) { - rows, err := q.db.QueryContext(ctx, listEvents, date) +func (q *Queries) ListUpcomingEvents(ctx context.Context, date int64) ([]ListUpcomingEventsRow, error) { + rows, err := q.db.QueryContext(ctx, listUpcomingEvents, date) if err != nil { return nil, err } defer rows.Close() - var items []ListEventsRow + var items []ListUpcomingEventsRow for rows.Next() { - var i ListEventsRow + var i ListUpcomingEventsRow if err := rows.Scan(&i.Name, &i.Slug, &i.Date); err != nil { return nil, err } diff --git a/main.go b/main.go index 8b1726e..bc2fd59 100644 --- a/main.go +++ b/main.go @@ -18,10 +18,13 @@ var migrations embed.FS func main() { q, err := InitDb("db.sqlite") if err != nil { - fmt.Println("Error initializing database: ", err) + fmt.Println("Error initializing database:", err) } else { client := NewScraperClient() - ScrapeEvents(q, client) + err := UpdateAllTapology(q, client) + if err != nil { + fmt.Println("Error updating all tapology:", err) + } } } diff --git a/orchestrator.go b/orchestrator.go index 61cd1e2..98ac544 100644 --- a/orchestrator.go +++ b/orchestrator.go @@ -19,18 +19,50 @@ func ScrapeEvents(q *event.Queries, client ClientScraper) { for _, scraper := range scrapers { e, err := scraper(client) if err != nil { - fmt.Println("Error scraping events: ", err) + fmt.Println("Error scraping events:", err) } else { 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 { - 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() for _, f := range fights { fighters := []*event.Fighter{ @@ -38,16 +70,17 @@ func ScrapeEvents(q *event.Queries, client ClientScraper) { f.FighterB, } for _, ff := range fighters { + fmt.Println("Getting tapology link for", ff.Name) tapology, err := q.GetTapology(context.Background(), ff.Name) 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) if err != nil { - fmt.Println("Error getting tapology from site: ", err) + fmt.Println("Error getting tapology from site:", err) } else if len(link) > 0 { err := q.CreateTapology(context.Background(), event.CreateTapologyParams{Name: ff.Name, Url: link}) if err != nil { - fmt.Println("Error creating tapology in database: ", err) + fmt.Println("Error creating tapology in database:", err) } ff.Link = link } @@ -59,11 +92,4 @@ func ScrapeEvents(q *event.Queries, client ClientScraper) { } e.MarshalFights(fights) } - - if len(events) > 0 { - err := q.UpsertEvents(context.Background(), events) - if err != nil { - fmt.Println("Error updating events in database: ", err) - } - } } diff --git a/sql/query.sql b/sql/query.sql index e2a154c..4182272 100644 --- a/sql/query.sql +++ b/sql/query.sql @@ -8,6 +8,12 @@ WHERE LIMIT 1; +-- name: ListEvents :many +SELECT + * +FROM + event; + -- name: GetUpcomingEvent :one SELECT * @@ -20,7 +26,7 @@ ORDER BY LIMIT 1; --- name: ListEvents :many +-- name: ListUpcomingEvents :many SELECT name, slug,