From aa330dffea0796e0427d67830722a6c13bbd122a Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Sat, 14 Dec 2024 20:45:29 -0700 Subject: [PATCH] wip --- cmd/server/config.go | 36 ++++++++++++++++++++++++++++++++++++ cmd/server/server.go | 3 ++- cmd/server/v1.go | 2 +- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/cmd/server/config.go b/cmd/server/config.go index 1c6c5dc..8d89910 100644 --- a/cmd/server/config.go +++ b/cmd/server/config.go @@ -1,8 +1,11 @@ package main import ( + "context" + "database/sql" "flag" "os" + "time" ) type Config struct { @@ -20,3 +23,36 @@ func NewConfig() (Config, error) { err := fs.Parse(os.Args[1:]) return c, err } + +type DB struct { + scheme string + conn string +} + +func NewDB(ctx context.Context, scheme, conn string) (DB, error) { + ctx, can := context.WithTimeout(ctx, time.Second*10) + defer can() + + db := DB{ + scheme: scheme, + conn: conn, + } + + sql, err := db.dial(ctx) + if sql != nil { + sql.Close() + } + + return db, err +} + +func (db DB) dial(ctx context.Context) (*sql.DB, error) { + c, err := sql.Open(db.scheme, db.conn) + if err != nil { + return nil, err + } + if err := c.PingContext(ctx); err != nil { + return nil, err + } + return c, nil +} diff --git a/cmd/server/server.go b/cmd/server/server.go index e452e2e..932de4a 100644 --- a/cmd/server/server.go +++ b/cmd/server/server.go @@ -30,7 +30,8 @@ func (s *S) serveHTTP(w http.ResponseWriter, r *http.Request) error { } func (s *S) serveStatic(w http.ResponseWriter, r *http.Request) error { - http.FS(http.Dir(s.config.Root)).ServeHTTP(w, r) + fs := http.Dir(s.config.Root) + http.FileServer(fs).ServeHTTP(w, r) return nil } diff --git a/cmd/server/v1.go b/cmd/server/v1.go index 5ff35ea..30f55c2 100644 --- a/cmd/server/v1.go +++ b/cmd/server/v1.go @@ -13,7 +13,7 @@ func isV1(r *http.Request) bool { func (s *S) serveV1(w http.ResponseWriter, r *http.Request) error { switch path.Join(r.Method, r.URL.Path) { - case "PUT/v1/state/" + s.Session(r).ID + "/party": + case "PUT/v1/state/" + s.Session(r.Context()).ID + "/party": return s.serveV1PutParty(w, r) default: http.NotFound(w, r)