diff --git a/cmd/shoppingbasketapp/command/migrate.go b/cmd/shoppingbasketapp/command/migrate.go new file mode 100644 index 00000000..d47dcf0d --- /dev/null +++ b/cmd/shoppingbasketapp/command/migrate.go @@ -0,0 +1 @@ +package command diff --git a/cmd/shoppingbasketapp/command/root.go b/cmd/shoppingbasketapp/command/root.go new file mode 100644 index 00000000..d47dcf0d --- /dev/null +++ b/cmd/shoppingbasketapp/command/root.go @@ -0,0 +1 @@ +package command diff --git a/cmd/shoppingbasketapp/command/serve.go b/cmd/shoppingbasketapp/command/serve.go new file mode 100644 index 00000000..d47dcf0d --- /dev/null +++ b/cmd/shoppingbasketapp/command/serve.go @@ -0,0 +1 @@ +package command diff --git a/cmd/shoppingbasketapp/main.go b/cmd/shoppingbasketapp/main.go new file mode 100644 index 00000000..db04842d --- /dev/null +++ b/cmd/shoppingbasketapp/main.go @@ -0,0 +1,44 @@ +package main + +import ( + "fmt" + "git.gocasts.ir/ebhomengo/niki/adapter/redis" + "git.gocasts.ir/ebhomengo/niki/logger" + "git.gocasts.ir/ebhomengo/niki/pkg/httpserver" + "git.gocasts.ir/ebhomengo/niki/shoppingbasketapp" + "git.gocasts.ir/ebhomengo/niki/shoppingbasketapp/repository" + "time" +) + +func main() { + cfg := shoppingbasketapp.Config{ + Redis: redis.Config{ + Host: "localhost", + Port: 6379, + Password: "", + DB: 0, + }, + Repo: repository.Config{ + KartKeyPrefix: "shopping-basket-cart:", + TTL: 3600 * time.Second, + }, + HTTPServer: httpserver.Config{ + Host: "localhost", + Port: 8080, + ShutdownTimeout: 10 * time.Second, + }, + Logger: logger.Config{ + FilePath: "logs/shoppingbasket/service.log", + UseLocalTime: true, + FileMaxSizeInMB: 10, + FileMaxAgeInDays: 30, + }, + } + + app, err := shoppingbasketapp.Setup(cfg) + if err != nil { + panic(fmt.Sprintf("error initialize to setup app: %s", err.Error())) + } + + app.Start() +} diff --git a/deploy/shoppingbasket/development/.env.example b/deploy/shoppingbasket/development/.env.example new file mode 100644 index 00000000..e69de29b diff --git a/deploy/shoppingbasket/development/Dockerfile b/deploy/shoppingbasket/development/Dockerfile new file mode 100644 index 00000000..e69de29b diff --git a/deploy/shoppingbasket/development/config.yml b/deploy/shoppingbasket/development/config.yml new file mode 100644 index 00000000..9930ad41 --- /dev/null +++ b/deploy/shoppingbasket/development/config.yml @@ -0,0 +1,20 @@ +redis: + host: "localhost" + port: 6379 + password: "" + db: 0 + +repo: + kart_key_prefix: "shopping-basket-cart:" + ttl: 3600s + +http_server: + host: "localhost" + port: 8080 + shutdown_context_timeout: 10s + +logger: + file_path: "logs/shoppingbasket/service.log" + use_local_time: true + file_max_size_in_mb: 10 + file_max_age_in_days: 30 diff --git a/deploy/shoppingbasket/development/docker-compose.yml b/deploy/shoppingbasket/development/docker-compose.yml new file mode 100644 index 00000000..e69de29b diff --git a/logger/logger.go b/logger/logger.go index cded39e4..13108622 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -16,10 +16,10 @@ const ( ) type Config struct { - FilePath string - UseLocalTime bool - FileMaxSizeInMB int - FileMaxAgeInDays int + FilePath string `koanf:"file_path"` + UseLocalTime bool `koanf:"use_local_time"` + FileMaxSizeInMB int `koanf:"file_max_size_in_mb"` + FileMaxAgeInDays int `koanf:"file_max_age_in_days"` } var l *slog.Logger diff --git a/shoppingbasketapp/app.go b/shoppingbasketapp/app.go index 0f0258e8..734b127c 100644 --- a/shoppingbasketapp/app.go +++ b/shoppingbasketapp/app.go @@ -25,7 +25,7 @@ type Application struct { Logger *slog.Logger } -func (app Application) Setup(cfg Config) (Application, error) { +func Setup(cfg Config) (Application, error) { l := logger.New(cfg.Logger, &slog.HandlerOptions{ Level: slog.LevelDebug, })