porting all github actions from bluesky-social/indigo to tangled CI
at main 2.6 kB view raw
1package querycheck 2 3import ( 4 "time" 5 6 "github.com/labstack/echo/v4" 7) 8 9type RetQuery struct { 10 Name string `json:"name"` 11 Query string `json:"query"` 12 LatestPlan *QueryPlan `json:"latest_plan"` 13 PreviousPlan *QueryPlan `json:"previous_plan"` 14 LastChecked time.Time `json:"last_checked"` 15 LastError error `json:"last_error"` 16 CheckEvery string `json:"check_every"` 17} 18 19func (q *Querychecker) HandleGetQueries(c echo.Context) error { 20 queries := q.GetQueries(c.Request().Context()) 21 retQueries := []RetQuery{} 22 for _, query := range queries { 23 retQueries = append(retQueries, RetQuery{ 24 Name: query.Name, 25 Query: query.Query, 26 LatestPlan: query.LatestPlan, 27 PreviousPlan: query.PreviousPlan, 28 LastChecked: query.LastChecked, 29 LastError: query.LastError, 30 CheckEvery: query.CheckEvery.String(), 31 }) 32 } 33 34 return c.JSON(200, retQueries) 35} 36 37func (q *Querychecker) HandleGetQuery(c echo.Context) error { 38 query := q.GetQuery(c.Request().Context(), c.Param("name")) 39 if query == nil { 40 return c.JSON(404, echo.Map{ 41 "message": "not found", 42 }) 43 } 44 45 retQuery := RetQuery{ 46 Name: query.Name, 47 Query: query.Query, 48 LatestPlan: query.LatestPlan, 49 PreviousPlan: query.PreviousPlan, 50 LastChecked: query.LastChecked, 51 LastError: query.LastError, 52 CheckEvery: query.CheckEvery.String(), 53 } 54 55 return c.JSON(200, retQuery) 56} 57 58func (q *Querychecker) HandleDeleteQuery(c echo.Context) error { 59 q.RemoveQuery(c.Request().Context(), c.Param("name")) 60 return c.JSON(200, echo.Map{ 61 "message": "success", 62 }) 63} 64 65type AddQueryRequest struct { 66 Name string `json:"name"` 67 Query string `json:"query"` 68 CheckEvery int64 `json:"check_every_ms"` 69} 70 71func (q *Querychecker) HandleAddQuery(c echo.Context) error { 72 var req AddQueryRequest 73 c.Bind(&req) 74 q.AddQuery(c.Request().Context(), req.Name, req.Query, time.Duration(req.CheckEvery)*time.Millisecond) 75 return c.JSON(200, echo.Map{ 76 "name": req.Name, 77 "query": req.Query, 78 "check_every_ms": req.CheckEvery, 79 "message": "success", 80 }) 81} 82 83type UpdateQueryRequest struct { 84 Query string `json:"query"` 85 CheckEvery int64 `json:"check_every_ms"` 86} 87 88func (q *Querychecker) HandleUpdateQuery(c echo.Context) error { 89 var req UpdateQueryRequest 90 c.Bind(&req) 91 q.UpdateQuery(c.Request().Context(), c.Param("name"), req.Query, time.Duration(req.CheckEvery)*time.Millisecond) 92 return c.JSON(200, echo.Map{ 93 "name": c.Param("name"), 94 "query": req.Query, 95 "check_every_ms": req.CheckEvery, 96 "message": "success", 97 }) 98}