|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package models
-
- import (
- "encoding/json"
- cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
- stgmod "gitlink.org.cn/cloudream/storage/common/models"
- "gorm.io/datatypes"
- )
-
- // LocalHub 本地结构体,嵌入cdssdk.Hub
- type LocalHub struct {
- cdssdk.Hub
- }
-
- type ConcreteHubType struct {
- Address string
- }
-
- func (c ConcreteHubType) GetStorageType() string {
- return c.Address
- }
-
- func (c ConcreteHubType) String() string {
- return c.Address
- }
-
- func (s *LocalHub) UnmarshalJSON(data []byte) error {
- // 定义一个临时结构体来解析 JSON
- type Alias LocalHub
- aux := &struct {
- Address string `json:"address"`
- *Alias
- }{
- Alias: (*Alias)(s),
- }
-
- if err := json.Unmarshal(data, &aux); err != nil {
- return err
- }
-
- s.Address = ConcreteHubType{Address: aux.Address}
- return nil
- }
-
- func ProcessHubInfo(data stgmod.HubInfo) {
- repo := NewHubRepository(DB)
- jsonData, _ := json.Marshal(data.Body.HubInfo.Address)
- HubInfo := &Hub{
- HubID: cdssdk.HubID(data.Body.HubID),
- Name: data.Body.HubInfo.Name,
- Address: datatypes.JSON(jsonData),
- }
-
- //先判断传输数据的类型
- switch data.Body.Type {
- case "add":
- err := repo.CreateHub(HubInfo)
- if err != nil {
- return
- }
- case "update":
- err := repo.UpdateHub(HubInfo)
- if err != nil {
- return
- }
- case "delete":
- err := repo.DeleteHub(HubInfo)
- if err != nil {
- return
- }
- default:
- return
- }
- }
|