├── .gitignore ├── README.md ├── cmd ├── main.go ├── wire.go └── wire_gen.go ├── config └── config.yml ├── go.mod └── src ├── app.go └── controller ├── index_controller.go └── wireSet.go /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | go.sum 3 | /log -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # web-marisa 2 | 🍄 白丝魔理沙网页版 3 | 4 | ### Status 5 | 🤍 stop beating 6 | 7 | ### Branches 8 | - 0.0.1(in use) 9 | - iris(no longer use) 10 | - gin(no longer use) 11 | 12 | ### Frontend 13 | please checkout iris branch, then got it. 14 | 15 | ### Contact me 16 | - E-Mail: 17 | - gutrse3321@live.com 18 | -------------------------------------------------------------------------------- /cmd/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import "flag" 4 | 5 | var configFile = flag.String("f", "config/config.yml", "set config file which viper will loading") 6 | 7 | func main() { 8 | flag.Parsed() 9 | 10 | app, err := CreateApp(*configFile) 11 | if err != nil { 12 | panic(err) 13 | } 14 | 15 | if err := app.Start(); err != nil { 16 | panic(err) 17 | } 18 | 19 | app.AwaitSignal() 20 | } -------------------------------------------------------------------------------- /cmd/wire.go: -------------------------------------------------------------------------------- 1 | //+build wireinject 2 | 3 | package main 4 | 5 | import ( 6 | "github.com/google/wire" 7 | "github.com/gutrse3321/aki/pkg/app" 8 | "github.com/gutrse3321/aki/pkg/config" 9 | "github.com/gutrse3321/aki/pkg/log" 10 | "github.com/gutrse3321/aki/pkg/transports/http" 11 | "github.com/gutrse3321/web-marisa/src" 12 | "github.com/gutrse3321/web-marisa/src/controller" 13 | ) 14 | 15 | /** 16 | * @Author: Tomonori 17 | * @Date: 2021/8/12 18 | * @Title: 19 | * --- --- --- 20 | * @Desc: 21 | */ 22 | var wireSet = wire.NewSet( 23 | log.WireSet, 24 | config.WireSet, 25 | http.WireSet, 26 | src.ProviderSet, 27 | controller.ProviderSet, 28 | ) 29 | 30 | func CreateApp(configPath string) (*app.Application, error) { 31 | panic(wire.Build(wireSet)) 32 | } 33 | -------------------------------------------------------------------------------- /cmd/wire_gen.go: -------------------------------------------------------------------------------- 1 | // Code generated by Wire. DO NOT EDIT. 2 | 3 | //go:generate go run github.com/google/wire/cmd/wire 4 | //+build !wireinject 5 | 6 | package main 7 | 8 | import ( 9 | "github.com/google/wire" 10 | "github.com/gutrse3321/aki/pkg/app" 11 | "github.com/gutrse3321/aki/pkg/config" 12 | "github.com/gutrse3321/aki/pkg/log" 13 | "github.com/gutrse3321/aki/pkg/transports/http" 14 | "github.com/gutrse3321/web-marisa/src" 15 | "github.com/gutrse3321/web-marisa/src/controller" 16 | ) 17 | 18 | // Injectors from wire.go: 19 | 20 | func CreateApp(configPath string) (*app.Application, error) { 21 | viper, err := config.New(configPath) 22 | if err != nil { 23 | return nil, err 24 | } 25 | options, err := log.NewOptions(viper) 26 | if err != nil { 27 | return nil, err 28 | } 29 | logger, err := log.New(options) 30 | if err != nil { 31 | return nil, err 32 | } 33 | appOptions, err := src.NewOptions(viper, logger) 34 | if err != nil { 35 | return nil, err 36 | } 37 | httpOptions, err := http.NewOptions(viper) 38 | if err != nil { 39 | return nil, err 40 | } 41 | indexController := controller.NewIndexController() 42 | initControllers := controller.CreateInitControllersFn(indexController) 43 | engine := http.NewRouter(httpOptions, logger, initControllers) 44 | server, err := http.New(httpOptions, logger, engine) 45 | if err != nil { 46 | return nil, err 47 | } 48 | application, err := src.NewApp(appOptions, logger, server) 49 | if err != nil { 50 | return nil, err 51 | } 52 | return application, nil 53 | } 54 | 55 | // wire.go: 56 | 57 | /** 58 | * @Author: Tomonori 59 | * @Date: 2021/8/12 60 | * @Title: 61 | * --- --- --- 62 | * @Desc: 63 | */ 64 | var wireSet = wire.NewSet(log.WireSet, config.WireSet, http.WireSet, src.ProviderSet, controller.ProviderSet) 65 | -------------------------------------------------------------------------------- /config/config.yml: -------------------------------------------------------------------------------- 1 | app: 2 | name: marisa 3 | ip: 127.0.0.1 4 | port: 3000 5 | mode: debug # release 6 | 7 | database: 8 | user: root 9 | password: 123456 10 | host: 127.0.0.1:3306 11 | db: fuck 12 | maxIdleConns: 10 13 | maxOpenConns: 100 14 | debug: true 15 | 16 | log: 17 | filename: log/marisa.log 18 | maxSize: 500 19 | maxBackups: 3 20 | maxAge: 3 21 | level: "debug" 22 | stdout: false -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/gutrse3321/web-marisa 2 | 3 | go 1.15 4 | 5 | require ( 6 | github.com/gin-gonic/gin v1.9.0 7 | github.com/google/wire v0.5.0 8 | github.com/gutrse3321/aki/pkg v0.0.0-20200619033054-c20e563bfd91 9 | github.com/pkg/errors v0.9.1 10 | github.com/spf13/viper v1.7.0 11 | go.uber.org/zap v1.10.0 12 | google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect 13 | ) 14 | -------------------------------------------------------------------------------- /src/app.go: -------------------------------------------------------------------------------- 1 | package src 2 | 3 | import ( 4 | "github.com/google/wire" 5 | "github.com/gutrse3321/aki/pkg/app" 6 | "github.com/gutrse3321/aki/pkg/transports/http" 7 | "github.com/pkg/errors" 8 | "github.com/spf13/viper" 9 | "go.uber.org/zap" 10 | ) 11 | 12 | /** 13 | * @Author: Tomonori 14 | * @Date: 2021/8/12 15 | * @Title: 16 | * --- --- --- 17 | * @Desc: 18 | */ 19 | 20 | func NewOptions(v *viper.Viper, logger *zap.Logger) (*app.Options, error) { 21 | var err error 22 | 23 | opt := &app.Options{} 24 | if err = v.UnmarshalKey("app", opt); err != nil { 25 | return nil, errors.Wrap(err, "unmarshal app config error") 26 | } 27 | 28 | logger.Info("*** load marisa application config success ***") 29 | return opt, err 30 | } 31 | 32 | func NewApp(opt *app.Options, logger *zap.Logger, httpServer *http.Server) (*app.Application, error) { 33 | application, err := app.New(opt, logger, app.HttpServerOption(httpServer)) 34 | if err != nil { 35 | return nil, errors.Wrap(err, "new application error") 36 | } 37 | 38 | return application, nil 39 | } 40 | 41 | var ProviderSet = wire.NewSet(NewApp, NewOptions) 42 | -------------------------------------------------------------------------------- /src/controller/index_controller.go: -------------------------------------------------------------------------------- 1 | package controller 2 | 3 | import ( 4 | "github.com/gin-gonic/gin" 5 | httpServer "github.com/gutrse3321/aki/pkg/transports/http" 6 | "net/http" 7 | ) 8 | 9 | /** 10 | * @Author: Tomonori 11 | * @Date: 2021/8/12 12 | * @Title: 13 | * --- --- --- 14 | * @Desc: 15 | */ 16 | 17 | type IndexController struct { 18 | } 19 | 20 | func NewIndexController() *IndexController { 21 | return &IndexController{} 22 | } 23 | 24 | func CreateInitControllersFn(index *IndexController) httpServer.InitControllers { 25 | return func(g *gin.RouterGroup) { 26 | g.GET("/", index.Home) 27 | } 28 | } 29 | 30 | func (i *IndexController) Home(ctx *gin.Context) { 31 | ctx.JSON(http.StatusOK, &gin.H{ 32 | "message": "お久しぶりです", 33 | }) 34 | } 35 | -------------------------------------------------------------------------------- /src/controller/wireSet.go: -------------------------------------------------------------------------------- 1 | package controller 2 | 3 | import "github.com/google/wire" 4 | 5 | /** 6 | * @Author: Tomonori 7 | * @Date: 2021/8/12 8 | * @Title: 9 | * --- --- --- 10 | * @Desc: 11 | */ 12 | var ProviderSet = wire.NewSet( 13 | NewIndexController, 14 | CreateInitControllersFn, 15 | ) 16 | --------------------------------------------------------------------------------