Files
wallet-go-api/pkg/repository/repository.go
2023-04-13 18:10:21 +02:00

64 lines
1.4 KiB
Go

package repository
import (
"wallet-api/pkg/model"
"wallet-api/pkg/utl/common"
"go.uber.org/dig"
"github.com/go-pg/pg/v10"
)
/*
InitializeRepositories
Initializes Dependency Injection modules for repositories
Args:
*dig.Container: Dig Container
*/
func InitializeRepositories(c *dig.Scope) {
c.Provide(NewApiRepository)
c.Provide(NewSubscriptionRepository)
c.Provide(NewSubscriptionTypeRepository)
c.Provide(NewTransactionRepository)
c.Provide(NewTransactionStatusRepository)
c.Provide(NewTransactionTypeRepository)
c.Provide(NewUserRepository)
c.Provide(NewWalletRepository)
c.Provide(NewCurrencyRepository)
}
/*
FilteredResponse
Adds filter to query and executes it.
Args:
*pg.Query: postgres query
interface{}: model to be mapped from query execution.
*model.FilteredResponse: filter options.
*/
func FilteredResponse(qry *pg.Query, mdl interface{}, params model.Params) (*model.FilteredResponse, error) {
filtered := new(model.FilteredResponse)
filtered.Params = params
if filtered.Page == 0 {
filtered.Page = 1
}
if filtered.Rpp == 0 {
filtered.Rpp = 20
}
if filtered.SortBy == "" {
filtered.SortBy = "date_created DESC"
}
qry = qry.Limit(filtered.Rpp).Offset((filtered.Page - 1) * filtered.Rpp).Order(filtered.SortBy)
common.GenerateEmbed(qry, filtered.Embed)
count, err := qry.SelectAndCount()
common.CheckError(err)
filtered.TotalRecords = count
filtered.Items = mdl
return filtered, err
}