Files
waf-platform/EdgeAPI/internal/db/models/traffic_package_dao_plus.go

61 lines
1.6 KiB
Go

// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
//go:build plus
package models
import (
"github.com/TeaOSLab/EdgeAPI/internal/errors"
"github.com/TeaOSLab/EdgeCommon/pkg/userconfigs"
"github.com/iwind/TeaGo/dbs"
)
// CreatePackage 创建流量包
func (this *TrafficPackageDAO) CreatePackage(tx *dbs.Tx, size int32, unit string) (int64, error) {
if !userconfigs.IsValidTrafficPackageSizeUnit(unit) {
return 0, errors.New("invalid package size unit '" + unit + "'")
}
var op = NewTrafficPackageOperator()
op.Size = size
op.Unit = unit
op.Bytes = userconfigs.TrafficPackageSizeBytes(size, unit)
op.IsOn = true
op.State = TrafficPackageStateEnabled
return this.SaveInt64(tx, op)
}
// UpdatePackage 修改流量包
func (this *TrafficPackageDAO) UpdatePackage(tx *dbs.Tx, packageId int64, isOn bool) error {
if packageId <= 0 {
return errors.New("invalid packageId")
}
var op = NewTrafficPackageOperator()
op.Id = packageId
op.IsOn = isOn
return this.Save(tx, op)
}
// FindAllPackages 查找所有流量包
func (this *TrafficPackageDAO) FindAllPackages(tx *dbs.Tx) (result []*TrafficPackage, err error) {
_, err = this.Query(tx).
State(TrafficPackageStateEnabled).
Asc("bytes").
Asc("id").
Slice(&result).
FindAll()
return
}
// FindAllAvailablePackages 查找所有可用流量包
func (this *TrafficPackageDAO) FindAllAvailablePackages(tx *dbs.Tx) (result []*TrafficPackage, err error) {
_, err = this.Query(tx).
State(TrafficPackageStateEnabled).
Attr("isOn", true).
Asc("bytes").
Asc("id").
Slice(&result).
FindAll()
return
}