Initial cloud-services repo - gateway service + pkg modules

This commit is contained in:
Chris Rai
2026-01-30 23:14:52 -05:00
commit fbb820d7b3
1037 changed files with 171318 additions and 0 deletions

109
pkg/db/queries/apitokens.go Normal file
View File

@@ -0,0 +1,109 @@
package queries
import (
"fmt"
"time"
"fiskerinc.com/modules/common"
"fiskerinc.com/modules/validator"
"github.com/go-pg/pg/v10/orm"
"github.com/pkg/errors"
)
type APITokensInterface interface {
Delete(token string) (orm.Result, error)
Insert(apitoken common.APIToken) (orm.Result, error)
Update(apitoken *common.APIToken) (orm.Result, error)
Get(token string) (*common.APIToken, error)
Select(apitoken *common.APIToken, paging *PageQueryOptions) ([]common.APIToken, error)
Count(apitoken *common.APIToken) (int, error)
}
type APITokens struct {
QueryBase
}
func (kv *APITokens) Delete(token string) (orm.Result, error) {
if token == "" {
return nil, errors.WithStack(&validator.FieldError{
ErrorMsg: "token required",
})
}
conn := kv.GetDBConn()
result, err := conn.Model(&common.APIToken{
Token: token,
}).WherePK().Delete()
return result, errors.WithStack(err)
}
func (kv *APITokens) Insert(apiToken common.APIToken) (orm.Result, error) {
err := validator.ValidateStruct(apiToken)
if err != nil {
return nil, errors.WithStack(err)
}
return kv.insert(&apiToken)
}
func (kv *APITokens) Get(token string) (*common.APIToken, error) {
if token == "" {
return nil, errors.WithStack(&validator.FieldError{
ErrorMsg: "token required",
})
}
keyvalues := []common.APIToken{}
err := kv.GetDBConn().
Model(&keyvalues).
Where("token = ?", token).
Where("expires_at > ? or expires_at is null", time.Now()).
Select()
if err != nil {
return nil, errors.WithStack(err)
}
if len(keyvalues) == 0 {
return nil, errors.New("token not found")
}
return &keyvalues[0], nil
}
func (kv *APITokens) selectFilter(query *orm.Query, filter *common.APIToken) {
if filter.Token != "" {
query.Where("token = ?", filter.Token)
}
if filter.Roles != "" {
query.Where("roles LIKE ?", fmt.Sprintf("%%%s%%", filter.Roles))
}
if filter.Description != "" {
query.Where("description = ?", filter.Description)
}
}
func (kv *APITokens) Select(filter *common.APIToken, paging *PageQueryOptions) ([]common.APIToken, error) {
items := []common.APIToken{}
query := kv.GetDBConn().Model(&items)
kv.selectFilter(query, filter)
if paging != nil {
kv.pageQuery(query, paging)
}
err := query.Select()
return items, errors.WithStack(err)
}
func (kv *APITokens) Update(model *common.APIToken) (orm.Result, error) {
return kv.update(model)
}
func (kv *APITokens) Count(apitoken *common.APIToken) (int, error) {
return kv.count(apitoken)
}