package models import ( "WorldEpcho/src/datasource" "errors" "github.com/go-xorm/xorm" "log" ) // SoulAsset 资产表结构 type SoulAsset struct { Id int64 `xorm:"pk autoincr" json:"asset_id"` DigitalId int64 `xorm:"notnull" json:"digital_id"` ModelDriverType string `json:"model_driver_type"` ModelPath string `json:"model_path"` //模型资产路径 VoiceType string `json:"voice_type"` //人物声线类型 } /* 定义一个结构体类型DigitalPersonInfo用于保存数字人信息和数字人资产信息 */ type DigitalPersonInfo struct { DigitalPerson *DigitalPerson `json:"digital_person"` SoulAsset *SoulAsset `json:"soul_asset"` } // ModelDriver 模型驱动枚举类型 type ModelDriver string const ( ModelDriver2D ModelDriver = "2d" ModelDriver3D ModelDriver = "3d" ModelDriverLive ModelDriver = "live2d" ) // getAssets 查询所有资产 func GetAssets() ([]SoulAsset, error) { var assets []SoulAsset err := datasource.Engine.Find(&assets) if err != nil { return nil, err } return assets, nil } // createAsset 创建新的数字人资产 func CreateAsset(asset *SoulAsset, session *xorm.Session) error { _, err := session.Insert(asset) if err != nil { return errors.New("创建资产对象失败! ") } return nil } // deleteAsset 删除资产 func DeleteAsset(id string) error { _, err := datasource.Engine.Where("id = ?", id).Delete(&SoulAsset{}) if err != nil { return err } return nil } // updateAsset 更新数字人资产 func UpdateAsset(digital_id int64, asset *SoulAsset, session *xorm.Session) error { _, err := session.Where("digital_id = ?", digital_id).Update(asset) if err != nil { return err } log.Println("UpdateAsset ...after... asset", asset) return nil } // 从资产表中查询资产对象 func GetSoulAsset(id int64, session *xorm.Session) (SoulAsset, error) { var asset SoulAsset has, err := session.ID(id).Get(&asset) if err != nil { return asset, err } if !has { return asset, errors.New("Asset not found") } return asset, nil }