81 lines
2.2 KiB
Go
81 lines
2.2 KiB
Go
//go:build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"doormile/config"
|
|
"doormile/db"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func main() {
|
|
_ = godotenv.Load()
|
|
cfg := config.Load()
|
|
db.Connect(cfg)
|
|
if db.DB == nil {
|
|
log.Fatal("no DB")
|
|
}
|
|
|
|
type b struct {
|
|
Bookingid int
|
|
Bookingno string
|
|
Status string
|
|
Createdat string
|
|
Updatedat string
|
|
Assignedmileruserid *int
|
|
Pickuplatitude float64
|
|
Pickuplongitude float64
|
|
Pickuppincode string
|
|
Deliverypincode string
|
|
Deliveryaddress string
|
|
Appcustomerid int
|
|
}
|
|
var rows []b
|
|
db.DB.Raw(`SELECT bookingid, bookingno, status, createdat::text, updatedat::text,
|
|
assignedmileruserid, pickuplatitude, pickuplongitude, pickuppincode,
|
|
deliverypincode, deliveryaddress, appcustomerid
|
|
FROM pickupbookings WHERE bookingid IN (546,547,179) ORDER BY bookingid DESC`).Scan(&rows)
|
|
for _, r := range rows {
|
|
miler := "none"
|
|
if r.Assignedmileruserid != nil {
|
|
miler = fmt.Sprintf("%d", *r.Assignedmileruserid)
|
|
}
|
|
fmt.Printf("#%d %s\n status=%s created=%s\n updated=%s miler=%s customer=%d\n pickup=(%.4f,%.4f) %s -> %s drop=%q\n\n",
|
|
r.Bookingid, r.Bookingno, r.Status, r.Createdat, r.Updatedat, miler,
|
|
r.Appcustomerid, r.Pickuplatitude, r.Pickuplongitude, r.Pickuppincode,
|
|
r.Deliverypincode, r.Deliveryaddress)
|
|
}
|
|
|
|
fmt.Println("=== assignments on those bookings ===")
|
|
type a struct {
|
|
Bookingid int
|
|
Assignmentstatus string
|
|
Assignedat string
|
|
Remarks string
|
|
}
|
|
var as []a
|
|
db.DB.Raw(`SELECT bookingid, assignmentstatus, assignedat::text, remarks
|
|
FROM bookingassignments WHERE bookingid IN (546,547,179)`).Scan(&as)
|
|
if len(as) == 0 {
|
|
fmt.Println(" none — no rider was ever assigned")
|
|
}
|
|
for _, x := range as {
|
|
fmt.Printf(" booking %d: %s at %s %q\n", x.Bookingid, x.Assignmentstatus, x.Assignedat, x.Remarks)
|
|
}
|
|
|
|
fmt.Println("\n=== how many bookings sit in each status ===")
|
|
type s struct {
|
|
Status string
|
|
N int64
|
|
}
|
|
var ss []s
|
|
db.DB.Raw(`SELECT status, count(*) n FROM pickupbookings GROUP BY 1 ORDER BY n DESC`).Scan(&ss)
|
|
for _, x := range ss {
|
|
fmt.Printf(" %-26s %d\n", x.Status, x.N)
|
|
}
|
|
}
|