From 023c73405e322d6192a76f60431543cd478a5160 Mon Sep 17 00:00:00 2001 From: warnigo Date: Tue, 21 Oct 2025 22:16:38 +0500 Subject: [PATCH 1/3] feat: added env loader and configurate --- .vscode/settings.json | 22 +++++---- apps/server/.env.example | 13 +++++ apps/server/cmd/app/main.go | 42 +++++++++------- apps/server/config/config.go | 40 +++++++++++++++ apps/server/go.mod | 2 + apps/server/go.sum | 4 ++ apps/server/internal/app/app.go | 7 +++ package.json | 5 +- pnpm-lock.yaml | 87 ++++++++++++++++++++++++++++++++- 9 files changed, 190 insertions(+), 32 deletions(-) create mode 100644 apps/server/.env.example create mode 100644 apps/server/config/config.go create mode 100644 apps/server/internal/app/app.go diff --git a/.vscode/settings.json b/.vscode/settings.json index b6ba457..03ca541 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,10 +1,12 @@ -{ - "prettier.arrowParens": "avoid", - "prettier.endOfLine": "crlf", - - "files.associations": { - "*.css": "tailwindcss", - "*.scss": "tailwindcss" - }, - "files.eol": "\r\n" -} +{ + "prettier.arrowParens": "avoid", + "prettier.endOfLine": "crlf", + + "files.associations": { + "*.css": "tailwindcss", + "*.scss": "tailwindcss" + }, + "files.eol": "\r\n", + "cSpell.words": ["joho"] +} + diff --git a/apps/server/.env.example b/apps/server/.env.example new file mode 100644 index 0000000..7c69629 --- /dev/null +++ b/apps/server/.env.example @@ -0,0 +1,13 @@ +APP_NAME=Fin +APP_VERSION=1.0.0 + +SERVER_PORT=8080 + +LOG_LEVEL=debug # or info, warn, error +LOG_FILE=logfile.log +LOG_PRETTY=true +LOG_CONSOLE=true + +POSTGRES_URL=postgres://username:password@host:port/database +PG_POOL_MAX=2 += diff --git a/apps/server/cmd/app/main.go b/apps/server/cmd/app/main.go index 2abfacb..348264c 100644 --- a/apps/server/cmd/app/main.go +++ b/apps/server/cmd/app/main.go @@ -1,19 +1,23 @@ -package main - -import ( - "net/http" - - "github.com/gin-gonic/gin" -) - -func main() { - println("Hello, Fin server!") - - r := gin.Default() - r.GET("/", func (c *gin.Context) { - c.JSON(http.StatusOK, gin.H{ - "message": "Hello, Fin server!", - }) - }) - r.Run() // listen and serve on -} +package main + +import ( + "log" + + "flakeforge/fin/config" + "flakeforge/fin/internal/app" + + "github.com/joho/godotenv" +) + +func main() { + if err := godotenv.Load(); err != nil{ + log.Printf("Warning: .env file not found: %v", err) + } + + config, err := config.New() + if err != nil { + log.Printf("Warning: .env file not found: %v", err) + } + + app.Run(config) +} diff --git a/apps/server/config/config.go b/apps/server/config/config.go new file mode 100644 index 0000000..f55a098 --- /dev/null +++ b/apps/server/config/config.go @@ -0,0 +1,40 @@ +package config + +import ( + "fmt" + + "github.com/caarlos0/env/v11" +) + +type ( + Config struct { + App App + Logger Logger + Postgres Postgres + } + + App struct { + Name string `env:"APP_NAME" envDefault:"fin"` + Version string `env:"APP_VERSION" envDefault:"1.0.0"` + Port string `env:"SERVER_PORT" envDefault:"8080"` + } + Logger struct { + Level string `env:"LOG_LEVEL" envDefault:"info"` + LogFile string `env:"LOG_FILE" envDefault:"logs/app.log"` + Pretty bool `env:"LOG_PRETTY" envDefault:"true"` + Console bool `env:"LOG_CONSOLE" envDefault:"true"` + } + Postgres struct { + URL string `env:"POSTGRES_URL,required"` + PoolMax int `env:"PG_POOL_MAX" envDefault:"10"` + } +) + +func New() (*Config, error) { + config := &Config{} + if err := env.Parse(config); err != nil { + return nil, fmt.Errorf("failed to parse config: %w", err) + } + + return config, nil +} diff --git a/apps/server/go.mod b/apps/server/go.mod index 80cc74d..c774faa 100644 --- a/apps/server/go.mod +++ b/apps/server/go.mod @@ -7,6 +7,7 @@ require github.com/gin-gonic/gin v1.10.1 require ( github.com/bytedance/sonic v1.14.0 // indirect github.com/bytedance/sonic/loader v0.3.0 // indirect + github.com/caarlos0/env/v11 v11.3.1 // indirect github.com/cloudwego/base64x v0.1.6 // indirect github.com/gabriel-vasile/mimetype v1.4.9 // indirect github.com/gin-contrib/sse v1.1.0 // indirect @@ -14,6 +15,7 @@ require ( github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.27.0 // indirect github.com/goccy/go-json v0.10.5 // indirect + github.com/joho/godotenv v1.5.1 github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect diff --git a/apps/server/go.sum b/apps/server/go.sum index 3625fd3..75eff5c 100644 --- a/apps/server/go.sum +++ b/apps/server/go.sum @@ -2,6 +2,8 @@ github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQ github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA= github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA= github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= +github.com/caarlos0/env/v11 v11.3.1 h1:cArPWC15hWmEt+gWk7YBi7lEXTXCvpaSdCiZE2X5mCA= +github.com/caarlos0/env/v11 v11.3.1/go.mod h1:qupehSf/Y0TUTsxKywqRt/vJjN5nz6vauiYEUUr8P4U= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -26,6 +28,8 @@ github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PU github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= diff --git a/apps/server/internal/app/app.go b/apps/server/internal/app/app.go new file mode 100644 index 0000000..068a574 --- /dev/null +++ b/apps/server/internal/app/app.go @@ -0,0 +1,7 @@ +package app + +import "flakeforge/fin/config" + +func Run(cfg *config.Config) { + +} diff --git a/package.json b/package.json index f6f899b..17e8082 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "scripts": { "postinstall": "moon :installDeps" }, - "dependencies": {}, - "devDependencies": {} + "devDependencies": { + "@moonrepo/cli": "^1.41.5" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b38c64..d181a43 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,11 @@ settings: importers: - .: {} + .: + devDependencies: + '@moonrepo/cli': + specifier: ^1.41.5 + version: 1.41.5 apps/client: dependencies: @@ -208,6 +212,45 @@ packages: '@jridgewell/trace-mapping@0.3.30': resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} + '@moonrepo/cli@1.41.5': + resolution: {integrity: sha512-ZlT3qqoftCviFjMpiBviQUz/Tje4WsslmRRHC1yRcYjmJnuH2X8FnmdPn2wI4OLNRZ5suSTUEAyiOBDLc5qJLA==} + hasBin: true + + '@moonrepo/core-linux-arm64-gnu@1.41.5': + resolution: {integrity: sha512-dTf1F3ZucSBwYwtSl6VXRYUZfp7PD3BncU6xz38cq0p55yLpm0E+l8F1mJV6F0lyEj9DjidikfRhR8u9Gqz95w==} + cpu: [arm64] + os: [linux] + + '@moonrepo/core-linux-arm64-musl@1.41.5': + resolution: {integrity: sha512-yifj/1fRy+gKYwI5D/N0vZL8nuuUSZYqPsMMbwmCdwaBE+QwUvmanXYGCx5lxeVvPCkogCN5Y5X0uwXa0TYsHQ==} + cpu: [arm64] + os: [linux] + + '@moonrepo/core-linux-x64-gnu@1.41.5': + resolution: {integrity: sha512-ttEeTf2a1ImjzhQWQ8JG+lgg9iuIMu681RoYnoRF8TXKVpywvuaDEFM7beWQyvMEn1hNTbJ82yeJCmb2fsq2ig==} + cpu: [x64] + os: [linux] + + '@moonrepo/core-linux-x64-musl@1.41.5': + resolution: {integrity: sha512-qxiICL+UQim9+SIQh9jV/BX33HIT6ozxU97HhMxNtn3LbeUDNIHDAv3Wzzss7DSVCNdsFSO31OjgX8YY1Y//Bw==} + cpu: [x64] + os: [linux] + + '@moonrepo/core-macos-arm64@1.41.5': + resolution: {integrity: sha512-q5qIVbO52cIZ0bak1xoop6dYj0xF7cgcvys/LrmbMLwyPwcucj09F1TmTAkpQtl/AXGjACIoVbWoDrFwxKHf7Q==} + cpu: [arm64] + os: [darwin] + + '@moonrepo/core-macos-x64@1.41.5': + resolution: {integrity: sha512-0C+Pth0IbMwesDpn78O0Ur1VG+KESHuB2QHlSK4zNh3dfTN5fdPhgdLCk50ASCM1Wh4aA8gx5ayHKeilDWv9uQ==} + cpu: [x64] + os: [darwin] + + '@moonrepo/core-windows-x64-msvc@1.41.5': + resolution: {integrity: sha512-QxKbCPv3Jx9u3n6M5OXdqP3HL3m8gU7HB5IejHTtbgJtanxuG180SmAy51peAx/tq/JsWn1kWm9UvsC68YQfYA==} + cpu: [x64] + os: [win32] + '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -314,6 +357,7 @@ packages: '@telegram-apps/bridge@1.9.2': resolution: {integrity: sha512-SJLcNWLXhbbZr9MiqFH/g2ceuitSJKMxUIZysK4zUNyTUNuonrQG80Q/yrO+XiNbKUj8WdDNM86NBARhuyyinQ==} + deprecated: This package is not supported anymore. Use @tma.js/bridge instead '@telegram-apps/navigation@1.0.14': resolution: {integrity: sha512-bqNgF/J8Po7ZtsELm3E1a6aPr7awwxO3sIqD8J6u12urOlGoW5+1KxKKbkPa58mgXuQdsltd8apI+OVy0IYiUA==} @@ -338,9 +382,11 @@ packages: '@telegram-apps/transformers@1.2.2': resolution: {integrity: sha512-vvMwXckd1D7Ozc0h66PSUwF5QLrRV9HlGJFFeBuUex8QEk5mSPtsJkLiqB8aBbwuFDa91+TUSM/CxqPZO/e9YQ==} + deprecated: This package is not supported anymore. Use @tma.js/transfomers instead '@telegram-apps/types@1.2.1': resolution: {integrity: sha512-so4HLh7clur0YyMthi9KVIgWoGpZdXlFOuQjk3+Q5NAvJZ11nAheBSwPlGw/Ko92+zwvrSBE/lQyN2+p17RP+w==} + deprecated: This package is not supported anymore. Use @tma.js/types instead '@tybys/wasm-util@0.10.0': resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} @@ -774,6 +820,10 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -2117,6 +2167,39 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@moonrepo/cli@1.41.5': + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + '@moonrepo/core-linux-arm64-gnu': 1.41.5 + '@moonrepo/core-linux-arm64-musl': 1.41.5 + '@moonrepo/core-linux-x64-gnu': 1.41.5 + '@moonrepo/core-linux-x64-musl': 1.41.5 + '@moonrepo/core-macos-arm64': 1.41.5 + '@moonrepo/core-macos-x64': 1.41.5 + '@moonrepo/core-windows-x64-msvc': 1.41.5 + + '@moonrepo/core-linux-arm64-gnu@1.41.5': + optional: true + + '@moonrepo/core-linux-arm64-musl@1.41.5': + optional: true + + '@moonrepo/core-linux-x64-gnu@1.41.5': + optional: true + + '@moonrepo/core-linux-x64-musl@1.41.5': + optional: true + + '@moonrepo/core-macos-arm64@1.41.5': + optional: true + + '@moonrepo/core-macos-x64@1.41.5': + optional: true + + '@moonrepo/core-windows-x64-msvc@1.41.5': + optional: true + '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.4.5 @@ -2680,6 +2763,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + detect-libc@2.1.2: {} + didyoumean@1.2.2: {} dlv@1.1.3: {} From 67c687c908f3b6420d1bcb6a78e0ad8f07453428 Mon Sep 17 00:00:00 2001 From: warnigo Date: Tue, 21 Oct 2025 22:22:25 +0500 Subject: [PATCH 2/3] feat(server): add loggers and initial --- apps/server/go.mod | 3 + apps/server/go.sum | 12 ++++ apps/server/internal/app/app.go | 7 ++- apps/server/pkg/logger/logger.go | 98 ++++++++++++++++++++++++++++++++ 4 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 apps/server/pkg/logger/logger.go diff --git a/apps/server/go.mod b/apps/server/go.mod index c774faa..ceefc15 100644 --- a/apps/server/go.mod +++ b/apps/server/go.mod @@ -4,6 +4,8 @@ go 1.23.5 require github.com/gin-gonic/gin v1.10.1 +require github.com/mattn/go-colorable v0.1.13 // indirect + require ( github.com/bytedance/sonic v1.14.0 // indirect github.com/bytedance/sonic/loader v0.3.0 // indirect @@ -23,6 +25,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/rs/zerolog v1.34.0 github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.3.0 // indirect golang.org/x/arch v0.20.0 // indirect diff --git a/apps/server/go.sum b/apps/server/go.sum index 75eff5c..4b144d5 100644 --- a/apps/server/go.sum +++ b/apps/server/go.sum @@ -6,6 +6,7 @@ github.com/caarlos0/env/v11 v11.3.1 h1:cArPWC15hWmEt+gWk7YBi7lEXTXCvpaSdCiZE2X5m github.com/caarlos0/env/v11 v11.3.1/go.mod h1:qupehSf/Y0TUTsxKywqRt/vJjN5nz6vauiYEUUr8P4U= github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -25,6 +26,7 @@ github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHO github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -36,6 +38,10 @@ github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzh github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -45,8 +51,12 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -66,7 +76,9 @@ golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= diff --git a/apps/server/internal/app/app.go b/apps/server/internal/app/app.go index 068a574..578f411 100644 --- a/apps/server/internal/app/app.go +++ b/apps/server/internal/app/app.go @@ -1,7 +1,10 @@ package app -import "flakeforge/fin/config" +import ( + "flakeforge/fin/config" + "flakeforge/fin/pkg/logger" +) func Run(cfg *config.Config) { - + l := logger.New(cfg.Logger.Level) } diff --git a/apps/server/pkg/logger/logger.go b/apps/server/pkg/logger/logger.go new file mode 100644 index 0000000..15ea9ed --- /dev/null +++ b/apps/server/pkg/logger/logger.go @@ -0,0 +1,98 @@ +package logger + +import ( + "fmt" + "os" + "strings" + + "github.com/rs/zerolog" +) + +type Interface interface { + Debug(message interface{}, args ...interface{}) + Info(message string, args ...interface{}) + Warn(message string, args ...interface{}) + Error(message interface{}, args ...interface{}) + Fatal(message interface{}, args ...interface{}) +} + +type Logger struct { + logger *zerolog.Logger +} + +var _ Interface = (*Logger)(nil) + +func New(level string) *Logger { + var l zerolog.Level + + switch strings.ToLower(level) { + case "error": + l = zerolog.ErrorLevel + case "warn": + l = zerolog.WarnLevel + case "info": + l = zerolog.InfoLevel + case "debug": + l = zerolog.DebugLevel + default: + l = zerolog.InfoLevel + } + + zerolog.SetGlobalLevel(l) + + skipFrameCount := 3 + + logger := zerolog.New(os.Stdout). + With(). + Timestamp(). + CallerWithSkipFrameCount(zerolog.CallerSkipFrameCount + skipFrameCount). + Logger() + + return &Logger{ + logger: &logger, + } +} + +func (l *Logger) Debug(message interface{}, args ...interface{}) { + l.msg("debug", message, args...) +} + +func (l *Logger) Info(message string, args ...interface{}) { + l.log(message, args...) +} + +func (l *Logger) Warn(message string, args ...interface{}) { + l.log(message, args...) +} + +func (l *Logger) Error(message interface{}, args ...interface{}) { + if l.logger.GetLevel() == zerolog.DebugLevel { + l.Debug(message, args...) + } + + l.msg("error", message, args...) +} + +func (l *Logger) Fatal(message interface{}, args ...interface{}) { + l.msg("fatal", message, args...) + os.Exit(1) +} + +func (l *Logger) log(message string, args ...interface{}) { + if len(args) == 0 { + l.logger.Info().Msg(message) + } else { + l.logger.Info().Msgf(message, args...) + } +} + +func (l *Logger) msg(level string, message interface{}, args ...interface{}) { + switch msg := message.(type) { + case error: + l.log(msg.Error(), args...) + case string: + l.log(msg, args...) + default: + l.log(fmt.Sprintf("%s message %v has unknown type %T", level, message, msg), args...) + } +} From 291813262dda10d82e5985af7cc5c9c0c8e08602 Mon Sep 17 00:00:00 2001 From: warnigo Date: Tue, 21 Oct 2025 22:28:58 +0500 Subject: [PATCH 3/3] fix: remove excess package and some configurate packages --- package.json | 24 ++++++++------- pnpm-lock.yaml | 84 +------------------------------------------------- 2 files changed, 14 insertions(+), 94 deletions(-) diff --git a/package.json b/package.json index 17e8082..2e9a899 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,13 @@ -{ - "name": "fin", - "version": "1.0.0", - "private": false, - "scripts": { - "postinstall": "moon :installDeps" - }, - "devDependencies": { - "@moonrepo/cli": "^1.41.5" - } -} +{ + "name": "fin", + "version": "1.0.0", + "private": false, + "author": { + "name": "FlakeForge team", + "email": "team@flakeforge.com", + "url": "https://.flakeforge.uz" + }, + "scripts": { + "postinstall": "moon :installDeps" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d181a43..cfb788a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,11 +6,7 @@ settings: importers: - .: - devDependencies: - '@moonrepo/cli': - specifier: ^1.41.5 - version: 1.41.5 + .: {} apps/client: dependencies: @@ -212,45 +208,6 @@ packages: '@jridgewell/trace-mapping@0.3.30': resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} - '@moonrepo/cli@1.41.5': - resolution: {integrity: sha512-ZlT3qqoftCviFjMpiBviQUz/Tje4WsslmRRHC1yRcYjmJnuH2X8FnmdPn2wI4OLNRZ5suSTUEAyiOBDLc5qJLA==} - hasBin: true - - '@moonrepo/core-linux-arm64-gnu@1.41.5': - resolution: {integrity: sha512-dTf1F3ZucSBwYwtSl6VXRYUZfp7PD3BncU6xz38cq0p55yLpm0E+l8F1mJV6F0lyEj9DjidikfRhR8u9Gqz95w==} - cpu: [arm64] - os: [linux] - - '@moonrepo/core-linux-arm64-musl@1.41.5': - resolution: {integrity: sha512-yifj/1fRy+gKYwI5D/N0vZL8nuuUSZYqPsMMbwmCdwaBE+QwUvmanXYGCx5lxeVvPCkogCN5Y5X0uwXa0TYsHQ==} - cpu: [arm64] - os: [linux] - - '@moonrepo/core-linux-x64-gnu@1.41.5': - resolution: {integrity: sha512-ttEeTf2a1ImjzhQWQ8JG+lgg9iuIMu681RoYnoRF8TXKVpywvuaDEFM7beWQyvMEn1hNTbJ82yeJCmb2fsq2ig==} - cpu: [x64] - os: [linux] - - '@moonrepo/core-linux-x64-musl@1.41.5': - resolution: {integrity: sha512-qxiICL+UQim9+SIQh9jV/BX33HIT6ozxU97HhMxNtn3LbeUDNIHDAv3Wzzss7DSVCNdsFSO31OjgX8YY1Y//Bw==} - cpu: [x64] - os: [linux] - - '@moonrepo/core-macos-arm64@1.41.5': - resolution: {integrity: sha512-q5qIVbO52cIZ0bak1xoop6dYj0xF7cgcvys/LrmbMLwyPwcucj09F1TmTAkpQtl/AXGjACIoVbWoDrFwxKHf7Q==} - cpu: [arm64] - os: [darwin] - - '@moonrepo/core-macos-x64@1.41.5': - resolution: {integrity: sha512-0C+Pth0IbMwesDpn78O0Ur1VG+KESHuB2QHlSK4zNh3dfTN5fdPhgdLCk50ASCM1Wh4aA8gx5ayHKeilDWv9uQ==} - cpu: [x64] - os: [darwin] - - '@moonrepo/core-windows-x64-msvc@1.41.5': - resolution: {integrity: sha512-QxKbCPv3Jx9u3n6M5OXdqP3HL3m8gU7HB5IejHTtbgJtanxuG180SmAy51peAx/tq/JsWn1kWm9UvsC68YQfYA==} - cpu: [x64] - os: [win32] - '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -820,10 +777,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} - didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -2167,39 +2120,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@moonrepo/cli@1.41.5': - dependencies: - detect-libc: 2.1.2 - optionalDependencies: - '@moonrepo/core-linux-arm64-gnu': 1.41.5 - '@moonrepo/core-linux-arm64-musl': 1.41.5 - '@moonrepo/core-linux-x64-gnu': 1.41.5 - '@moonrepo/core-linux-x64-musl': 1.41.5 - '@moonrepo/core-macos-arm64': 1.41.5 - '@moonrepo/core-macos-x64': 1.41.5 - '@moonrepo/core-windows-x64-msvc': 1.41.5 - - '@moonrepo/core-linux-arm64-gnu@1.41.5': - optional: true - - '@moonrepo/core-linux-arm64-musl@1.41.5': - optional: true - - '@moonrepo/core-linux-x64-gnu@1.41.5': - optional: true - - '@moonrepo/core-linux-x64-musl@1.41.5': - optional: true - - '@moonrepo/core-macos-arm64@1.41.5': - optional: true - - '@moonrepo/core-macos-x64@1.41.5': - optional: true - - '@moonrepo/core-windows-x64-msvc@1.41.5': - optional: true - '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.4.5 @@ -2763,8 +2683,6 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - detect-libc@2.1.2: {} - didyoumean@1.2.2: {} dlv@1.1.3: {}