mirror of
https://github.com/FJurmanovic/wallet-go-api.git
synced 2026-02-06 06:08:16 +00:00
64 lines
1.4 KiB
Go
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
|
|
}
|