Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
60
pkg/db/queries/apicalls.go
Normal file
60
pkg/db/queries/apicalls.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package queries
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"fiskerinc.com/modules/common"
|
||||
"fiskerinc.com/modules/validator"
|
||||
|
||||
"github.com/go-pg/pg/v10/orm"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type APICallsInterface interface {
|
||||
Insert(apiCall common.APICall) (orm.Result, error)
|
||||
Search(filter common.APICallsSearch, paging *PageQueryOptions) ([]common.APICall, int, error)
|
||||
}
|
||||
|
||||
type APICalls struct {
|
||||
QueryBase
|
||||
}
|
||||
|
||||
func (kv *APICalls) Insert(apiCall common.APICall) (orm.Result, error) {
|
||||
err := validator.ValidateStruct(apiCall)
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
return kv.insert(&apiCall)
|
||||
}
|
||||
|
||||
func (kv *APICalls) Search(filter common.APICallsSearch, paging *PageQueryOptions) ([]common.APICall, int, error) {
|
||||
calls := []common.APICall{}
|
||||
query := kv.GetDBConn().Model(&calls)
|
||||
|
||||
kv.pageQuery(query, paging)
|
||||
kv.applyFilters(query, filter)
|
||||
count, err := query.SelectAndCount()
|
||||
if err != nil {
|
||||
return nil, 0, errors.WithStack(err)
|
||||
}
|
||||
|
||||
return calls, count, nil
|
||||
}
|
||||
|
||||
func (kv *APICalls) applyFilters(query *orm.Query, filter common.APICallsSearch) {
|
||||
if filter.Search != "" {
|
||||
search := strings.ToLower("%" + filter.Search + "%")
|
||||
query.Where("LOWER(client_id) LIKE ? "+
|
||||
"OR LOWER(endpoint) LIKE ? "+
|
||||
"OR LOWER(method) LIKE ?", search, search, search)
|
||||
}
|
||||
|
||||
if filter.From != nil {
|
||||
query.Where("created_at >= ?", filter.From)
|
||||
}
|
||||
|
||||
if filter.To != nil {
|
||||
query.Where("created_at <= ?", filter.To)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user