From 3a9a1a6eebd4daa9c5bc5ed6e4e6437e6d2d6dfb Mon Sep 17 00:00:00 2001 From: yanghao05 Date: Sat, 6 May 2023 11:26:21 +0800 Subject: [PATCH] add default provider --- container/container.go | 4 ++++ defautl_http.go | 14 ++++++++++++++ providers/captcha/config.go | 12 ++++++++++++ providers/database/mysql/config.go | 12 ++++++++++++ providers/database/postgres/config.go | 12 ++++++++++++ providers/database/sqlite/config.go | 14 ++++++++++++++ providers/faker/faker.go | 7 +++++++ providers/http/gin/engine.go | 9 +++++++++ providers/jwt/config.go | 12 ++++++++++++ providers/log/config.go | 14 ++++++++++++++ providers/single_flight/flight.go | 7 +++++++ providers/uuid/uuid.go | 7 +++++++ 12 files changed, 124 insertions(+) create mode 100644 defautl_http.go diff --git a/container/container.go b/container/container.go index 5b15dce..9d407b3 100644 --- a/container/container.go +++ b/container/container.go @@ -29,6 +29,10 @@ type ProviderContainer struct { type Providers []ProviderContainer +func (p Providers) With(pcs Providers) Providers { + return append(p, pcs...) +} + func (p Providers) Provide(config *viper.Viper) error { for _, provider := range p { provider.Options = append(provider.Options, opt.Config(config)) diff --git a/defautl_http.go b/defautl_http.go new file mode 100644 index 0000000..8f58d34 --- /dev/null +++ b/defautl_http.go @@ -0,0 +1,14 @@ +package atom + +import ( + "github.com/rogeecn/atom/container" + "github.com/rogeecn/atom/providers/http/gin" + "github.com/rogeecn/atom/providers/log" +) + +func DefaultHTTP(providers ...container.ProviderContainer) container.Providers { + return append(container.Providers{ + log.DefaultProvider(), + gin.DefaultProvider(), + }, providers...) +} diff --git a/providers/captcha/config.go b/providers/captcha/config.go index 4349f69..362ea65 100644 --- a/providers/captcha/config.go +++ b/providers/captcha/config.go @@ -3,10 +3,22 @@ package captcha import ( "log" "time" + + "github.com/rogeecn/atom/container" + "github.com/rogeecn/atom/utils/opt" ) const DefaultPrefix = "Captcha" +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{ + opt.Prefix(DefaultPrefix), + }, + } +} + type Config struct { Long uint // 验证码长度 Width uint // 验证码宽度 diff --git a/providers/database/mysql/config.go b/providers/database/mysql/config.go index 6b25139..344ae6f 100755 --- a/providers/database/mysql/config.go +++ b/providers/database/mysql/config.go @@ -2,10 +2,22 @@ package mysql import ( "fmt" + + "github.com/rogeecn/atom/container" + "github.com/rogeecn/atom/utils/opt" ) const DefaultPrefix = "MySQL" +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{ + opt.Prefix(DefaultPrefix), + }, + } +} + // MySQL database config type Config struct { Host string diff --git a/providers/database/postgres/config.go b/providers/database/postgres/config.go index 2d12c32..10c2575 100755 --- a/providers/database/postgres/config.go +++ b/providers/database/postgres/config.go @@ -2,10 +2,22 @@ package postgres import ( "fmt" + + "github.com/rogeecn/atom/container" + "github.com/rogeecn/atom/utils/opt" ) const DefaultPrefix = "Postgres" +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{ + opt.Prefix(DefaultPrefix), + }, + } +} + type Config struct { Username string Password string diff --git a/providers/database/sqlite/config.go b/providers/database/sqlite/config.go index 488836e..d138827 100755 --- a/providers/database/sqlite/config.go +++ b/providers/database/sqlite/config.go @@ -1,7 +1,21 @@ package sqlite +import ( + "github.com/rogeecn/atom/container" + "github.com/rogeecn/atom/utils/opt" +) + const DefaultPrefix = "SQLite" +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{ + opt.Prefix(DefaultPrefix), + }, + } +} + type Config struct { File string } diff --git a/providers/faker/faker.go b/providers/faker/faker.go index 1cf932d..50f784d 100644 --- a/providers/faker/faker.go +++ b/providers/faker/faker.go @@ -9,6 +9,13 @@ import ( "github.com/brianvoe/gofakeit/v6" ) +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{}, + } +} + func Provide(opts ...opt.Option) error { o := opt.New(opts...) return container.Container.Provide(func() (*gofakeit.Faker, error) { diff --git a/providers/http/gin/engine.go b/providers/http/gin/engine.go index 2954297..c19e89b 100644 --- a/providers/http/gin/engine.go +++ b/providers/http/gin/engine.go @@ -12,6 +12,15 @@ import ( "github.com/gin-gonic/gin" ) +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{ + opt.Prefix(http.DefaultPrefix), + }, + } +} + type Service struct { conf *http.Config Engine *gin.Engine diff --git a/providers/jwt/config.go b/providers/jwt/config.go index 84ff4de..a552047 100644 --- a/providers/jwt/config.go +++ b/providers/jwt/config.go @@ -3,11 +3,23 @@ package jwt import ( "time" + "github.com/rogeecn/atom/container" + "github.com/rogeecn/atom/providers/http" "github.com/rogeecn/atom/providers/log" + "github.com/rogeecn/atom/utils/opt" ) const DefaultPrefix = "JWT" +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{ + opt.Prefix(http.DefaultPrefix), + }, + } +} + type Config struct { SigningKey string // jwt签名 ExpiresTime string // 过期时间 diff --git a/providers/log/config.go b/providers/log/config.go index 642fff0..24e524e 100644 --- a/providers/log/config.go +++ b/providers/log/config.go @@ -1,7 +1,21 @@ package log +import ( + "github.com/rogeecn/atom/container" + "github.com/rogeecn/atom/utils/opt" +) + const DefaultPrefix = "Log" +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{ + opt.Prefix(DefaultPrefix), + }, + } +} + type Config struct { Level Level } diff --git a/providers/single_flight/flight.go b/providers/single_flight/flight.go index 8e9ec64..851bc58 100644 --- a/providers/single_flight/flight.go +++ b/providers/single_flight/flight.go @@ -6,6 +6,13 @@ import ( "golang.org/x/sync/singleflight" ) +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{}, + } +} + func Provide(opts ...opt.Option) error { o := opt.New(opts...) return container.Container.Provide(func() (*singleflight.Group, error) { diff --git a/providers/uuid/uuid.go b/providers/uuid/uuid.go index 5985317..310aa1f 100644 --- a/providers/uuid/uuid.go +++ b/providers/uuid/uuid.go @@ -7,6 +7,13 @@ import ( "github.com/gofrs/uuid" ) +func DefaultProvider() container.ProviderContainer { + return container.ProviderContainer{ + Provider: Provide, + Options: []opt.Option{}, + } +} + type Generator struct { generator uuid.Generator }