Files
taskqueue-server/main.go
2025-09-12 11:35:25 +00:00

52 lines
995 B
Go

package main
import (
"context"
"log"
"net/http"
"os"
"github.com/joho/godotenv"
"github.com/mrhid6/go-mongoose/mongoose"
)
const (
collectionName = "tasks"
)
// Task statuses
const (
StatusPending = "pending"
StatusLeased = "leased"
StatusDone = "done"
)
func main() {
godotenv.Load()
ctx := context.Background()
mc, err := mongoose.NewMongoClient(ctx, mongoose.GetConnectionOptionsFromEnv())
if err != nil {
log.Fatalf("mongo connect: %v", err)
}
col := mc.GetCollection(collectionName)
s := &Server{mc: mc, col: col}
if err := s.ensureIndexes(ctx); err != nil {
log.Fatalf("ensure indexes: %v", err)
}
http.HandleFunc("/enqueue", s.handleEnqueue)
http.HandleFunc("/pop", s.handlePop)
http.HandleFunc("/complete", s.handleComplete)
http.HandleFunc("/extend", s.handleExtend)
http.HandleFunc("/requeue", s.handleRequeue)
addr := os.Getenv("HTTP_BIND")
log.Printf("task queue API listening on %s", addr)
log.Fatal(http.ListenAndServe(addr, nil))
}