//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) } }