Commit 5471583

mo khan <mo@mokhan.ca>
2025-04-12 22:15:56
feat: wire up dependencies in inversion of control container
1 parent ff15873
Changed files (3)
cmd/sparkled/main.go
@@ -5,16 +5,26 @@ import (
 	"net/http"
 
 	"github.com/xlgmokha/x/pkg/env"
+	"github.com/xlgmokha/x/pkg/ioc"
 	"gitlab.com/mokhax/sparkled/pkg/db"
 	"gitlab.com/mokhax/sparkled/pkg/web"
 )
 
+func init() {
+	ioc.RegisterSingleton[db.Repository](ioc.Default, func() db.Repository {
+		return db.NewRepository()
+	})
+	ioc.RegisterSingleton[*web.Server](ioc.Default, func() *web.Server {
+		return web.New(ioc.MustResolve[db.Repository](ioc.Default))
+	})
+}
+
 func main() {
 	bindAddr := env.Fetch("BIND_ADDR", ":http")
 	log.Printf("Listening on %v\n", bindAddr)
 
 	log.Fatal(http.ListenAndServe(
 		bindAddr,
-		web.New(db.NewRepository()),
+		ioc.MustResolve[*web.Server](ioc.Default),
 	))
 }
go.mod
@@ -5,11 +5,12 @@ go 1.24.0
 require (
 	github.com/oklog/ulid v1.3.1
 	github.com/stretchr/testify v1.10.0
-	github.com/xlgmokha/x v0.0.0-20250404223908-0b29f54f06e7
+	github.com/xlgmokha/x v0.0.0-20250412211812-8dcb68809180
 )
 
 require (
 	github.com/davecgh/go-spew v1.1.1 // indirect
+	github.com/golobby/container/v3 v3.3.2 // indirect
 	github.com/google/jsonapi v1.0.0 // indirect
 	github.com/pmezard/go-difflib v1.0.0 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
go.sum
@@ -1,5 +1,7 @@
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/golobby/container/v3 v3.3.2 h1:7u+RgNnsdVlhGoS8gY4EXAG601vpMMzLZlYqSp77Quw=
+github.com/golobby/container/v3 v3.3.2/go.mod h1:RDdKpnKpV1Of11PFBe7Dxc2C1k2KaLE4FD47FflAmj0=
 github.com/google/jsonapi v1.0.0 h1:qIGgO5Smu3yJmSs+QlvhQnrscdZfFhiV6S8ryJAglqU=
 github.com/google/jsonapi v1.0.0/go.mod h1:YYHiRPJT8ARXGER8In9VuLv4qvLfDmA9ULQqptbLE4s=
 github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
@@ -8,8 +10,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
 github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/xlgmokha/x v0.0.0-20250404223908-0b29f54f06e7 h1:Jjik5MGVznsXlo+otZXsWuKvbg3lCixMEIIkoxx0Ojc=
-github.com/xlgmokha/x v0.0.0-20250404223908-0b29f54f06e7/go.mod h1:kLXa5uHaL3VF9ly6XlioU/Q1gittXvAYh6s1WpOFaU8=
+github.com/xlgmokha/x v0.0.0-20250412211812-8dcb68809180 h1:gVt0E4yeEPpzjV8Suv3mg0LkYB+N6milsGePNVUB+0o=
+github.com/xlgmokha/x v0.0.0-20250412211812-8dcb68809180/go.mod h1:axGPKzoJCNTmPJxYqN5l+Z9gGbPe0yolkT61a5p3QiI=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=