feat(token-parse): 1. add func of parse token 2.add func of query grid、zone、station、component 3.modify package of constant

http://server.baseware.net:9000/project/datart/task/22
This commit is contained in:
douxu 2025-08-05 15:20:07 +08:00
parent 1b6211b34b
commit 3e833909d1
27 changed files with 250 additions and 17 deletions

View File

@ -5,7 +5,7 @@ import (
"sort"
"sync"
constants "modelRT/constant"
"modelRT/constants"
)
var (

View File

@ -2,7 +2,7 @@
package config
import (
constants "modelRT/constant"
"modelRT/constants"
)
// AnchorParamListConfig define anchor params list config struct

View File

@ -7,3 +7,5 @@ const (
// LongAttrKeyLenth define long attribute key length
LongAttrKeyLenth int = 7
)
// component、base_extend、rated、setup、model、stable、bay、craft、integrity、behavior

View File

@ -0,0 +1,79 @@
// Package database define database operation functions
package database
import (
"context"
"errors"
"strings"
"modelRT/model"
"gorm.io/gorm"
)
// ParseAttrToken define return the attribute model interface based on the input attribute token
func ParseAttrToken(ctx context.Context, tx *gorm.DB, attrToken string) (model.AttrModelInterface, error) {
attrSlice := strings.Split(attrToken, ".")
attrLen := len(attrSlice)
if attrLen == 4 {
short := &model.ShortAttrInfo{
AttrGroupName: attrSlice[2],
AttrKey: attrSlice[3],
// TODO use redis query
// AttrValue: attrSlice[2],
}
err := FillingShortAttrModel(ctx, tx, attrSlice, short)
if err != nil {
return nil, err
}
return short, nil
} else if attrLen == 7 {
long := &model.LongAttrInfo{
AttrGroupName: attrSlice[5],
AttrKey: attrSlice[6],
// TODO use redis query
// AttrValue: attrSlice[5],
}
err := FillingLongAttrModel(ctx, tx, attrSlice, long)
if err != nil {
return nil, err
}
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 := QueryGridByName(ctx, tx, attrItems[0])
if err != nil {
return err
}
attrModel.GridInfo = &grid
zone, err := QueryZoneByName(ctx, tx, attrItems[1])
if err != nil {
return err
}
attrModel.ZoneInfo = &zone
station, err := QueryStationByName(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
}

View File

@ -69,3 +69,17 @@ func QueryComponentByPageID(ctx context.Context, tx *gorm.DB, uuid uuid.UUID) (o
}
return component, nil
}
// QueryComponentByNsPath return the result of query circuit diagram component info by ns path from postgresDB
func QueryComponentByNsPath(ctx context.Context, tx *gorm.DB, nsPath string) (orm.Component, error) {
var component orm.Component
// ctx超时判断
cancelCtx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
result := tx.WithContext(cancelCtx).Where("NAME = ? ", nsPath).Clauses(clause.Locking{Strength: "UPDATE"}).Find(&component)
if result.Error != nil {
return orm.Component{}, result.Error
}
return component, nil
}

26
database/query_grid.go Normal file
View File

@ -0,0 +1,26 @@
// Package database define database operation functions
package database
import (
"context"
"time"
"modelRT/orm"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
// QueryGridByName return the result of query circuit diagram grid info by name from postgresDB
func QueryGridByName(ctx context.Context, tx *gorm.DB, name string) (orm.Grid, error) {
var grid orm.Grid
// ctx超时判断
cancelCtx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
result := tx.WithContext(cancelCtx).Where("NAME = ? ", name).Clauses(clause.Locking{Strength: "UPDATE"}).Find(&grid)
if result.Error != nil {
return orm.Grid{}, result.Error
}
return grid, nil
}

26
database/query_station.go Normal file
View File

@ -0,0 +1,26 @@
// Package database define database operation functions
package database
import (
"context"
"time"
"modelRT/orm"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
// QueryStationByName return the result of query circuit diagram Station info by name from postgresDB
func QueryStationByName(ctx context.Context, tx *gorm.DB, name string) (orm.Station, error) {
var station orm.Station
// ctx超时判断
cancelCtx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
result := tx.WithContext(cancelCtx).Where("NAME = ? ", name).Clauses(clause.Locking{Strength: "UPDATE"}).Find(&station)
if result.Error != nil {
return orm.Station{}, result.Error
}
return station, nil
}

View File

@ -6,7 +6,7 @@ import (
"fmt"
"time"
constants "modelRT/constant"
"modelRT/constants"
"modelRT/diagram"
"modelRT/logger"
"modelRT/orm"

26
database/query_zone.go Normal file
View File

@ -0,0 +1,26 @@
// Package database define database operation functions
package database
import (
"context"
"time"
"modelRT/orm"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
// QueryZoneByName return the result of query circuit diagram Zone info by name from postgresDB
func QueryZoneByName(ctx context.Context, tx *gorm.DB, name string) (orm.Zone, error) {
var zone orm.Zone
// ctx超时判断
cancelCtx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
result := tx.WithContext(cancelCtx).Where("NAME = ? ", name).Clauses(clause.Locking{Strength: "UPDATE"}).Find(&zone)
if result.Error != nil {
return orm.Zone{}, result.Error
}
return zone, nil
}

View File

@ -7,7 +7,7 @@ import (
"time"
"modelRT/common/errcode"
constants "modelRT/constant"
"modelRT/constants"
"modelRT/network"
"modelRT/orm"

View File

@ -5,7 +5,7 @@ import (
"fmt"
"sync"
constants "modelRT/constant"
"modelRT/constants"
"modelRT/network"
"github.com/gofrs/uuid"

View File

@ -6,7 +6,7 @@ import (
"strconv"
"modelRT/alert"
constants "modelRT/constant"
"modelRT/constants"
"modelRT/logger"
"modelRT/network"

View File

@ -8,7 +8,7 @@ import (
"time"
"modelRT/common/errcode"
constants "modelRT/constant"
"modelRT/constants"
"modelRT/database"
"modelRT/diagram"
"modelRT/logger"

View File

@ -6,7 +6,7 @@ import (
"strconv"
"modelRT/alert"
constants "modelRT/constant"
"modelRT/constants"
"modelRT/logger"
"modelRT/network"

View File

@ -6,7 +6,7 @@ import (
"sync"
"modelRT/config"
constants "modelRT/constant"
"modelRT/constants"
"github.com/natefinch/lumberjack"
"go.uber.org/zap"

View File

@ -1,7 +1,9 @@
// Package model define model struct of model runtime service
package model
import "modelRT/orm"
import (
"modelRT/orm"
)
// AttrModelInterface define basic attr model type interface
type AttrModelInterface interface {
@ -14,10 +16,69 @@ type AttrModelInterface interface {
// LongAttrInfo structure define long attribute key info of component
type LongAttrInfo struct {
AttrKey string `json:"attr_key"`
AttrGroupName string
AttrKey string
AttrValue interface{}
GridInfo *orm.Grid
ZoneInfo *orm.Zone
StationInfo *orm.Station
ComponentInfo *orm.Component
}
// GetGridInfo define return the grid information in the long attribute
func (l *LongAttrInfo) GetGridInfo() *orm.Grid {
return l.GridInfo
}
// GetZoneInfo define return the zone information in the long attribute
func (l *LongAttrInfo) GetZoneInfo() *orm.Zone {
return l.ZoneInfo
}
// GetStationInfo define return the station information in the long attribute
func (l *LongAttrInfo) GetStationInfo() *orm.Station {
return l.StationInfo
}
// GetComponentInfo define return the component information in the long attribute
func (l *LongAttrInfo) GetComponentInfo() *orm.Component {
return l.ComponentInfo
}
// IsLocal define return the is_local information in the long attribute
func (l *LongAttrInfo) IsLocal() bool {
return true
}
// ShortAttrInfo structure define short attribute key info of component
type ShortAttrInfo struct {
AttrKey string `json:"attr_key"`
AttrGroupName string
AttrKey string
AttrValue interface{}
ComponentInfo *orm.Component
}
// GetGridInfo define return the grid information in the short attribute
func (s *ShortAttrInfo) GetGridInfo() *orm.Grid {
return nil
}
// GetZoneInfo define return the zone information in the short attribute
func (s *ShortAttrInfo) GetZoneInfo() *orm.Zone {
return nil
}
// GetStationInfo define return the station information in the short attribute
func (s *ShortAttrInfo) GetStationInfo() *orm.Station {
return nil
}
// GetComponentInfo define return the component information in the short attribute
func (s *ShortAttrInfo) GetComponentInfo() *orm.Component {
return s.ComponentInfo
}
// IsLocal define return the is_local information in the short attribute
func (s *ShortAttrInfo) IsLocal() bool {
return false
}

View File

@ -1,8 +1,7 @@
// Package model define model struct of model runtime service
package model
import (
constants "modelRT/constant"
"modelRT/constants"
"modelRT/orm"
)

View File

@ -5,7 +5,7 @@ import (
"fmt"
"modelRT/common/errcode"
constants "modelRT/constant"
"modelRT/constants"
"github.com/gofrs/uuid"
)

View File

@ -7,7 +7,7 @@ import (
"modelRT/alert"
"modelRT/config"
constants "modelRT/constant"
"modelRT/constants"
"modelRT/diagram"
"modelRT/logger"

View File

@ -5,7 +5,7 @@ import (
"context"
"modelRT/config"
constants "modelRT/constant"
"modelRT/constants"
"modelRT/diagram"
"modelRT/logger"
"modelRT/network"