Skip to content

Commit 6c3dbe3

Browse files
committed
wire 依赖注入
1 parent acc0685 commit 6c3dbe3

File tree

7 files changed

+89
-6
lines changed

7 files changed

+89
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package auth
2+
3+
import (
4+
v1 "goapi/app/http/controllers/api/v1"
5+
6+
"github.com/google/wire"
7+
)
8+
9+
var InjectorSet = wire.NewSet(
10+
wire.Struct(new(v1.BaseAPIController), "*"),
11+
wire.Struct(new(LoginController), "*"),
12+
wire.Struct(new(SignupController), "*"),
13+
wire.Struct(new(PasswordController), "*"),
14+
wire.Struct(new(VerifyCodeController), "*"),
15+
wire.Struct(new(Injector), "*"),
16+
)
17+
18+
type Injector struct {
19+
LoginController *LoginController
20+
SignupController *SignupController
21+
PasswordController *PasswordController
22+
VerifyCodeController *VerifyCodeController
23+
}
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//go:build wireinject
2+
// +build wireinject
3+
4+
package auth
5+
6+
import (
7+
"github.com/google/wire"
8+
)
9+
10+
func BuildInjector() *Injector {
11+
wire.Build(
12+
// injector
13+
InjectorSet,
14+
)
15+
16+
return new(Injector)
17+
}

app/http/controllers/api/v1/auth/wire_gen.go

+36
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bootstrap/database.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ func SetupDB() {
3131
})
3232
case "sqlite":
3333
// 初始化 sqlite
34-
database := config.Get("database.sqlite.database")
35-
dbConfig = sqlite.Open(database)
34+
db := config.Get("database.sqlite.database")
35+
dbConfig = sqlite.Open(db)
3636
default:
3737
panic(errors.New("database connection not supported"))
3838
}

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ require (
1010
github.com/getsentry/sentry-go v0.13.0
1111
github.com/gin-gonic/gin v1.9.0
1212
github.com/golang-jwt/jwt/v4 v4.4.2
13+
github.com/google/wire v0.5.0
1314
github.com/iancoleman/strcase v0.2.0
1415
github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible
1516
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d

go.sum

+4
Original file line numberDiff line numberDiff line change
@@ -290,9 +290,12 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe
290290
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
291291
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
292292
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
293+
github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
293294
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
294295
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
295296
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
297+
github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8=
298+
github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU=
296299
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
297300
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
298301
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
@@ -886,6 +889,7 @@ golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3
886889
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
887890
golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
888891
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
892+
golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
889893
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
890894
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
891895
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=

routes/api.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,14 @@ func RegisterAPIRoutes(r *gin.Engine) {
3636
})
3737
authGroup := v1.Group("/auth")
3838

39+
authControllers := auth.BuildInjector()
40+
3941
// 限流中间件:每小时限流,作为参考 Github API 每小时最多 60 个请求(根据 IP)
4042
// 测试时,可以调高一点
4143
authGroup.Use(middlewares.LimitIP("1000-H"))
4244
{
4345

44-
suc := new(auth.SignupController)
46+
suc := authControllers.SignupController
4547
// 判断手机是否已注册
4648
authGroup.POST("/signup/phone/exist", middlewares.GuestJWT(), middlewares.LimitPerRoute("60-H"), suc.IsPhoneExist)
4749
// 判断 Email 是否已注册
@@ -52,15 +54,15 @@ func RegisterAPIRoutes(r *gin.Engine) {
5254
authGroup.POST("/signup/using-email", middlewares.GuestJWT(), suc.SignupUsingEmail)
5355

5456
// 发送验证码
55-
vcc := new(auth.VerifyCodeController)
57+
vcc := authControllers.VerifyCodeController
5658
// 图片验证码,需要加限流
5759
authGroup.POST("/verify-codes/captcha", middlewares.LimitPerRoute("50-H"), vcc.ShowCaptcha)
5860
// 发送短信验证码
5961
authGroup.POST("/verify-codes/phone", middlewares.LimitPerRoute("20-H"), vcc.SendUsingPhone)
6062
// 发送邮箱验证码
6163
authGroup.POST("/verify-codes/email", middlewares.LimitPerRoute("20-H"), vcc.SendUsingEmail)
6264

63-
lgc := new(auth.LoginController)
65+
lgc := authControllers.LoginController
6466
// 使用手机号,短信验证码进行登录
6567
authGroup.POST("/login/using-phone", middlewares.GuestJWT(), middlewares.LimitPerRoute("60-H"), lgc.LoginByPhone)
6668
// 支持手机号,Email 和 用户名
@@ -69,7 +71,7 @@ func RegisterAPIRoutes(r *gin.Engine) {
6971
authGroup.POST("/login/refresh-token", middlewares.AuthJWT(), lgc.RefreshToken)
7072

7173
// 重置密码
72-
pwc := new(auth.PasswordController)
74+
pwc := authControllers.PasswordController
7375
authGroup.POST("/password-reset/using-phone", middlewares.LimitPerRoute("60-H"), middlewares.GuestJWT(), pwc.ResetByPhone)
7476
authGroup.POST("/password-reset/using-email", middlewares.LimitPerRoute("60-H"), middlewares.GuestJWT(), pwc.ResetByEmail)
7577
}

0 commit comments

Comments
 (0)