Files
EdgeAPI/internal/db/models/http_access_log_policy_dao.go

184 lines
4.7 KiB
Go
Raw Permalink Normal View History

2020-09-20 11:56:30 +08:00
package models
import (
2021-07-29 16:50:59 +08:00
"github.com/TeaOSLab/EdgeAPI/internal/errors"
2020-09-20 11:56:30 +08:00
_ "github.com/go-sql-driver/mysql"
"github.com/iwind/TeaGo/Tea"
"github.com/iwind/TeaGo/dbs"
)
const (
HTTPAccessLogPolicyStateEnabled = 1 // 已启用
HTTPAccessLogPolicyStateDisabled = 0 // 已禁用
)
type HTTPAccessLogPolicyDAO dbs.DAO
func NewHTTPAccessLogPolicyDAO() *HTTPAccessLogPolicyDAO {
return dbs.NewDAO(&HTTPAccessLogPolicyDAO{
DAOObject: dbs.DAOObject{
DB: Tea.Env,
Table: "edgeHTTPAccessLogPolicies",
Model: new(HTTPAccessLogPolicy),
PkName: "id",
},
}).(*HTTPAccessLogPolicyDAO)
}
2020-10-13 20:05:13 +08:00
var SharedHTTPAccessLogPolicyDAO *HTTPAccessLogPolicyDAO
func init() {
dbs.OnReady(func() {
SharedHTTPAccessLogPolicyDAO = NewHTTPAccessLogPolicyDAO()
})
}
2020-09-20 11:56:30 +08:00
2021-07-29 16:50:59 +08:00
// Init 初始化
2020-09-26 08:06:40 +08:00
func (this *HTTPAccessLogPolicyDAO) Init() {
_ = this.DAOObject.Init()
2020-09-26 08:06:40 +08:00
}
2021-07-29 16:50:59 +08:00
// EnableHTTPAccessLogPolicy 启用条目
func (this *HTTPAccessLogPolicyDAO) EnableHTTPAccessLogPolicy(tx *dbs.Tx, id int64) error {
_, err := this.Query(tx).
2020-09-20 11:56:30 +08:00
Pk(id).
Set("state", HTTPAccessLogPolicyStateEnabled).
Update()
return err
}
2021-07-29 16:50:59 +08:00
// DisableHTTPAccessLogPolicy 禁用条目
func (this *HTTPAccessLogPolicyDAO) DisableHTTPAccessLogPolicy(tx *dbs.Tx, id int64) error {
_, err := this.Query(tx).
2020-09-20 11:56:30 +08:00
Pk(id).
Set("state", HTTPAccessLogPolicyStateDisabled).
Update()
return err
}
2021-07-29 16:50:59 +08:00
// FindEnabledHTTPAccessLogPolicy 查找启用中的条目
func (this *HTTPAccessLogPolicyDAO) FindEnabledHTTPAccessLogPolicy(tx *dbs.Tx, id int64) (*HTTPAccessLogPolicy, error) {
result, err := this.Query(tx).
2020-09-20 11:56:30 +08:00
Pk(id).
Attr("state", HTTPAccessLogPolicyStateEnabled).
Find()
if result == nil {
return nil, err
}
return result.(*HTTPAccessLogPolicy), err
}
2021-07-29 16:50:59 +08:00
// FindHTTPAccessLogPolicyName 根据主键查找名称
func (this *HTTPAccessLogPolicyDAO) FindHTTPAccessLogPolicyName(tx *dbs.Tx, id int64) (string, error) {
return this.Query(tx).
2020-09-20 11:56:30 +08:00
Pk(id).
Result("name").
FindStringCol("")
}
2021-07-29 16:50:59 +08:00
// CountAllEnabledPolicies 计算策略数量
func (this *HTTPAccessLogPolicyDAO) CountAllEnabledPolicies(tx *dbs.Tx) (int64, error) {
return this.Query(tx).
State(HTTPAccessLogPolicyStateEnabled).
Count()
}
// ListEnabledPolicies 查找所有可用策略信息
func (this *HTTPAccessLogPolicyDAO) ListEnabledPolicies(tx *dbs.Tx, offset int64, size int64) (result []*HTTPAccessLogPolicy, err error) {
_, err = this.Query(tx).
2020-09-20 11:56:30 +08:00
State(HTTPAccessLogPolicyStateEnabled).
Desc("isOn").
2020-09-20 11:56:30 +08:00
DescPk().
2021-07-29 16:50:59 +08:00
Offset(offset).
Limit(size).
2020-09-20 11:56:30 +08:00
Slice(&result).
FindAll()
return
}
2021-07-29 16:50:59 +08:00
// FindAllEnabledAndOnPolicies 获取所有的策略信息
func (this *HTTPAccessLogPolicyDAO) FindAllEnabledAndOnPolicies(tx *dbs.Tx) (result []*HTTPAccessLogPolicy, err error) {
_, err = this.Query(tx).
State(HTTPAccessLogPolicyStateEnabled).
Attr("isOn", true).
Slice(&result).
FindAll()
return
}
// CreatePolicy 创建策略
func (this *HTTPAccessLogPolicyDAO) CreatePolicy(tx *dbs.Tx, name string, policyType string, optionsJSON []byte, condsJSON []byte, isPublic bool, firewallOnly bool, disableDefaultDB bool) (policyId int64, err error) {
2021-07-29 16:50:59 +08:00
var op = NewHTTPAccessLogPolicyOperator()
op.Name = name
op.Type = policyType
if len(optionsJSON) > 0 {
op.Options = optionsJSON
2020-09-20 11:56:30 +08:00
}
2021-07-29 16:50:59 +08:00
if len(condsJSON) > 0 {
op.Conds = condsJSON
2020-09-20 11:56:30 +08:00
}
2021-07-29 16:50:59 +08:00
op.IsPublic = isPublic
op.IsOn = true
op.FirewallOnly = firewallOnly
op.DisableDefaultDB = disableDefaultDB
2021-07-29 16:50:59 +08:00
op.State = HTTPAccessLogPolicyStateEnabled
return this.SaveInt64(tx, op)
}
2020-09-20 11:56:30 +08:00
2021-07-29 16:50:59 +08:00
// UpdatePolicy 修改策略
func (this *HTTPAccessLogPolicyDAO) UpdatePolicy(tx *dbs.Tx, policyId int64, name string, optionsJSON []byte, condsJSON []byte, isPublic bool, firewallOnly bool, disableDefaultDB bool, isOn bool) error {
2021-07-29 16:50:59 +08:00
if policyId <= 0 {
return errors.New("invalid policyId")
}
oldOne, err := this.Query(tx).
Pk(policyId).
Find()
if err != nil {
return err
}
if oldOne == nil {
return nil
2020-09-20 11:56:30 +08:00
}
2021-07-29 16:50:59 +08:00
var op = NewHTTPAccessLogPolicyOperator()
op.Id = policyId
op.Name = name
if len(optionsJSON) > 0 {
op.Options = optionsJSON
} else {
op.Options = "{}"
}
if len(condsJSON) > 0 {
op.Conds = condsJSON
} else {
op.Conds = "{}"
}
// 版本号总是加1
op.Version = dbs.SQL("version+1")
2020-09-20 11:56:30 +08:00
2021-07-29 16:50:59 +08:00
op.IsPublic = isPublic
op.FirewallOnly = firewallOnly
op.DisableDefaultDB = disableDefaultDB
2021-07-29 16:50:59 +08:00
op.IsOn = isOn
return this.Save(tx, op)
}
// CancelAllPublicPolicies 取消别的公用的策略
func (this *HTTPAccessLogPolicyDAO) CancelAllPublicPolicies(tx *dbs.Tx) error {
return this.Query(tx).
State(HTTPAccessLogPolicyStateEnabled).
Set("isPublic", 0).
UpdateQuickly()
}
// FindCurrentPublicPolicyId 取得当前的公用策略
func (this *HTTPAccessLogPolicyDAO) FindCurrentPublicPolicyId(tx *dbs.Tx) (int64, error) {
return this.Query(tx).
State(HTTPAccessLogPolicyStateEnabled).
Attr("isPublic", 1).
ResultPk().
FindInt64Col(0)
2020-09-20 11:56:30 +08:00
}