mirror of
https://github.com/FJurmanovic/wallet-go-api.git
synced 2026-02-06 06:08:16 +00:00
partial repository layer added
This commit is contained in:
59
pkg/repository/repository.go
Normal file
59
pkg/repository/repository.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"go.uber.org/dig"
|
||||
"wallet-api/pkg/model"
|
||||
"wallet-api/pkg/utl/common"
|
||||
|
||||
"github.com/go-pg/pg/v10"
|
||||
)
|
||||
|
||||
/*
|
||||
InitializeRepositories
|
||||
|
||||
Initializes Dependency Injection modules for repositories
|
||||
|
||||
Args:
|
||||
*dig.Container: Dig Container
|
||||
*/
|
||||
func InitializeRepositories(c *dig.Container) {
|
||||
c.Provide(NewApiRepository)
|
||||
c.Provide(NewSubscriptionRepository)
|
||||
c.Provide(NewSubscriptionTypeRepository)
|
||||
c.Provide(NewTransactionRepository)
|
||||
c.Provide(NewTransactionStatusRepository)
|
||||
c.Provide(NewTransactionTypeRepository)
|
||||
c.Provide(NewUserRepository)
|
||||
c.Provide(NewWalletRepository)
|
||||
}
|
||||
|
||||
/*
|
||||
FilteredResponse
|
||||
|
||||
Adds filters 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{}, filtered *model.FilteredResponse) error {
|
||||
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 err
|
||||
}
|
||||
Reference in New Issue
Block a user