Files
cloud-services/pkg/db/queries/supplier_organizations.go

93 lines
2.5 KiB
Go

package queries
import (
"fiskerinc.com/modules/common"
s "fiskerinc.com/modules/security"
"github.com/go-pg/pg/v10/orm"
)
type SupplierOrganizationsInterface interface {
Count(account *common.SupplierOrganization) (int, error)
Insert(supplierOrganization *common.SupplierOrganization) (orm.Result, error)
Select(account *common.SupplierOrganization, paging *PageQueryOptions) ([]common.SupplierOrganization, error)
}
type SupplierOrganization struct {
QueryBase
}
func (so *SupplierOrganization) Count(supplierOrganization *common.SupplierOrganization) (int, error) {
return so.count(supplierOrganization)
}
func (so *SupplierOrganization) Insert(supplierOrganization *common.SupplierOrganization) (orm.Result, error) {
enc := s.Encrypt{}
encryptor, err := enc.GetEncryptor()
if err != nil {
return nil, err
}
supplierOrganization.PubKey.SetBytes(encryptor.EncryptChunk(supplierOrganization.PubKey.Bytes()))
supplierOrganization.PrivKey.SetBytes(encryptor.EncryptChunk(supplierOrganization.PrivKey.Bytes()))
return so.GetDBConn().Model(supplierOrganization).Insert()
}
func (so *SupplierOrganization) Select(filter *common.SupplierOrganization, paging *PageQueryOptions) ([]common.SupplierOrganization, error) {
supplierOrganizations := []common.SupplierOrganization{}
query := so.GetDBConn().Model(&supplierOrganizations)
so.selectFilter(query, filter)
if paging != nil {
so.pageQuery(query, paging)
}
err := query.Select()
for _, supplierOrganization := range supplierOrganizations {
err = so.decryptSupplierOrganization(&supplierOrganization)
if err != nil {
return nil, err
}
}
return supplierOrganizations, err
}
func (sf *SupplierOrganization) selectFilter(query *orm.Query, filter *common.SupplierOrganization) {
if filter.DomainName != "" {
query.Where("domain_name = ?", filter.DomainName)
}
if filter.SupplierOrganizationID != 0 {
query.Where("supplier_organization_id = ?", filter.SupplierOrganizationID)
}
}
func (si *SupplierOrganization) decryptSupplierOrganization(supplierOrganization *common.SupplierOrganization) error {
enc := s.Encrypt{}
encryptor, err := enc.GetEncryptor()
if err != nil {
return err
}
if supplierOrganization.PubKey != nil {
key, err := encryptor.DecryptChunk(supplierOrganization.PubKey.Bytes())
if err != nil {
return err
}
supplierOrganization.PubKey.SetBytes(key)
}
if supplierOrganization.PrivKey != nil {
key, err := encryptor.DecryptChunk(supplierOrganization.PrivKey.Bytes())
if err != nil {
return err
}
supplierOrganization.PrivKey.SetBytes(key)
}
return nil
}