repository

package
v0.0.113 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2020 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Contains added in v0.0.84

func Contains(arr []string, str string) bool

Contains checks if value present in array

func ContainsKey added in v0.0.84

func ContainsKey(keyValuePair map[string][]string, keyToCheck string) bool

ContainsKey checks if key present in map

func DoesColumnExistInTable added in v0.0.84

func DoesColumnExistInTable(uow *UnitOfWork, tableName string, ColumnName string) bool

DoesColumnExistInTable returns bool if the column exist in table

func GetOrderType added in v0.0.84

func GetOrderType(order string) string

GetOrderType returns the type of order

Types

type GormRepository

type GormRepository struct {
}

GormRepository implements Repository

func (*GormRepository) Add

func (repository *GormRepository) Add(uow *UnitOfWork, entity interface{}) error

Add specified Entity

func (*GormRepository) AddAssociations added in v0.0.103

func (repository *GormRepository) AddAssociations(uow *UnitOfWork, out interface{}, associationName string, associations ...interface{}) error

AddAssociations adds associations to the given out entity

func (*GormRepository) Delete

func (repository *GormRepository) Delete(uow *UnitOfWork, entity interface{}) error

Delete specified Entity

func (*GormRepository) DeleteForTenant added in v0.0.113

func (repository *GormRepository) DeleteForTenant(uow *UnitOfWork, entity interface{}, tenantID uuid.UUID) error

DeleteForTenant all recrod(s) of specified entity / entity type for given tenant

func (*GormRepository) Get

func (repository *GormRepository) Get(uow *UnitOfWork, out interface{}, id uuid.UUID, preloadAssociations []string) error

Get a record for specified entity with specific id

func (*GormRepository) GetAll

func (repository *GormRepository) GetAll(uow *UnitOfWork, out interface{}, queryProcessors []QueryProcessor) error

GetAll retrieves all the records for a specified entity and returns it

func (*GormRepository) GetAllForTenant added in v0.0.6

func (repository *GormRepository) GetAllForTenant(uow *UnitOfWork, out interface{}, tenantID uuid.UUID, queryProcessors []QueryProcessor) error

GetAllForTenant returns all objects of specifeid tenantID

func (*GormRepository) GetCountForTenant added in v0.0.96

func (repository *GormRepository) GetCountForTenant(uow *UnitOfWork, tenantID uuid.UUID, model interface{}, queryProcessors []QueryProcessor) (int, error)

GetCountForTenant gets count of the given model for specified tenantID

func (*GormRepository) GetForTenant added in v0.0.98

func (repository *GormRepository) GetForTenant(uow *UnitOfWork, out interface{}, id string, tenantID uuid.UUID, preloadAssociations []string) error

GetForTenant a record for specified entity with specific id and for specified tenant

func (*GormRepository) RemoveAssociations added in v0.0.105

func (repository *GormRepository) RemoveAssociations(uow *UnitOfWork, out interface{}, associationName string, associations ...interface{}) error

RemoveAssociations removes associations from the given out entity

func (*GormRepository) ReplaceAssociations added in v0.0.105

func (repository *GormRepository) ReplaceAssociations(uow *UnitOfWork, out interface{}, associationName string, associations ...interface{}) error

ReplaceAssociations removes associations from the given out entity

func (*GormRepository) Update

func (repository *GormRepository) Update(uow *UnitOfWork, entity interface{}) error

Update specified Entity

type QueryProcessor added in v0.0.23

type QueryProcessor func(db *gorm.DB, out interface{}) (*gorm.DB, error)

QueryProcessor allows to modify the query before it is executed

func AddFiltersFromQueryParams added in v0.0.78

func AddFiltersFromQueryParams(r *http.Request, filterDetails ...string) ([]QueryProcessor, error)

AddFiltersFromQueryParams will check for given filter(s) in the query params, if value found creates the db filter. filterDetail format - "filterName[:type]".

func AddFiltersFromQueryParamsWithOR added in v0.0.82

