blob: 6f07c98edaa6a4c4f00e5bcdfec0f4dd714b910b [file] [log] [blame]
package main
import (
"context"
"flag"
"net/http"
"github.com/go-chi/chi/v5"
"github.com/jackc/pgx/v4/pgxpool"
"go.skia.org/infra/go/sklog"
jobs "go.skia.org/infra/pinpoint/go/frontend/service"
jobstore "go.skia.org/infra/pinpoint/go/sql/jobs_store"
)
var (
port = flag.String("port", ":8080", "The port to listen on for HTTP traffic.")
connectionString = flag.String("connection_string", "postgresql://root@localhost:5432/natnael-test-database?sslmode=disable",
"The connection string for the Pairwise backend database.")
prodAssetsDir = flag.String("prod_assest_dir", "pinpoint/ui/pages/production",
"The resource/assets directory.")
)
func main() {
flag.Parse()
ctx := context.Background()
cfg, err := pgxpool.ParseConfig(*connectionString)
if err != nil {
sklog.Fatalf("failed to parse database config: %s", err)
}
pool, err := pgxpool.ConnectConfig(ctx, cfg)
if err != nil {
sklog.Fatalf("failed to connect to database: %s", err)
}
js := jobstore.NewJobStore(pool)
service, err := jobs.New(ctx, js, *prodAssetsDir)
if err != nil {
sklog.Fatalf("failed to connect create Jobs Service: %s", err)
}
router := chi.NewRouter()
service.RegisterHandlers(router)
// /dist/ is the assets_serving_path defined in the BUILD for the landing page
router.Handle("/dist/*", http.StripPrefix("/dist/", http.FileServer(http.Dir(*prodAssetsDir))))
sklog.Infof("http://localhost%s", *port)
server := &http.Server{
Addr: *port,
Handler: router,
}
sklog.Fatal(server.ListenAndServe())
}