add GET delivery count route
This commit is contained in:
@@ -35,6 +35,7 @@ func main() {
|
||||
|
||||
r.GET("/api/deliveries", h.GetDeliveries)
|
||||
r.GET("/api/deliveries/:id", h.GetDeliveryByID)
|
||||
r.GET("/api/deliveries/count", h.GetDeliveryCount)
|
||||
r.POST("/api/deliveries", h.CreateDelivery)
|
||||
r.PATCH("/api/deliveries/:id", h.UpdateDelivery)
|
||||
r.DELETE("/api/deliveries/:id", h.DeleteDelivery)
|
||||
|
||||
@@ -14,3 +14,6 @@ DELETE FROM deliveries WHERE id = $1;
|
||||
|
||||
-- name: UpdateDelivery :exec
|
||||
UPDATE deliveries SET date = $1, pickup_location = $2, product_name = $3, address = $4, phone = $5, additional_phone = $6, has_elevator = $7, comment = $8, updated_at = NOW() WHERE id = $9;
|
||||
|
||||
-- name: GetDeliveryCount :many
|
||||
SELECT COUNT(*) as count, date FROM deliveries WHERE date >= DATE_TRUNC('month', CURRENT_DATE) GROUP BY date;
|
||||
@@ -15,6 +15,7 @@ type Querier interface {
|
||||
DeleteDelivery(ctx context.Context, id pgtype.UUID) error
|
||||
GetDeliveriesByDate(ctx context.Context, date pgtype.Date) ([]Delivery, error)
|
||||
GetDeliveryByID(ctx context.Context, id pgtype.UUID) (Delivery, error)
|
||||
GetDeliveryCount(ctx context.Context) ([]GetDeliveryCountRow, error)
|
||||
UpdateDelivery(ctx context.Context, arg UpdateDeliveryParams) error
|
||||
}
|
||||
|
||||
|
||||
@@ -127,6 +127,35 @@ func (q *Queries) GetDeliveryByID(ctx context.Context, id pgtype.UUID) (Delivery
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getDeliveryCount = `-- name: GetDeliveryCount :many
|
||||
SELECT COUNT(*) as count, date FROM deliveries WHERE date >= DATE_TRUNC('month', CURRENT_DATE) GROUP BY date
|
||||
`
|
||||
|
||||
type GetDeliveryCountRow struct {
|
||||
Count int64 `db:"count" json:"count"`
|
||||
Date pgtype.Date `db:"date" json:"date"`
|
||||
}
|
||||
|
||||
func (q *Queries) GetDeliveryCount(ctx context.Context) ([]GetDeliveryCountRow, error) {
|
||||
rows, err := q.db.Query(ctx, getDeliveryCount)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
items := []GetDeliveryCountRow{}
|
||||
for rows.Next() {
|
||||
var i GetDeliveryCountRow
|
||||
if err := rows.Scan(&i.Count, &i.Date); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const updateDelivery = `-- name: UpdateDelivery :exec
|
||||
UPDATE deliveries SET date = $1, pickup_location = $2, product_name = $3, address = $4, phone = $5, additional_phone = $6, has_elevator = $7, comment = $8, updated_at = NOW() WHERE id = $9
|
||||
`
|
||||
|
||||
@@ -69,6 +69,17 @@ func (h *Handler) GetDeliveries(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"deliveries": deliveries})
|
||||
}
|
||||
|
||||
// GET /api/deliveries/count
|
||||
func (h *Handler) GetDeliveryCount(c *gin.Context) {
|
||||
counts, err := h.queries.GetDeliveryCount(c.Request.Context())
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to get delivery count", "details": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"counts": counts})
|
||||
}
|
||||
|
||||
// POST /api/deliveries
|
||||
func (h *Handler) CreateDelivery(c *gin.Context) {
|
||||
var req DeliveryRequest = DeliveryRequest{}
|
||||
|
||||
Reference in New Issue
Block a user