func AddFiltersFromQueryParamsWithOR(r *http.Request, filterDetails ...string) ([]QueryProcessor, error)

AddFiltersFromQueryParamsWithOR will check for given filter(s) in the query params, if value found adds it in array and creates the db filter. filterDetail format - "filterName[:type]". Same field Filters are using 'OR' , 'AND' would be done between different fields

func Filter added in v0.0.23

func Filter(condition string, args ...interface{}) QueryProcessor

Filter will filter the results

func FilterWithOR added in v0.0.81

func FilterWithOR(columnName []string, condition []string, filterValues []interface{}) QueryProcessor

FilterWithOR will filter the results based on OR

func GetOrderBy added in v0.0.110

func GetOrderBy(orderByAttrs []string, validOrderByAttrs []string, orderByAttrAndDBCloum map[string][]string, reorder bool) (QueryProcessor, error)

GetOrderBy creates order by query processor orderByAttrs - ["column1:0", "column2:1"], validOrderByAttrs - ["column1", "column2", "column3"], orderByAttrAndDBCloum - {"cloumn3": ["dbColunm4", "dbColumn5"]}

func Order added in v0.0.76

func Order(value interface{}, reorder bool) QueryProcessor

Order will filter the results

func Paginate added in v0.0.23

func Paginate(limit int, offset int, count *int) QueryProcessor

Paginate will restrict the output of query

func PaginateForWeb added in v0.0.26

func PaginateForWeb(w http.ResponseWriter, r *http.Request) QueryProcessor

PaginateForWeb will take limit and offset parameters from URL and will set X-Total-Count header in response

func PreloadAssociations added in v0.0.23

func PreloadAssociations(preloadAssociations []string) QueryProcessor

PreloadAssociations specified associations to be preloaded

func TimeRangeForWeb added in v0.0.42

func TimeRangeForWeb(r *http.Request, fieldName string) QueryProcessor

TimeRangeForWeb will take limit and offset parameters from URL and will set X-Total-Count header in response

type Repository

type Repository interface {
	Get(uow *UnitOfWork, out interface{}, id uuid.UUID, preloadAssociations []string) error
	GetForTenant(uow *UnitOfWork, out interface{}, id string, tenantID uuid.UUID, preloadAssociations []string) error
	GetAll(uow *UnitOfWork, out interface{}, queryProcessors []QueryProcessor) error
	GetAllForTenant(uow *UnitOfWork, out interface{}, tenantID uuid.UUID, queryProcessors []QueryProcessor) error
	GetCountForTenant(uow *UnitOfWork, tenantID uuid.UUID, model interface{}, queryProcessors []QueryProcessor) (int, error)
	Add(uow *UnitOfWork, out interface{}) error
	Update(uow *UnitOfWork, out interface{}) error
	Delete(uow *UnitOfWork, out interface{}) error
	DeleteForTenant(uow *UnitOfWork, out interface{}, tenantID uuid.UUID) error
	AddAssociations(uow *UnitOfWork, out interface{}, associationName string, associations ...interface{}) error
	RemoveAssociations(uow *UnitOfWork, out interface{}, associationName string, associations ...interface{}) error
	ReplaceAssociations(uow *UnitOfWork, out interface{}, associationName string, associations ...interface{}) error
}

Repository represents generic interface for interacting with DB

func NewRepository

func NewRepository() Repository

NewRepository returns a new repository object

type UnitOfWork

type UnitOfWork struct {
	DB *gorm.DB
	// contains filtered or unexported fields
}

UnitOfWork represents a connection

func NewUnitOfWork

func NewUnitOfWork(db *gorm.DB, readOnly bool) *UnitOfWork

NewUnitOfWork creates new UnitOfWork

func (*UnitOfWork) Commit

func (uow *UnitOfWork) Commit()

Commit the transaction

func (*UnitOfWork) Complete

func (uow *UnitOfWork) Complete()

Complete marks end of unit of work

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL