From f0fc7ee2cb65923b6e86f0811a862b910ca59257 Mon Sep 17 00:00:00 2001 From: Muyao CHEN Date: Sun, 29 Sep 2024 23:50:00 +0200 Subject: [PATCH] Gin: add gin into the framework --- .gitmodules | 3 +++ framework/container.go | 20 +++++++------------- framework/containter_test.go | 2 +- framework/gin | 1 + go.mod | 2 ++ main.go | 12 ++---------- 6 files changed, 16 insertions(+), 24 deletions(-) create mode 100644 .gitmodules create mode 160000 framework/gin diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..d62f1c7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "framework/gin"] + path = framework/gin + url = gitea@git.vinchent.xyz:vinchent/gin.git diff --git a/framework/container.go b/framework/container.go index 38684f3..d0478cc 100644 --- a/framework/container.go +++ b/framework/container.go @@ -18,16 +18,14 @@ type Container interface { // IsBound returns true the provider is bound to the container. IsBound(name string) bool - // Get gets or creates a service by its name. + // Make gets or creates a service by its name. // // Return error if the service cannot be initiated or doesn't exist. - Get(name string) (interface{}, error) + Make(name string) (interface{}, error) - // JustGet gets a service, return nil if error. - JustGet(name string) interface{} - - // GetExisted gets an initiated service by its name. - GetExisted(name string) interface{} + // MustMake makes a service, supposing that it is not instantiated before. + // Return nil if error. + MustMake(name string) interface{} // MakeNew creates a new instance of the service with different parameters. // @@ -109,15 +107,11 @@ func (c *GoWebContainer) getServiceProvider(name string) ServiceProvider { return nil } -func (c *GoWebContainer) Get(name string) (interface{}, error) { +func (c *GoWebContainer) Make(name string) (interface{}, error) { return c.makeServiceInstance(name, nil, false) } -func (c *GoWebContainer) GetExisted(name string) interface{} { - return c.getServiceInstance(name) -} - -func (c *GoWebContainer) JustGet(name string) interface{} { +func (c *GoWebContainer) MustMake(name string) interface{} { ins, err := c.makeServiceInstance(name, nil, false) if err != nil { return nil diff --git a/framework/containter_test.go b/framework/containter_test.go index d15ce53..a173e97 100644 --- a/framework/containter_test.go +++ b/framework/containter_test.go @@ -75,7 +75,7 @@ func TestBind(t *testing.T) { container.Bind(provider) - dummyService := container.JustGet(DummyProviderName).(IDummyService) + dummyService := container.MustMake(DummyProviderName).(IDummyService) want := DummyStruct{ Name: "Dummy!", diff --git a/framework/gin b/framework/gin new file mode 160000 index 0000000..f05f966 --- /dev/null +++ b/framework/gin @@ -0,0 +1 @@ +Subproject commit f05f966a0824b1d302ee556183e2579c91954266 diff --git a/go.mod b/go.mod index b2e1ffb..2bf7bbe 100644 --- a/go.mod +++ b/go.mod @@ -35,3 +35,5 @@ require ( gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) + +replace github.com/gin-gonic/gin => ./framework/gin diff --git a/main.go b/main.go index 6d7570b..0aedda4 100644 --- a/main.go +++ b/main.go @@ -10,19 +10,11 @@ import ( "syscall" "time" - "git.vinchent.xyz/vinchent/go-web/framework" - "git.vinchent.xyz/vinchent/go-web/providers/webserver" + "github.com/gin-gonic/gin" ) func main() { - container := framework.NewGoWebContainer() - webServiceProvider := &webserver.WebSrvProvider{} - - container.Bind(webServiceProvider) - - goWebGin := container.JustGet(webserver.WebSrvName).(*webserver.GoWebGin) - - core := goWebGin.Engine + core := gin.New() registerRouter(core) server := &http.Server{ Addr: ":8080",