98 lines
2.5 KiB
Go
98 lines
2.5 KiB
Go
// Package database define database operation functions
|
|
package database
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"modelRT/diagram"
|
|
"modelRT/model"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// ParseAttrToken define return the attribute model interface based on the input attribute token. doc addr http://server.baseware.net:6875/books/product-design-docs/page/d6baf
|
|
func ParseAttrToken(ctx context.Context, tx *gorm.DB, attrToken string) (model.AttrModelInterface, error) {
|
|
rs := diagram.NewRedisString(ctx, attrToken, "", 10, true)
|
|
|
|
attrSlice := strings.Split(attrToken, ".")
|
|
attrLen := len(attrSlice)
|
|
if attrLen == 4 {
|
|
short := &model.ShortAttrInfo{
|
|
AttrGroupName: attrSlice[2],
|
|
AttrKey: attrSlice[3],
|
|
}
|
|
err := FillingShortAttrModel(ctx, tx, attrSlice, short)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
attrValue, err := rs.Get(attrToken)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
short.AttrValue = attrValue
|
|
return short, nil
|
|
} else if attrLen == 7 {
|
|
long := &model.LongAttrInfo{
|
|
AttrGroupName: attrSlice[5],
|
|
AttrKey: attrSlice[6],
|
|
}
|
|
err := FillingLongAttrModel(ctx, tx, attrSlice, long)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
attrValue, err := rs.Get(attrToken)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
long.AttrValue = attrValue
|
|
return long, nil
|
|
}
|
|
return nil, errors.New("invalid attribute token format")
|
|
}
|
|
|
|
// FillingShortAttrModel define filling short attribute model info
|
|
func FillingShortAttrModel(ctx context.Context, tx *gorm.DB, attrItems []string, attrModel *model.ShortAttrInfo) error {
|
|
component, err := QueryComponentByNsPath(ctx, tx, attrItems[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
attrModel.ComponentInfo = &component
|
|
return nil
|
|
}
|
|
|
|
// FillingLongAttrModel define filling long attribute model info
|
|
func FillingLongAttrModel(ctx context.Context, tx *gorm.DB, attrItems []string, attrModel *model.LongAttrInfo) error {
|
|
grid, err := QueryGridByTagName(ctx, tx, attrItems[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
attrModel.GridInfo = &grid
|
|
zone, err := QueryZoneByTagName(ctx, tx, attrItems[1])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
attrModel.ZoneInfo = &zone
|
|
station, err := QueryStationByTagName(ctx, tx, attrItems[2])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
attrModel.StationInfo = &station
|
|
component, err := QueryComponentByNsPath(ctx, tx, attrItems[3])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
attrModel.ComponentInfo = &component
|
|
return nil
|
|
}
|
|
|
|
// QueryAttrValueFromRedis define query attribute value from redis by attrKey
|
|
func QueryAttrValueFromRedis(attrKey string) string {
|
|
fmt.Println(attrKey)
|
|
return ""
|
|
}
|