Documentation ¶
Index ¶
- Constants
- Variables
- func GetAdminDefaultPassword(ctx context.Context) string
- func SetAdminDefaultPassword(ctx context.Context, passwd *string) context.Context
- type Interface
- type InterfaceMock
- func (mock *InterfaceMock) AccessGarbageCollector(ctx context.Context) error
- func (mock *InterfaceMock) AccessGarbageCollectorCalls() []struct{ ... }
- func (mock *InterfaceMock) Close(ctx context.Context) error
- func (mock *InterfaceMock) CloseCalls() []struct{ ... }
- func (mock *InterfaceMock) CreateAccess(ctx context.Context, access *store.Access) error
- func (mock *InterfaceMock) CreateAccessCalls() []struct{ ... }
- func (mock *InterfaceMock) CreateGroup(ctx context.Context, group *store.Group) error
- func (mock *InterfaceMock) CreateGroupCalls() []struct{ ... }
- func (mock *InterfaceMock) CreateRepository(ctx context.Context, entry *store.RegistryEntry) error
- func (mock *InterfaceMock) CreateRepositoryCalls() []struct{ ... }
- func (mock *InterfaceMock) CreateUser(ctx context.Context, user *store.User) error
- func (mock *InterfaceMock) CreateUserCalls() []struct{ ... }
- func (mock *InterfaceMock) DeleteAccess(ctx context.Context, key string, id interface{}) error
- func (mock *InterfaceMock) DeleteAccessCalls() []struct{ ... }
- func (mock *InterfaceMock) DeleteGroup(ctx context.Context, id int64) error
- func (mock *InterfaceMock) DeleteGroupCalls() []struct{ ... }
- func (mock *InterfaceMock) DeleteRepository(ctx context.Context, repositoryName string, digest string) error
- func (mock *InterfaceMock) DeleteRepositoryCalls() []struct{ ... }
- func (mock *InterfaceMock) DeleteUser(ctx context.Context, id int64) error
- func (mock *InterfaceMock) DeleteUserCalls() []struct{ ... }
- func (mock *InterfaceMock) FindAccesses(ctx context.Context, filter QueryFilter) (ListResponse, error)
- func (mock *InterfaceMock) FindAccessesCalls() []struct{ ... }
- func (mock *InterfaceMock) FindGroups(ctx context.Context, filter QueryFilter) (ListResponse, error)
- func (mock *InterfaceMock) FindGroupsCalls() []struct{ ... }
- func (mock *InterfaceMock) FindRepositories(ctx context.Context, filter QueryFilter) (ListResponse, error)
- func (mock *InterfaceMock) FindRepositoriesCalls() []struct{ ... }
- func (mock *InterfaceMock) FindUsers(ctx context.Context, filter QueryFilter, withPassword bool) (ListResponse, error)
- func (mock *InterfaceMock) FindUsersCalls() []struct{ ... }
- func (mock *InterfaceMock) GetAccess(ctx context.Context, id int64) (store.Access, error)
- func (mock *InterfaceMock) GetAccessCalls() []struct{ ... }
- func (mock *InterfaceMock) GetGroup(ctx context.Context, id int64) (store.Group, error)
- func (mock *InterfaceMock) GetGroupCalls() []struct{ ... }
- func (mock *InterfaceMock) GetRepository(ctx context.Context, entryID int64) (store.RegistryEntry, error)
- func (mock *InterfaceMock) GetRepositoryCalls() []struct{ ... }
- func (mock *InterfaceMock) GetUser(ctx context.Context, id interface{}) (store.User, error)
- func (mock *InterfaceMock) GetUserCalls() []struct{ ... }
- func (mock *InterfaceMock) RepositoryGarbageCollector(ctx context.Context, syncDate int64) error
- func (mock *InterfaceMock) RepositoryGarbageCollectorCalls() []struct{ ... }
- func (mock *InterfaceMock) UpdateAccess(ctx context.Context, access store.Access) error
- func (mock *InterfaceMock) UpdateAccessCalls() []struct{ ... }
- func (mock *InterfaceMock) UpdateGroup(ctx context.Context, group store.Group) error
- func (mock *InterfaceMock) UpdateGroupCalls() []struct{ ... }
- func (mock *InterfaceMock) UpdateRepository(ctx context.Context, conditionClause map[string]interface{}, ...) error
- func (mock *InterfaceMock) UpdateRepositoryCalls() []struct{ ... }
- func (mock *InterfaceMock) UpdateUser(ctx context.Context, user store.User) error
- func (mock *InterfaceMock) UpdateUserCalls() []struct{ ... }
- type ListResponse
- type QueryFilter
Constants ¶
const ( RepositoriesByUserAccess = "access.owner_id" AnonymousUserID = int64(-1000) // uses for share access for anonymous and not registered users RegisteredUserID = int64(-999) // uses for share access for registered users only )
RepositoriesByUserAccess allow filtered repositories result list by assigned user access it's relevant only for role 'user' only
Variables ¶
var ErrNotFound = errors.New("record not found")
ErrNotFound return empty result error with request
Functions ¶
func GetAdminDefaultPassword ¶
GetAdminDefaultPassword allows get default password for user admin from context
Types ¶
type Interface ¶
type Interface interface { // CreateUser create a new user login record in application storage CreateUser(ctx context.Context, user *store.User) (err error) // GetUser get data by user ID, where id can be any type GetUser(ctx context.Context, id interface{}) (user store.User, err error) // FindUsers fetch list of user by filter values. // @withPassword defines include or not hash value of password to result FindUsers(ctx context.Context, filter QueryFilter, withPassword bool) (users ListResponse, err error) // UpdateUser update user records data in application storage UpdateUser(ctx context.Context, user store.User) (err error) // DeleteUser delete user record by ID DeleteUser(ctx context.Context, id int64) (err error) // CreateGroup create a new users group record in application storage CreateGroup(ctx context.Context, group *store.Group) (err error) // GetGroup get data of users group by ID GetGroup(ctx context.Context, id int64) (group store.Group, err error) // FindGroups fetch list of existed users group FindGroups(ctx context.Context, filter QueryFilter) (groups ListResponse, err error) // UpdateGroup update data of users group UpdateGroup(ctx context.Context, group store.Group) (err error) // DeleteGroup delete users group record by ID DeleteGroup(ctx context.Context, id int64) (err error) // CreateAccess create a new access record for a specific user and repository CreateAccess(ctx context.Context, access *store.Access) (err error) // GetAccess get data of access entry by ID GetAccess(ctx context.Context, id int64) (access store.Access, err error) // FindAccesses get list of users access FindAccesses(ctx context.Context, filter QueryFilter) (accesses ListResponse, err error) // UpdateAccess will update a user access record UpdateAccess(ctx context.Context, access store.Access) (err error) // DeleteAccess delete access record by ID DeleteAccess(ctx context.Context, key string, id interface{}) (err error) // AccessGarbageCollector check outdated repositories in repositories table and delete ones from access list AccessGarbageCollector(ctx context.Context) error // CreateRepository create a new repository record CreateRepository(ctx context.Context, entry *store.RegistryEntry) (err error) // GetRepository get repository data by ID GetRepository(ctx context.Context, entryID int64) (entry store.RegistryEntry, err error) // FindRepositories get list of repositories FindRepositories(ctx context.Context, filter QueryFilter) (entries ListResponse, err error) // UpdateRepository update repository entry data UpdateRepository(ctx context.Context, conditionClause, data map[string]interface{}) (err error) // DeleteRepository delete repository entry by ID DeleteRepository(ctx context.Context, repositoryName, digest string) (err error) // RepositoryGarbageCollector deletes outdated repositories entries RepositoryGarbageCollector(ctx context.Context, syncDate int64) (err error) // Close connection to storage instance Close(ctx context.Context) error }
Interface defines methods provided by low-level storage engine
type InterfaceMock ¶
type InterfaceMock struct { // AccessGarbageCollectorFunc mocks the AccessGarbageCollector method. AccessGarbageCollectorFunc func(ctx context.Context) error // CloseFunc mocks the Close method. CloseFunc func(ctx context.Context) error // CreateAccessFunc mocks the CreateAccess method. CreateAccessFunc func(ctx context.Context, access *store.Access) error // CreateGroupFunc mocks the CreateGroup method. CreateGroupFunc func(ctx context.Context, group *store.Group) error // CreateRepositoryFunc mocks the CreateRepository method. CreateRepositoryFunc func(ctx context.Context, entry *store.RegistryEntry) error // CreateUserFunc mocks the CreateUser method. CreateUserFunc func(ctx context.Context, user *store.User) error // DeleteAccessFunc mocks the DeleteAccess method. DeleteAccessFunc func(ctx context.Context, key string, id interface{}) error // DeleteGroupFunc mocks the DeleteGroup method. DeleteGroupFunc func(ctx context.Context, id int64) error // DeleteRepositoryFunc mocks the DeleteRepository method. DeleteRepositoryFunc func(ctx context.Context, repositoryName string, digest string) error // DeleteUserFunc mocks the DeleteUser method. DeleteUserFunc func(ctx context.Context, id int64) error // FindAccessesFunc mocks the FindAccesses method. FindAccessesFunc func(ctx context.Context, filter QueryFilter) (ListResponse, error) // FindGroupsFunc mocks the FindGroups method. FindGroupsFunc func(ctx context.Context, filter QueryFilter) (ListResponse, error) // FindRepositoriesFunc mocks the FindRepositories method. FindRepositoriesFunc func(ctx context.Context, filter QueryFilter) (ListResponse, error) // FindUsersFunc mocks the FindUsers method. FindUsersFunc func(ctx context.Context, filter QueryFilter, withPassword bool) (ListResponse, error) // GetAccessFunc mocks the GetAccess method. GetAccessFunc func(ctx context.Context, id int64) (store.Access, error) // GetGroupFunc mocks the GetGroup method. GetGroupFunc func(ctx context.Context, id int64) (store.Group, error) // GetRepositoryFunc mocks the GetRepository method. GetRepositoryFunc func(ctx context.Context, entryID int64) (store.RegistryEntry, error) // GetUserFunc mocks the GetUser method. GetUserFunc func(ctx context.Context, id interface{}) (store.User, error) // RepositoryGarbageCollectorFunc mocks the RepositoryGarbageCollector method. RepositoryGarbageCollectorFunc func(ctx context.Context, syncDate int64) error // UpdateAccessFunc mocks the UpdateAccess method. UpdateAccessFunc func(ctx context.Context, access store.Access) error // UpdateGroupFunc mocks the UpdateGroup method. UpdateGroupFunc func(ctx context.Context, group store.Group) error // UpdateRepositoryFunc mocks the UpdateRepository method. UpdateRepositoryFunc func(ctx context.Context, conditionClause map[string]interface{}, data map[string]interface{}) error // UpdateUserFunc mocks the UpdateUser method. UpdateUserFunc func(ctx context.Context, user store.User) error // contains filtered or unexported fields }
InterfaceMock is a mock implementation of Interface.
func TestSomethingThatUsesInterface(t *testing.T) { // make and configure a mocked Interface mockedInterface := &InterfaceMock{ AccessGarbageCollectorFunc: func(ctx context.Context) error { panic("mock out the AccessGarbageCollector method") }, CloseFunc: func(ctx context.Context) error { panic("mock out the Close method") }, CreateAccessFunc: func(ctx context.Context, access *store.Access) error { panic("mock out the CreateAccess method") }, CreateGroupFunc: func(ctx context.Context, group *store.Group) error { panic("mock out the CreateGroup method") }, CreateRepositoryFunc: func(ctx context.Context, entry *store.RegistryEntry) error { panic("mock out the CreateRepository method") }, CreateUserFunc: func(ctx context.Context, user *store.User) error { panic("mock out the CreateUser method") }, DeleteAccessFunc: func(ctx context.Context, key string, id interface{}) error { panic("mock out the DeleteAccess method") }, DeleteGroupFunc: func(ctx context.Context, id int64) error { panic("mock out the DeleteGroup method") }, DeleteRepositoryFunc: func(ctx context.Context, repositoryName string, digest string) error { panic("mock out the DeleteRepository method") }, DeleteUserFunc: func(ctx context.Context, id int64) error { panic("mock out the DeleteUser method") }, FindAccessesFunc: func(ctx context.Context, filter QueryFilter) (ListResponse, error) { panic("mock out the FindAccesses method") }, FindGroupsFunc: func(ctx context.Context, filter QueryFilter) (ListResponse, error) { panic("mock out the FindGroups method") }, FindRepositoriesFunc: func(ctx context.Context, filter QueryFilter) (ListResponse, error) { panic("mock out the FindRepositories method") }, FindUsersFunc: func(ctx context.Context, filter QueryFilter, withPassword bool) (ListResponse, error) { panic("mock out the FindUsers method") }, GetAccessFunc: func(ctx context.Context, id int64) (store.Access, error) { panic("mock out the GetAccess method") }, GetGroupFunc: func(ctx context.Context, id int64) (store.Group, error) { panic("mock out the GetGroup method") }, GetRepositoryFunc: func(ctx context.Context, entryID int64) (store.RegistryEntry, error) { panic("mock out the GetRepository method") }, GetUserFunc: func(ctx context.Context, id interface{}) (store.User, error) { panic("mock out the GetUser method") }, RepositoryGarbageCollectorFunc: func(ctx context.Context, syncDate int64) error { panic("mock out the RepositoryGarbageCollector method") }, UpdateAccessFunc: func(ctx context.Context, access store.Access) error { panic("mock out the UpdateAccess method") }, UpdateGroupFunc: func(ctx context.Context, group store.Group) error { panic("mock out the UpdateGroup method") }, UpdateRepositoryFunc: func(ctx context.Context, conditionClause map[string]interface{}, data map[string]interface{}) error { panic("mock out the UpdateRepository method") }, UpdateUserFunc: func(ctx context.Context, user store.User) error { panic("mock out the UpdateUser method") }, } // use mockedInterface in code that requires Interface // and then make assertions. }
func (*InterfaceMock) AccessGarbageCollector ¶
func (mock *InterfaceMock) AccessGarbageCollector(ctx context.Context) error
AccessGarbageCollector calls AccessGarbageCollectorFunc.
func (*InterfaceMock) AccessGarbageCollectorCalls ¶
func (mock *InterfaceMock) AccessGarbageCollectorCalls() []struct { Ctx context.Context }
AccessGarbageCollectorCalls gets all the calls that were made to AccessGarbageCollector. Check the length with:
len(mockedInterface.AccessGarbageCollectorCalls())
func (*InterfaceMock) Close ¶
func (mock *InterfaceMock) Close(ctx context.Context) error
Close calls CloseFunc.
func (*InterfaceMock) CloseCalls ¶
func (mock *InterfaceMock) CloseCalls() []struct { Ctx context.Context }
CloseCalls gets all the calls that were made to Close. Check the length with:
len(mockedInterface.CloseCalls())
func (*InterfaceMock) CreateAccess ¶
CreateAccess calls CreateAccessFunc.
func (*InterfaceMock) CreateAccessCalls ¶
func (mock *InterfaceMock) CreateAccessCalls() []struct { Ctx context.Context Access *store.Access }
CreateAccessCalls gets all the calls that were made to CreateAccess. Check the length with:
len(mockedInterface.CreateAccessCalls())
func (*InterfaceMock) CreateGroup ¶
CreateGroup calls CreateGroupFunc.
func (*InterfaceMock) CreateGroupCalls ¶
func (mock *InterfaceMock) CreateGroupCalls() []struct { Ctx context.Context Group *store.Group }
CreateGroupCalls gets all the calls that were made to CreateGroup. Check the length with:
len(mockedInterface.CreateGroupCalls())
func (*InterfaceMock) CreateRepository ¶
func (mock *InterfaceMock) CreateRepository(ctx context.Context, entry *store.RegistryEntry) error
CreateRepository calls CreateRepositoryFunc.
func (*InterfaceMock) CreateRepositoryCalls ¶
func (mock *InterfaceMock) CreateRepositoryCalls() []struct { Ctx context.Context Entry *store.RegistryEntry }
CreateRepositoryCalls gets all the calls that were made to CreateRepository. Check the length with:
len(mockedInterface.CreateRepositoryCalls())
func (*InterfaceMock) CreateUser ¶
CreateUser calls CreateUserFunc.
func (*InterfaceMock) CreateUserCalls ¶
func (mock *InterfaceMock) CreateUserCalls() []struct { Ctx context.Context User *store.User }
CreateUserCalls gets all the calls that were made to CreateUser. Check the length with:
len(mockedInterface.CreateUserCalls())
func (*InterfaceMock) DeleteAccess ¶
func (mock *InterfaceMock) DeleteAccess(ctx context.Context, key string, id interface{}) error
DeleteAccess calls DeleteAccessFunc.
func (*InterfaceMock) DeleteAccessCalls ¶
func (mock *InterfaceMock) DeleteAccessCalls() []struct { Ctx context.Context Key string ID interface{} }
DeleteAccessCalls gets all the calls that were made to DeleteAccess. Check the length with:
len(mockedInterface.DeleteAccessCalls())
func (*InterfaceMock) DeleteGroup ¶
func (mock *InterfaceMock) DeleteGroup(ctx context.Context, id int64) error
DeleteGroup calls DeleteGroupFunc.
func (*InterfaceMock) DeleteGroupCalls ¶
func (mock *InterfaceMock) DeleteGroupCalls() []struct { Ctx context.Context ID int64 }
DeleteGroupCalls gets all the calls that were made to DeleteGroup. Check the length with:
len(mockedInterface.DeleteGroupCalls())
func (*InterfaceMock) DeleteRepository ¶
func (mock *InterfaceMock) DeleteRepository(ctx context.Context, repositoryName string, digest string) error
DeleteRepository calls DeleteRepositoryFunc.
func (*InterfaceMock) DeleteRepositoryCalls ¶
func (mock *InterfaceMock) DeleteRepositoryCalls() []struct { Ctx context.Context RepositoryName string Digest string }
DeleteRepositoryCalls gets all the calls that were made to DeleteRepository. Check the length with:
len(mockedInterface.DeleteRepositoryCalls())
func (*InterfaceMock) DeleteUser ¶
func (mock *InterfaceMock) DeleteUser(ctx context.Context, id int64) error
DeleteUser calls DeleteUserFunc.
func (*InterfaceMock) DeleteUserCalls ¶
func (mock *InterfaceMock) DeleteUserCalls() []struct { Ctx context.Context ID int64 }
DeleteUserCalls gets all the calls that were made to DeleteUser. Check the length with:
len(mockedInterface.DeleteUserCalls())
func (*InterfaceMock) FindAccesses ¶
func (mock *InterfaceMock) FindAccesses(ctx context.Context, filter QueryFilter) (ListResponse, error)
FindAccesses calls FindAccessesFunc.
func (*InterfaceMock) FindAccessesCalls ¶
func (mock *InterfaceMock) FindAccessesCalls() []struct { Ctx context.Context Filter QueryFilter }
FindAccessesCalls gets all the calls that were made to FindAccesses. Check the length with:
len(mockedInterface.FindAccessesCalls())
func (*InterfaceMock) FindGroups ¶
func (mock *InterfaceMock) FindGroups(ctx context.Context, filter QueryFilter) (ListResponse, error)
FindGroups calls FindGroupsFunc.
func (*InterfaceMock) FindGroupsCalls ¶
func (mock *InterfaceMock) FindGroupsCalls() []struct { Ctx context.Context Filter QueryFilter }
FindGroupsCalls gets all the calls that were made to FindGroups. Check the length with:
len(mockedInterface.FindGroupsCalls())
func (*InterfaceMock) FindRepositories ¶
func (mock *InterfaceMock) FindRepositories(ctx context.Context, filter QueryFilter) (ListResponse, error)
FindRepositories calls FindRepositoriesFunc.
func (*InterfaceMock) FindRepositoriesCalls ¶
func (mock *InterfaceMock) FindRepositoriesCalls() []struct { Ctx context.Context Filter QueryFilter }
FindRepositoriesCalls gets all the calls that were made to FindRepositories. Check the length with:
len(mockedInterface.FindRepositoriesCalls())
func (*InterfaceMock) FindUsers ¶
func (mock *InterfaceMock) FindUsers(ctx context.Context, filter QueryFilter, withPassword bool) (ListResponse, error)
FindUsers calls FindUsersFunc.
func (*InterfaceMock) FindUsersCalls ¶
func (mock *InterfaceMock) FindUsersCalls() []struct { Ctx context.Context Filter QueryFilter WithPassword bool }
FindUsersCalls gets all the calls that were made to FindUsers. Check the length with:
len(mockedInterface.FindUsersCalls())
func (*InterfaceMock) GetAccessCalls ¶
func (mock *InterfaceMock) GetAccessCalls() []struct { Ctx context.Context ID int64 }
GetAccessCalls gets all the calls that were made to GetAccess. Check the length with:
len(mockedInterface.GetAccessCalls())
func (*InterfaceMock) GetGroupCalls ¶
func (mock *InterfaceMock) GetGroupCalls() []struct { Ctx context.Context ID int64 }
GetGroupCalls gets all the calls that were made to GetGroup. Check the length with:
len(mockedInterface.GetGroupCalls())
func (*InterfaceMock) GetRepository ¶
func (mock *InterfaceMock) GetRepository(ctx context.Context, entryID int64) (store.RegistryEntry, error)
GetRepository calls GetRepositoryFunc.
func (*InterfaceMock) GetRepositoryCalls ¶
func (mock *InterfaceMock) GetRepositoryCalls() []struct { Ctx context.Context EntryID int64 }
GetRepositoryCalls gets all the calls that were made to GetRepository. Check the length with:
len(mockedInterface.GetRepositoryCalls())
func (*InterfaceMock) GetUserCalls ¶
func (mock *InterfaceMock) GetUserCalls() []struct { Ctx context.Context ID interface{} }
GetUserCalls gets all the calls that were made to GetUser. Check the length with:
len(mockedInterface.GetUserCalls())
func (*InterfaceMock) RepositoryGarbageCollector ¶
func (mock *InterfaceMock) RepositoryGarbageCollector(ctx context.Context, syncDate int64) error
RepositoryGarbageCollector calls RepositoryGarbageCollectorFunc.
func (*InterfaceMock) RepositoryGarbageCollectorCalls ¶
func (mock *InterfaceMock) RepositoryGarbageCollectorCalls() []struct { Ctx context.Context SyncDate int64 }
RepositoryGarbageCollectorCalls gets all the calls that were made to RepositoryGarbageCollector. Check the length with:
len(mockedInterface.RepositoryGarbageCollectorCalls())
func (*InterfaceMock) UpdateAccess ¶
UpdateAccess calls UpdateAccessFunc.
func (*InterfaceMock) UpdateAccessCalls ¶
func (mock *InterfaceMock) UpdateAccessCalls() []struct { Ctx context.Context Access store.Access }
UpdateAccessCalls gets all the calls that were made to UpdateAccess. Check the length with:
len(mockedInterface.UpdateAccessCalls())
func (*InterfaceMock) UpdateGroup ¶
UpdateGroup calls UpdateGroupFunc.
func (*InterfaceMock) UpdateGroupCalls ¶
func (mock *InterfaceMock) UpdateGroupCalls() []struct { Ctx context.Context Group store.Group }
UpdateGroupCalls gets all the calls that were made to UpdateGroup. Check the length with:
len(mockedInterface.UpdateGroupCalls())
func (*InterfaceMock) UpdateRepository ¶
func (mock *InterfaceMock) UpdateRepository(ctx context.Context, conditionClause map[string]interface{}, data map[string]interface{}) error
UpdateRepository calls UpdateRepositoryFunc.
func (*InterfaceMock) UpdateRepositoryCalls ¶
func (mock *InterfaceMock) UpdateRepositoryCalls() []struct { Ctx context.Context ConditionClause map[string]interface{} Data map[string]interface{} }
UpdateRepositoryCalls gets all the calls that were made to UpdateRepository. Check the length with:
len(mockedInterface.UpdateRepositoryCalls())
func (*InterfaceMock) UpdateUser ¶
UpdateUser calls UpdateUserFunc.
func (*InterfaceMock) UpdateUserCalls ¶
func (mock *InterfaceMock) UpdateUserCalls() []struct { Ctx context.Context User store.User }
UpdateUserCalls gets all the calls that were made to UpdateUser. Check the length with:
len(mockedInterface.UpdateUserCalls())
type ListResponse ¶
type ListResponse struct { Total int64 `json:"total"` Data []interface{} `json:"data"` }
ListResponse is a container for return list of result data
type QueryFilter ¶
type QueryFilter struct { Range [2]int64 // array indexes are: 0 - Skip value, 1 - Limit value IDs []int64 `json:"id"` // 'q' - key in filter use for full text search by fields which defined with parameters in filtersBuilder // other filters keys/values applies as exactly condition in query (at where clause) Filters map[string]interface{} Sort []string // ASC or DESC // GroupByFiled set field name to make a unique search by repositories table which contain duplicate repository names linked to different tags // GroupByField value for grouping should define in an engine implementation GroupByField bool }
QueryFilter using for query to data from storage
func FilterFromURLExtractor ¶
func FilterFromURLExtractor(requestedURL *url.URL) (filters QueryFilter, err error)
FilterFromURLExtractor extracts param from URL and pass it to query which manipulation data in storage