61 lines
1.6 KiB
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
|
|
}
|