From 70b653a88b673b717cd23a7ba565077eb6c29e2e Mon Sep 17 00:00:00 2001 From: Snowykami Date: Thu, 17 Jul 2025 04:01:30 +0800 Subject: [PATCH] :zap: initialize project structure with main, routing, and environment utilities --- Dockerfile | 0 cmd/server/main.go | 3 +++ internal/router/router.go | 15 +++++++++++++ internal/router/v1/user.go | 7 ++++++ internal/router/v1/v1.go | 8 +++++++ pkg/utils/env.go | 46 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 79 insertions(+) create mode 100644 Dockerfile create mode 100644 cmd/server/main.go create mode 100644 internal/router/router.go create mode 100644 internal/router/v1/user.go create mode 100644 internal/router/v1/v1.go create mode 100644 pkg/utils/env.go diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/cmd/server/main.go b/cmd/server/main.go new file mode 100644 index 0000000..38dd16d --- /dev/null +++ b/cmd/server/main.go @@ -0,0 +1,3 @@ +package main + +func main() {} diff --git a/internal/router/router.go b/internal/router/router.go new file mode 100644 index 0000000..9fb7cde --- /dev/null +++ b/internal/router/router.go @@ -0,0 +1,15 @@ +package router + +import ( + "github.com/cloudwego/hertz/pkg/app/server" + v1 "github.com/snowykami/neo-blog/internal/router/v1" + "github.com/snowykami/neo-blog/pkg/utils" +) + +func init() { + h := server.New( + server.WithHostPorts(":"+utils.Getenv("PORT", "8888")), + server.WithMaxRequestBodySize(utils.GetenvAsInt("MAX_REQUEST_BODY_SIZE", 1048576000)), // 1000MiB + ) + v1.RegisterRoutes() +} diff --git a/internal/router/v1/user.go b/internal/router/v1/user.go new file mode 100644 index 0000000..5fd7df9 --- /dev/null +++ b/internal/router/v1/user.go @@ -0,0 +1,7 @@ +package v1 + +import "github.com/cloudwego/hertz/pkg/route" + +func registerUserRoutes(group *route.RouterGroup) { + +} diff --git a/internal/router/v1/v1.go b/internal/router/v1/v1.go new file mode 100644 index 0000000..5533d46 --- /dev/null +++ b/internal/router/v1/v1.go @@ -0,0 +1,8 @@ +package v1 + +import "github.com/cloudwego/hertz/pkg/app/server" + +func RegisterRoutes(h *server.Hertz) { + apiV1Group := h.Group("/api/v1") + registerUserRoutes(apiV1Group) +} diff --git a/pkg/utils/env.go b/pkg/utils/env.go new file mode 100644 index 0000000..dc89866 --- /dev/null +++ b/pkg/utils/env.go @@ -0,0 +1,46 @@ +package utils + +import ( + "github.com/joho/godotenv" + "os" + "strconv" +) + +func init() { + _ = godotenv.Load() +} + +func Getenv(key string, defaultValue ...string) string { + value := os.Getenv(key) + if value == "" && len(defaultValue) > 0 { + return defaultValue[0] + } + return value +} + +func GetenvAsInt(key string, defaultValue ...int) int { + value := os.Getenv(key) + if value == "" && len(defaultValue) > 0 { + return defaultValue[0] + } + intValue, err := strconv.Atoi(value) + if err != nil && len(defaultValue) > 0 { + return defaultValue[0] + } + return intValue +} + +func GetenvAsBool(key string, defaultValue ...bool) bool { + value := os.Getenv(key) + if value == "" && len(defaultValue) > 0 { + return defaultValue[0] + } + boolValue, err := strconv.ParseBool(value) + if err != nil { + if len(defaultValue) > 0 { + return defaultValue[0] + } + return false + } + return boolValue +}