gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/versionx/cachez-root.go (about)

     1  package versionx
     2  
     3  import (
     4  	"gitee.com/zhongguo168a/gocodes/datax"
     5  	"strings"
     6  )
     7  
     8  func NewRoot(source *Source) (obj *Root) {
     9  	obj = &Root{}
    10  	obj.Object = &Object{}
    11  	obj.Source = source
    12  	obj.data = source.origin
    13  	obj.versionPaths = append(obj.versionPaths, "")
    14  	obj.temps = datax.M{}
    15  	return
    16  }
    17  
    18  // 根
    19  type Root struct {
    20  	*Object
    21  }
    22  
    23  func (s *Root) RefOnChange(f func(path, field string, val interface{})) {
    24  	s.onChange = f
    25  }
    26  
    27  // 编号
    28  func (s *Root) RefId() string {
    29  	return s.RefString("_id")
    30  }
    31  
    32  // 设置根
    33  func (s *Root) RefIdSet(val string) {
    34  	s.RefSet("_id", val)
    35  }
    36  
    37  func (s *Root) RefClone() (r *Root) {
    38  	r = NewRoot(s.Source.Clone())
    39  	r.data = r.origin
    40  	return
    41  }
    42  
    43  func (s *Root) RefDispose() {
    44  	s.Source.Dispose()
    45  	s.Source = nil
    46  	s.data = nil
    47  }
    48  
    49  func (s *Root) RefReset(val map[string]interface{}) {
    50  	s.Source.RefReset(val)
    51  	s.data = s.Source.origin
    52  	s.temps = datax.M{}
    53  
    54  }
    55  
    56  func ParseKey(key string) (className, id string) {
    57  	arr := strings.Split(key, "/")
    58  	className = arr[0]
    59  	id = arr[1]
    60  	return
    61  }