Initial commit (code only without large binaries)
This commit is contained in:
81
EdgeAPI/internal/db/models/message_media_dao_plus.go
Normal file
81
EdgeAPI/internal/db/models/message_media_dao_plus.go
Normal file
@@ -0,0 +1,81 @@
|
||||
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||||
//go:build plus
|
||||
|
||||
package models
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/senders/mediasenders"
|
||||
"github.com/iwind/TeaGo/dbs"
|
||||
"github.com/iwind/TeaGo/lists"
|
||||
)
|
||||
|
||||
// UpdateMessageMedias 设置当前所有可用的媒介
|
||||
func (this *MessageMediaDAO) UpdateMessageMedias(tx *dbs.Tx, mediaDefinitions []*mediasenders.MediaDefinition) error {
|
||||
// 新的媒介信息
|
||||
var mediaTypes = []string{}
|
||||
for index, m := range mediaDefinitions {
|
||||
var order = len(mediaDefinitions) - index
|
||||
var mediaType = m.Code
|
||||
mediaTypes = append(mediaTypes, mediaType)
|
||||
|
||||
var name = m.Name
|
||||
var description = m.Description
|
||||
var userDescription = m.User
|
||||
var isOn = m.IsOn
|
||||
|
||||
mediaId, err := this.Query(tx).
|
||||
ResultPk().
|
||||
Attr("type", mediaType).
|
||||
FindInt64Col(0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var op = NewMessageMediaOperator()
|
||||
if mediaId > 0 {
|
||||
op.Id = mediaId
|
||||
}
|
||||
op.Name = name
|
||||
op.Type = mediaType
|
||||
op.Description = description
|
||||
op.UserDescription = userDescription
|
||||
op.IsOn = isOn
|
||||
op.Order = order
|
||||
op.State = MessageMediaStateEnabled
|
||||
err = this.Save(tx, op)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 老的媒介信息
|
||||
ones, err := this.Query(tx).
|
||||
FindAll()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, one := range ones {
|
||||
var mediaType = one.(*MessageMedia).Type
|
||||
if !lists.ContainsString(mediaTypes, mediaType) {
|
||||
err := this.Query(tx).
|
||||
Pk(one.(*MessageMedia).Id).
|
||||
Set("state", MessageMediaStateDisabled).
|
||||
UpdateQuickly()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// FindEnabledMediaWithType 根据类型查找媒介
|
||||
func (this *MessageMediaDAO) FindEnabledMediaWithType(tx *dbs.Tx, mediaType string) (*MessageMedia, error) {
|
||||
one, err := this.Query(tx).
|
||||
Attr("type", mediaType).
|
||||
State(MessageMediaStateEnabled).
|
||||
Find()
|
||||
if one == nil || err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return one.(*MessageMedia), nil
|
||||
}
|
||||
Reference in New Issue
Block a user