Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add logger #13

Merged
merged 8 commits into from
Feb 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
app.env

db_data/
logs/*.log
6 changes: 3 additions & 3 deletions cmd/app/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ 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"
)

func main() {
config, err := ReadConfig()
if err != nil {
log.Fatal(err)
logger.LogError(err)
return
}

Expand All @@ -25,7 +25,7 @@ func main() {
},
)
if err != nil {
log.Fatal(err)
logger.LogError(err)
return
}

Expand Down
5 changes: 2 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
)
10 changes: 6 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand All @@ -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=
Expand Down Expand Up @@ -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=
Expand All @@ -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=
Expand All @@ -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=
Expand Down
5 changes: 3 additions & 2 deletions internal/app/domain/repositories/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
4 changes: 3 additions & 1 deletion internal/app/infrastructure/database/connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
37 changes: 37 additions & 0 deletions internal/app/infrastructure/database/logger.go
Original file line number Diff line number Diff line change
@@ -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)
}
20 changes: 20 additions & 0 deletions internal/app/infrastructure/http/middlewares/logger.go
Original file line number Diff line number Diff line change
@@ -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)
}
}
7 changes: 4 additions & 3 deletions internal/app/infrastructure/http/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand Down Expand Up @@ -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)
Expand All @@ -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))
}
6 changes: 5 additions & 1 deletion internal/app/infrastructure/repositories/gorm/asset.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand All @@ -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
}

Expand All @@ -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
}

Expand All @@ -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
}

Expand Down
6 changes: 6 additions & 0 deletions internal/app/infrastructure/repositories/gorm/box.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand All @@ -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
}

Expand All @@ -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
}

Expand All @@ -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
}

Expand All @@ -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
}

Expand All @@ -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
}

Expand Down
3 changes: 3 additions & 0 deletions internal/app/infrastructure/repositories/gorm/item.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand All @@ -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
}

Expand All @@ -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
}

Expand Down
2 changes: 2 additions & 0 deletions internal/app/infrastructure/repositories/gorm/item_keyword.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand All @@ -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
}

Expand Down
5 changes: 5 additions & 0 deletions internal/app/infrastructure/repositories/gorm/room.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand All @@ -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
}

Expand All @@ -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
}

Expand All @@ -46,6 +49,7 @@ func (r *RoomRepository) GetByQueryFilters(queryFilter repositories.QueryFilter,
Error

if err != nil {
logger.LogError(err)
return nil, repositories.ErrRoomRepositoryCanNotGetRooms
}

Expand All @@ -59,6 +63,7 @@ func (r *RoomRepository) CountByQueryFilters(queryFilter repositories.QueryFilte
Error

if err != nil {
logger.LogError(err)
return 0, repositories.ErrRoomRepositoryCanNotCountRooms
}

Expand Down
Loading
Loading