Skip to content

Commit

Permalink
feat: Add last 24h completed tasks card
Browse files Browse the repository at this point in the history
  • Loading branch information
strahe committed Aug 29, 2024
1 parent e711927 commit c7df52c
Show file tree
Hide file tree
Showing 12 changed files with 316 additions and 116 deletions.
14 changes: 6 additions & 8 deletions db/harmony.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,22 +77,20 @@ func (d dbscanRows) NextResultSet() bool {
return false
}

type rawStringOnly string

func (db *HarmonyDB) QueryRow(ctx context.Context, sql rawStringOnly, arguments ...any) Row {
return db.pgx.QueryRow(ctx, string(sql), arguments...)
func (db *HarmonyDB) QueryRow(ctx context.Context, sql string, arguments ...any) Row {
return db.pgx.QueryRow(ctx, sql, arguments...)
}

func (db *HarmonyDB) Select(ctx context.Context, sliceOfStructPtr any, sql rawStringOnly, arguments ...any) error {
rows, err := db.pgx.Query(ctx, string(sql), arguments...)
func (db *HarmonyDB) Select(ctx context.Context, sliceOfStructPtr any, sql string, arguments ...any) error {
rows, err := db.pgx.Query(ctx, sql, arguments...)
if err != nil {
return err
}
defer rows.Close()
return dbscan.ScanAll(sliceOfStructPtr, dbscanRows{rows})
}

func (db *HarmonyDB) Exec(ctx context.Context, sql rawStringOnly, arguments ...any) (count int, err error) {
res, err := db.pgx.Exec(ctx, string(sql), arguments...)
func (db *HarmonyDB) Exec(ctx context.Context, sql string, arguments ...any) (count int, err error) {
res, err := db.pgx.Exec(ctx, sql, arguments...)
return int(res.RowsAffected()), err
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ require (
github.com/filecoin-project/curio v1.22.2-0.20240719083504-f36f2ab7b2de
github.com/filecoin-project/go-address v1.1.0
github.com/filecoin-project/go-jsonrpc v0.5.0
github.com/filecoin-project/go-state-types v0.14.0
github.com/filecoin-project/lotus v1.28.0
github.com/georgysavva/scany/v2 v2.1.3
github.com/golang-jwt/jwt v3.2.2+incompatible
Expand Down Expand Up @@ -77,6 +76,7 @@ require (
github.com/filecoin-project/go-hamt-ipld/v2 v2.0.0 // indirect
github.com/filecoin-project/go-hamt-ipld/v3 v3.1.0 // indirect
github.com/filecoin-project/go-paramfetch v0.0.4 // indirect
github.com/filecoin-project/go-state-types v0.14.0 // indirect
github.com/filecoin-project/go-statestore v0.2.0 // indirect
github.com/filecoin-project/pubsub v1.0.0 // indirect
github.com/filecoin-project/specs-actors v0.9.15 // indirect
Expand Down
156 changes: 149 additions & 7 deletions graph/generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 31 additions & 0 deletions graph/loaders/task_history.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@ package loaders

import (
"context"
"strconv"
"time"

"github.com/jackc/pgx/v5"
"github.com/strahe/curio-dashboard/graph/model"
)

type TaskHistoryLoader interface {
TaskHistories(ctx context.Context, offset int, limit int) ([]*model.TaskHistory, error)
SubCompletedTask(ctx context.Context, last int) (<-chan *model.TaskHistory, error)
TaskHistoriesCount(ctx context.Context, start, end time.Time, name *string) (int, error)
}

// TaskHistories is the resolver for the taskHistories field.
Expand All @@ -21,6 +24,34 @@ func (l *Loader) TaskHistories(ctx context.Context, offset int, limit int) ([]*m
return out, nil
}

// TaskHistoriesCount Count the number of task histories between start and end time
func (l *Loader) TaskHistoriesCount(ctx context.Context, start, end time.Time, machine, name *string, success *bool) (int, error) {
var count int
var row pgx.Row

query := "SELECT COUNT(*) FROM harmony_task_history WHERE work_end BETWEEN $1 AND $2"
args := []interface{}{start, end}
index := 3

if machine != nil {
query += " AND completed_by_host_and_port = $" + strconv.Itoa(index)
args = append(args, *machine)
index++
}
if name != nil {
query += " AND name = $" + strconv.Itoa(index)
args = append(args, *name)
index++
}
if success != nil {
query += " AND success = $" + strconv.Itoa(index)
args = append(args, *success)
}

row = l.db.QueryRow(ctx, query, args...)
return count, row.Scan(&count)
}

func (l *Loader) SubCompletedTask(ctx context.Context, last int) (<-chan *model.TaskHistory, error) {
taskChan := make(chan *model.TaskHistory)

Expand Down
20 changes: 12 additions & 8 deletions graph/resolvers/query.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion graph/schema/query.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ type Query {
# task
task(id: Int!): Task
tasks: [Task]
taskHistories(offset: Int!, limit: Int!): [TaskHistory]
tasksCount: Int!
taskHistories(offset: Int!, limit: Int!): [TaskHistory]
taskHistoriesCount(start: Time!, end: Time!, machine: String, name: String, success: Boolean): Int!
# taskSummary(lastDays: Int!): [TaskSummary]
# taskSummaryByDay(lastDays: Int!): [TaskSummaryDay]
taskAggregatesByDay(lastDays: Int!): [TaskAggregate]
Expand Down
Loading

0 comments on commit c7df52c

Please sign in to comment.