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 }