From e09afba1ec894f8eb1a4381d289fae4d35f1b61a Mon Sep 17 00:00:00 2001 From: jibaru Date: Fri, 2 Feb 2024 19:53:50 -0500 Subject: [PATCH 1/8] chore: update dependencies --- go.mod | 5 ++--- go.sum | 10 ++++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 3ee4181..2ba1e5f 100644 --- a/go.mod +++ b/go.mod @@ -4,10 +4,12 @@ go 1.21.3 require ( github.com/DATA-DOG/go-sqlmock v1.5.2 + github.com/aws/aws-sdk-go v1.50.0 github.com/golang-jwt/jwt/v5 v5.2.0 github.com/google/uuid v1.5.0 github.com/labstack/echo/v4 v4.11.4 github.com/labstack/gommon v0.4.2 + github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.18.2 github.com/stretchr/testify v1.8.4 golang.org/x/crypto v0.17.0 @@ -16,11 +18,9 @@ require ( ) require ( - github.com/aws/aws-sdk-go v1.50.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-sql-driver/mysql v1.7.1 // indirect - github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect @@ -47,7 +47,6 @@ require ( golang.org/x/net v0.19.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.5.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 6c68c61..898a2de 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,6 @@ github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyT github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v5 v5.2.0 h1:d/ix8ftRUorsN+5eMIlF4T6J8CAt9rch3My2winC1Jw= github.com/golang-jwt/jwt/v5 v5.2.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= @@ -29,6 +27,7 @@ github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -59,6 +58,8 @@ github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6ke github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= @@ -74,6 +75,7 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= @@ -94,19 +96,19 @@ golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjs golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= From 388508cbf0fd9b3e6e78e305dde48a35e64a27ec Mon Sep 17 00:00:00 2001 From: jibaru Date: Fri, 2 Feb 2024 19:54:13 -0500 Subject: [PATCH 2/8] chore: update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a3f9346..e6fb794 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ app.env db_data/ +logs/*.log From 2e856490319f44e454e30225fb1872689020ea47 Mon Sep 17 00:00:00 2001 From: jibaru Date: Fri, 2 Feb 2024 19:54:26 -0500 Subject: [PATCH 3/8] chore: add logs folder --- logs/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 logs/.gitkeep diff --git a/logs/.gitkeep b/logs/.gitkeep new file mode 100644 index 0000000..e69de29 From 21858ff679ca735008128db8f7b963db83fdde8d Mon Sep 17 00:00:00 2001 From: jibaru Date: Fri, 2 Feb 2024 19:54:46 -0500 Subject: [PATCH 4/8] feat: add app logger --- logger/logger.go | 105 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 logger/logger.go diff --git a/logger/logger.go b/logger/logger.go new file mode 100644 index 0000000..b5a2548 --- /dev/null +++ b/logger/logger.go @@ -0,0 +1,105 @@ +package logger + +import ( + "github.com/sirupsen/logrus" + "io" + "os" + "time" +) + +type AppLogger struct { + l *logrus.Logger +} + +var appLogger *AppLogger + +func init() { + appLogger = NewAppLogger() +} + +func NewAppLogger() *AppLogger { + file, err := os.OpenFile("logs/app.log", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666) + if err != nil { + panic(err) + } + + logger := logrus.New() + logger.SetFormatter(&logrus.JSONFormatter{ + TimestampFormat: "2006-01-02T15:04:05.999999999Z07:00", + }) + logger.SetOutput(io.MultiWriter(file, os.Stdout)) + logger.SetLevel(logrus.TraceLevel) + + return &AppLogger{logger} +} + +func LogRequest( + method string, + path string, +) { + appLogger.l.WithFields(logrus.Fields{ + "context": "http", + "method": method, + "path": path, + }).Info("request") +} + +func LogDBTransactionTrace( + msg string, + rows int64, + elapsed time.Duration, + data interface{}, +) { + appLogger.l.WithFields(logrus.Fields{ + "context": "db", + "rows": rows, + "elapsed": elapsed, + "data": data, + }).Trace(msg) +} + +func LogDBTransactionError( + msg string, + data interface{}, +) { + appLogger.l.WithFields(logrus.Fields{ + "context": "db", + "data": data, + }).Error(msg) +} + +func LogDBTransactionWarn( + msg string, + data interface{}, +) { + appLogger.l.WithFields(logrus.Fields{ + "context": "db", + "data": data, + }).Warn(msg) +} + +func LogDBTransactionInfo( + msg string, + data interface{}, +) { + appLogger.l.WithFields(logrus.Fields{ + "context": "db", + "data": data, + }).Info(msg) +} + +func LogInfo( + msg string, +) { + appLogger.l.WithFields(logrus.Fields{ + "context": "app", + }).Info(msg) +} + +func LogError( + err error, +) { + appLogger.l.WithFields(logrus.Fields{ + "context": "app", + }).Error(err) +} From 73f6f90bb54d83eeabace3fac92c7bd0f784b098 Mon Sep 17 00:00:00 2001 From: jibaru Date: Fri, 2 Feb 2024 19:59:22 -0500 Subject: [PATCH 5/8] feat: update no file logic --- logger/logger.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/logger/logger.go b/logger/logger.go index b5a2548..5d0e1d9 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -1,3 +1,6 @@ +//go:build !testing +// +build !testing + package logger import ( @@ -18,16 +21,17 @@ func init() { } func NewAppLogger() *AppLogger { + var writer io.Writer = os.Stdout file, err := os.OpenFile("logs/app.log", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666) - if err != nil { - panic(err) + if err == nil { + writer = io.MultiWriter(file, os.Stdout) } logger := logrus.New() logger.SetFormatter(&logrus.JSONFormatter{ TimestampFormat: "2006-01-02T15:04:05.999999999Z07:00", }) - logger.SetOutput(io.MultiWriter(file, os.Stdout)) + logger.SetOutput(writer) logger.SetLevel(logrus.TraceLevel) return &AppLogger{logger} From f65df806584caab516e75c2b92e4be7a1eb43cfd Mon Sep 17 00:00:00 2001 From: jibaru Date: Fri, 2 Feb 2024 19:59:46 -0500 Subject: [PATCH 6/8] feat: add gorm logger --- .../app/infrastructure/database/logger.go | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 internal/app/infrastructure/database/logger.go diff --git a/internal/app/infrastructure/database/logger.go b/internal/app/infrastructure/database/logger.go new file mode 100644 index 0000000..019cac0 --- /dev/null +++ b/internal/app/infrastructure/database/logger.go @@ -0,0 +1,37 @@ +package database + +import ( + "context" + "github.com/jibaru/home-inventory-api/m/logger" + gormlogger "gorm.io/gorm/logger" + "time" +) + +type GormLogger struct { +} + +func NewGormLogger() *GormLogger { + return &GormLogger{} +} + +func (l *GormLogger) LogMode(gormlogger.LogLevel) gormlogger.Interface { + return l +} + +func (l *GormLogger) Info(_ context.Context, msg string, data ...interface{}) { + logger.LogDBTransactionInfo(msg, data) +} + +func (l *GormLogger) Warn(_ context.Context, msg string, data ...interface{}) { + logger.LogDBTransactionWarn(msg, data) +} + +func (l *GormLogger) Error(_ context.Context, msg string, data ...interface{}) { + logger.LogDBTransactionError(msg, data) +} + +func (l *GormLogger) Trace(_ context.Context, begin time.Time, fc func() (string, int64), err error) { + elapsed := time.Since(begin) + sql, rows := fc() + logger.LogDBTransactionTrace("sql", rows, elapsed, sql) +} From b8af7facb7a879856d7edeadce24432870478e23 Mon Sep 17 00:00:00 2001 From: jibaru Date: Fri, 2 Feb 2024 20:00:02 -0500 Subject: [PATCH 7/8] feat: add logger middleware --- .../infrastructure/http/middlewares/logger.go | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 internal/app/infrastructure/http/middlewares/logger.go diff --git a/internal/app/infrastructure/http/middlewares/logger.go b/internal/app/infrastructure/http/middlewares/logger.go new file mode 100644 index 0000000..184000a --- /dev/null +++ b/internal/app/infrastructure/http/middlewares/logger.go @@ -0,0 +1,20 @@ +package middlewares + +import ( + "github.com/jibaru/home-inventory-api/m/logger" + "github.com/labstack/echo/v4" +) + +type LoggerMiddleware struct { +} + +func NewLoggerMiddleware() *LoggerMiddleware { + return &LoggerMiddleware{} +} + +func (m *LoggerMiddleware) Process(next echo.HandlerFunc) echo.HandlerFunc { + return func(ctx echo.Context) error { + logger.LogRequest(ctx.Request().Method, ctx.Request().URL.Path) + return next(ctx) + } +} From c2c2273e1f87f5e28fc1379dbc33258d8ac447d5 Mon Sep 17 00:00:00 2001 From: jibaru Date: Fri, 2 Feb 2024 20:00:41 -0500 Subject: [PATCH 8/8] feat: add new logger --- cmd/app/main.go | 6 +++--- internal/app/domain/repositories/user.go | 5 +++-- internal/app/infrastructure/database/connection.go | 4 +++- internal/app/infrastructure/http/server.go | 7 ++++--- internal/app/infrastructure/repositories/gorm/asset.go | 6 +++++- internal/app/infrastructure/repositories/gorm/box.go | 6 ++++++ internal/app/infrastructure/repositories/gorm/item.go | 3 +++ .../app/infrastructure/repositories/gorm/item_keyword.go | 2 ++ internal/app/infrastructure/repositories/gorm/room.go | 5 +++++ internal/app/infrastructure/repositories/gorm/user.go | 9 ++++++++- internal/app/infrastructure/repositories/gorm/version.go | 2 ++ 11 files changed, 44 insertions(+), 11 deletions(-) diff --git a/cmd/app/main.go b/cmd/app/main.go index 0d1efe5..1a07a94 100644 --- a/cmd/app/main.go +++ b/cmd/app/main.go @@ -3,7 +3,7 @@ package main import ( "github.com/jibaru/home-inventory-api/m/internal/app/infrastructure/database" "github.com/jibaru/home-inventory-api/m/internal/app/infrastructure/http" - "log" + "github.com/jibaru/home-inventory-api/m/logger" "strconv" "time" ) @@ -11,7 +11,7 @@ import ( func main() { config, err := ReadConfig() if err != nil { - log.Fatal(err) + logger.LogError(err) return } @@ -25,7 +25,7 @@ func main() { }, ) if err != nil { - log.Fatal(err) + logger.LogError(err) return } diff --git a/internal/app/domain/repositories/user.go b/internal/app/domain/repositories/user.go index 87b186b..19f1d81 100644 --- a/internal/app/domain/repositories/user.go +++ b/internal/app/domain/repositories/user.go @@ -6,8 +6,9 @@ import ( ) var ( - ErrUserRepositoryCanNotGetUser = errors.New("can not get user") - ErrUserRepositoryUserNotFound = errors.New("user not found") + ErrUserRepositoryCanNotCreateUser = errors.New("can not create user") + ErrUserRepositoryCanNotGetUser = errors.New("can not get user") + ErrUserRepositoryUserNotFound = errors.New("user not found") ) type UserRepository interface { diff --git a/internal/app/infrastructure/database/connection.go b/internal/app/infrastructure/database/connection.go index 8598ae5..b820929 100644 --- a/internal/app/infrastructure/database/connection.go +++ b/internal/app/infrastructure/database/connection.go @@ -28,7 +28,9 @@ func (c DBConfig) DSN() string { func CreateConnection( config DBConfig, ) (*gorm.DB, error) { - db, err := gorm.Open(mysql.Open(config.DSN()), &gorm.Config{}) + db, err := gorm.Open(mysql.Open(config.DSN()), &gorm.Config{ + Logger: NewGormLogger(), + }) if err != nil { return nil, err } diff --git a/internal/app/infrastructure/http/server.go b/internal/app/infrastructure/http/server.go index 3f7def8..fe36fa3 100644 --- a/internal/app/infrastructure/http/server.go +++ b/internal/app/infrastructure/http/server.go @@ -7,8 +7,8 @@ import ( repositories "github.com/jibaru/home-inventory-api/m/internal/app/infrastructure/repositories/gorm" "github.com/jibaru/home-inventory-api/m/internal/app/infrastructure/services/aws" "github.com/jibaru/home-inventory-api/m/internal/app/infrastructure/services/jwt" + "github.com/jibaru/home-inventory-api/m/logger" "github.com/labstack/echo/v4" - "github.com/labstack/echo/v4/middleware" "gorm.io/gorm" "time" ) @@ -54,10 +54,11 @@ func RunServer( removeItemFromBoxController := controllers.NewRemoveItemFromBoxController(boxService) getRoomsController := controllers.NewGetRoomsController(roomService) + loggerMiddleware := middlewares.NewLoggerMiddleware() needsAuthMiddleware := middlewares.NewNeedsAuthMiddleware(authService) e := echo.New() - e.Use(middleware.Logger()) + e.Use(loggerMiddleware.Process) api := e.Group("/api/v1") api.POST("/login", logInController.Handle) @@ -73,5 +74,5 @@ func RunServer( authApi.DELETE("/boxes/:boxID/items/:itemID", removeItemFromBoxController.Handle) authApi.GET("/rooms", getRoomsController.Handle) - e.Logger.Fatal(e.Start(host + ":" + port)) + logger.LogError(e.Start(host + ":" + port)) } diff --git a/internal/app/infrastructure/repositories/gorm/asset.go b/internal/app/infrastructure/repositories/gorm/asset.go index 20db9e8..3c9adbc 100644 --- a/internal/app/infrastructure/repositories/gorm/asset.go +++ b/internal/app/infrastructure/repositories/gorm/asset.go @@ -3,6 +3,7 @@ package gorm import ( "github.com/jibaru/home-inventory-api/m/internal/app/domain/entities" "github.com/jibaru/home-inventory-api/m/internal/app/domain/repositories" + "github.com/jibaru/home-inventory-api/m/logger" "gorm.io/gorm" ) @@ -18,6 +19,7 @@ func NewAssetRepository(db *gorm.DB) *AssetRepository { func (r *AssetRepository) Create(asset *entities.Asset) error { if err := r.db.Create(asset).Error; err != nil { + logger.LogError(err) return repositories.ErrAssetRepositoryCanNotCreateAsset } @@ -39,7 +41,8 @@ func (r *AssetRepository) FindByEntity( result := query.Find(&assets) - if result.Error != nil { + if err := result.Error; err != nil { + logger.LogError(err) return nil, repositories.ErrAssetRepositoryCanNotGetAssets } @@ -48,6 +51,7 @@ func (r *AssetRepository) FindByEntity( func (r *AssetRepository) Delete(id string) error { if err := r.db.Delete(&entities.Asset{}, "id = ?", id).Error; err != nil { + logger.LogError(err) return repositories.ErrAssetRepositoryCanNotDeleteAsset } diff --git a/internal/app/infrastructure/repositories/gorm/box.go b/internal/app/infrastructure/repositories/gorm/box.go index f84f806..7231dc3 100644 --- a/internal/app/infrastructure/repositories/gorm/box.go +++ b/internal/app/infrastructure/repositories/gorm/box.go @@ -3,6 +3,7 @@ package gorm import ( "github.com/jibaru/home-inventory-api/m/internal/app/domain/entities" "github.com/jibaru/home-inventory-api/m/internal/app/domain/repositories" + "github.com/jibaru/home-inventory-api/m/logger" "gorm.io/gorm" ) @@ -26,6 +27,7 @@ func (r *BoxRepository) GetBoxItem(boxID string, itemID string) (*entities.BoxIt var boxItem entities.BoxItem if err := r.db.Where("box_id = ? AND item_id = ?", boxID, itemID).First(&boxItem).Error; err != nil { + logger.LogError(err) return nil, repositories.ErrBoxRepositoryBoxItemNotFound } @@ -34,6 +36,7 @@ func (r *BoxRepository) GetBoxItem(boxID string, itemID string) (*entities.BoxIt func (r *BoxRepository) CreateBoxItem(boxItem *entities.BoxItem) error { if err := r.db.Create(boxItem).Error; err != nil { + logger.LogError(err) return repositories.ErrBoxRepositoryCanBotCreateBoxItem } @@ -42,6 +45,7 @@ func (r *BoxRepository) CreateBoxItem(boxItem *entities.BoxItem) error { func (r *BoxRepository) UpdateBoxItem(boxItem *entities.BoxItem) error { if err := r.db.Save(boxItem).Error; err != nil { + logger.LogError(err) return repositories.ErrBoxRepositoryCanNotUpdateBoxItem } @@ -50,6 +54,7 @@ func (r *BoxRepository) UpdateBoxItem(boxItem *entities.BoxItem) error { func (r *BoxRepository) CreateBoxTransaction(boxTransaction *entities.BoxTransaction) error { if err := r.db.Create(boxTransaction).Error; err != nil { + logger.LogError(err) return repositories.ErrBoxRepositoryCanNotCreateBoxTransaction } @@ -58,6 +63,7 @@ func (r *BoxRepository) CreateBoxTransaction(boxTransaction *entities.BoxTransac func (r *BoxRepository) DeleteBoxItem(boxID string, itemID string) error { if err := r.db.Where("box_id = ? AND item_id = ?", boxID, itemID).Delete(&entities.BoxItem{}).Error; err != nil { + logger.LogError(err) return repositories.ErrBoxRepositoryCanNotDeleteBoxItem } diff --git a/internal/app/infrastructure/repositories/gorm/item.go b/internal/app/infrastructure/repositories/gorm/item.go index 4745e17..719130a 100644 --- a/internal/app/infrastructure/repositories/gorm/item.go +++ b/internal/app/infrastructure/repositories/gorm/item.go @@ -3,6 +3,7 @@ package gorm import ( "github.com/jibaru/home-inventory-api/m/internal/app/domain/entities" "github.com/jibaru/home-inventory-api/m/internal/app/domain/repositories" + "github.com/jibaru/home-inventory-api/m/logger" "gorm.io/gorm" ) @@ -18,6 +19,7 @@ func NewItemRepository(db *gorm.DB) *ItemRepository { func (r *ItemRepository) Create(item *entities.Item) error { if err := r.db.Create(item).Error; err != nil { + logger.LogError(err) return repositories.ErrItemRepositoryCanNotCreateItem } @@ -28,6 +30,7 @@ func (r *ItemRepository) GetByID(id string) (*entities.Item, error) { var item entities.Item if err := r.db.First(&item, "id = ?", id).Error; err != nil { + logger.LogError(err) return nil, repositories.ErrItemRepositoryItemNotFound } diff --git a/internal/app/infrastructure/repositories/gorm/item_keyword.go b/internal/app/infrastructure/repositories/gorm/item_keyword.go index e2c31a5..6c46210 100644 --- a/internal/app/infrastructure/repositories/gorm/item_keyword.go +++ b/internal/app/infrastructure/repositories/gorm/item_keyword.go @@ -3,6 +3,7 @@ package gorm import ( "github.com/jibaru/home-inventory-api/m/internal/app/domain/entities" "github.com/jibaru/home-inventory-api/m/internal/app/domain/repositories" + "github.com/jibaru/home-inventory-api/m/logger" "gorm.io/gorm" ) @@ -18,6 +19,7 @@ func NewItemKeywordRepository(db *gorm.DB) *ItemKeywordRepository { func (r *ItemKeywordRepository) CreateMany(itemKeywords []*entities.ItemKeyword) error { if err := r.db.Create(&itemKeywords).Error; err != nil { + logger.LogError(err) return repositories.ErrItemKeywordRepositoryCanNotCreateItemKeywords } diff --git a/internal/app/infrastructure/repositories/gorm/room.go b/internal/app/infrastructure/repositories/gorm/room.go index 082db5c..6371f06 100644 --- a/internal/app/infrastructure/repositories/gorm/room.go +++ b/internal/app/infrastructure/repositories/gorm/room.go @@ -3,6 +3,7 @@ package gorm import ( "github.com/jibaru/home-inventory-api/m/internal/app/domain/entities" "github.com/jibaru/home-inventory-api/m/internal/app/domain/repositories" + "github.com/jibaru/home-inventory-api/m/logger" "gorm.io/gorm" ) @@ -18,6 +19,7 @@ func NewRoomRepository(db *gorm.DB) *RoomRepository { func (r *RoomRepository) Create(room *entities.Room) error { if err := r.db.Create(room).Error; err != nil { + logger.LogError(err) return repositories.ErrRoomRepositoryCanNotCreateRoom } @@ -31,6 +33,7 @@ func (r *RoomRepository) ExistsByID(id string) (bool, error) { Count(&count). Error if err != nil { + logger.LogError(err) return false, repositories.ErrRoomRepositoryCanNotCheckIfRoomExistsByID } @@ -46,6 +49,7 @@ func (r *RoomRepository) GetByQueryFilters(queryFilter repositories.QueryFilter, Error if err != nil { + logger.LogError(err) return nil, repositories.ErrRoomRepositoryCanNotGetRooms } @@ -59,6 +63,7 @@ func (r *RoomRepository) CountByQueryFilters(queryFilter repositories.QueryFilte Error if err != nil { + logger.LogError(err) return 0, repositories.ErrRoomRepositoryCanNotCountRooms } diff --git a/internal/app/infrastructure/repositories/gorm/user.go b/internal/app/infrastructure/repositories/gorm/user.go index b1bf8d1..0b92656 100644 --- a/internal/app/infrastructure/repositories/gorm/user.go +++ b/internal/app/infrastructure/repositories/gorm/user.go @@ -4,6 +4,7 @@ import ( "errors" "github.com/jibaru/home-inventory-api/m/internal/app/domain/entities" "github.com/jibaru/home-inventory-api/m/internal/app/domain/repositories" + "github.com/jibaru/home-inventory-api/m/logger" "gorm.io/gorm" ) @@ -18,7 +19,12 @@ func NewUserRepository(db *gorm.DB) *UserRepository { } func (r *UserRepository) Create(user *entities.User) error { - return r.db.Create(user).Error + if err := r.db.Create(user).Error; err != nil { + logger.LogError(err) + return repositories.ErrUserRepositoryCanNotCreateUser + } + + return nil } func (r *UserRepository) FindByEmail(email string) (*entities.User, error) { @@ -26,6 +32,7 @@ func (r *UserRepository) FindByEmail(email string) (*entities.User, error) { err := r.db.First(user, "email = ?", email).Error if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + logger.LogError(err) return nil, repositories.ErrUserRepositoryUserNotFound } diff --git a/internal/app/infrastructure/repositories/gorm/version.go b/internal/app/infrastructure/repositories/gorm/version.go index f4aa2f3..9943e70 100644 --- a/internal/app/infrastructure/repositories/gorm/version.go +++ b/internal/app/infrastructure/repositories/gorm/version.go @@ -4,6 +4,7 @@ import ( "errors" "github.com/jibaru/home-inventory-api/m/internal/app/domain/entities" "github.com/jibaru/home-inventory-api/m/internal/app/domain/repositories" + "github.com/jibaru/home-inventory-api/m/logger" "gorm.io/gorm" ) @@ -22,6 +23,7 @@ func (r *VersionRepository) GetLatest() (*entities.Version, error) { err := r.db.First(version).Error if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + logger.LogError(err) return nil, repositories.ErrVersionRepositoryVersionNotFound }