parent
41e0dec74c
commit
4309653160
@ -0,0 +1,66 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
// Policy 存储策略
|
||||
type Policy struct {
|
||||
// 表字段
|
||||
gorm.Model
|
||||
Name string
|
||||
Type string
|
||||
Server string
|
||||
BucketName string
|
||||
IsPrivate bool
|
||||
BaseURL string
|
||||
AccessKey string `gorm:"size:512"`
|
||||
SecretKey string `gorm:"size:512"`
|
||||
MaxSize uint64
|
||||
AutoRename bool
|
||||
DirNameRule string
|
||||
FileNameRule string
|
||||
IsOriginLinkEnable bool
|
||||
Options string `gorm:"size:4096"`
|
||||
|
||||
// 数据库忽略字段
|
||||
OptionsSerialized PolicyOption `gorm:"-"`
|
||||
}
|
||||
|
||||
// PolicyOption 非公有的存储策略属性
|
||||
type PolicyOption struct {
|
||||
OPName string `json:"op_name"`
|
||||
OPPassword string `json:"op_pwd"`
|
||||
FileType []string `json:"file_type"`
|
||||
MimeType string `json:"mimetype"`
|
||||
SpeedLimit int `json:"speed_limit"`
|
||||
RangeTransferEnabled bool `json:"range_transfer_enabled"`
|
||||
}
|
||||
|
||||
// GetPolicyByID 用ID获取存储策略
|
||||
func GetPolicyByID(ID interface{}) (Policy, error) {
|
||||
var policy Policy
|
||||
result := DB.First(&policy, ID)
|
||||
return policy, result.Error
|
||||
}
|
||||
|
||||
// AfterFind 找到上传策略后的钩子
|
||||
func (policy *Policy) AfterFind() (err error) {
|
||||
// 解析上传策略设置到OptionsSerialized
|
||||
err = json.Unmarshal([]byte(policy.Options), &policy.OptionsSerialized)
|
||||
return err
|
||||
}
|
||||
|
||||
// BeforeSave Save策略前的钩子
|
||||
func (policy *Policy) BeforeSave() (err error) {
|
||||
err = policy.SerializeOptions()
|
||||
return err
|
||||
}
|
||||
|
||||
//SerializeOptions 将序列后的Option写入到数据库字段
|
||||
func (policy *Policy) SerializeOptions() (err error) {
|
||||
optionsValue, err := json.Marshal(&policy.OptionsSerialized)
|
||||
policy.Options = string(optionsValue)
|
||||
return err
|
||||
}
|
Loading…
Reference in new issue