github.com/sttk/sabi@v0.5.0/example_dax_test.go (about) 1 package sabi_test 2 3 import ( 4 "fmt" 5 "reflect" 6 7 "github.com/sttk/sabi" 8 ) 9 10 func ExampleAddGlobalDaxSrc() { 11 sabi.AddGlobalDaxSrc("hoge", NewMapDaxSrc()) 12 13 if sabi.StartUpGlobalDaxSrcs().IsNotOk() { 14 return 15 } 16 defer sabi.ShutdownGlobalDaxSrcs() 17 18 base := sabi.NewDaxBase() 19 20 type MyDax struct { 21 sabi.Dax 22 } 23 24 dax := MyDax{Dax: base} 25 26 conn, err := sabi.GetDaxConn[MapDaxConn](dax, "hoge") 27 fmt.Printf("conn = %v\n", reflect.TypeOf(conn)) 28 fmt.Printf("err.IsOk() = %t\n", err.IsOk()) 29 30 // Output: 31 // conn = sabi_test.MapDaxConn 32 // err.IsOk() = true 33 34 ClearDaxBase() 35 } 36 37 func ExampleStartUpGlobalDaxSrcs() { 38 sabi.AddGlobalDaxSrc("hoge", NewMapDaxSrc()) 39 40 if err := sabi.StartUpGlobalDaxSrcs(); err.IsNotOk() { 41 return 42 } 43 defer sabi.ShutdownGlobalDaxSrcs() 44 45 sabi.AddGlobalDaxSrc("fuga", NewMapDaxSrc()) 46 47 base := sabi.NewDaxBase() 48 49 type MyDax struct { 50 sabi.Dax 51 } 52 53 dax := MyDax{Dax: base} 54 55 conn, err := sabi.GetDaxConn[MapDaxConn](dax, "hoge") 56 fmt.Printf("conn = %v\n", reflect.TypeOf(conn)) 57 fmt.Printf("err.IsOk() = %v\n", err.IsOk()) 58 59 conn, err = sabi.GetDaxConn[MapDaxConn](dax, "fuga") 60 fmt.Printf("conn = %v\n", reflect.TypeOf(conn)) 61 fmt.Printf("err.IsOk() = %t\n", err.IsOk()) 62 fmt.Printf("err.Error() = %s\n", err.Error()) 63 64 // Output: 65 // conn = sabi_test.MapDaxConn 66 // err.IsOk() = true 67 // conn = sabi_test.MapDaxConn 68 // err.IsOk() = false 69 // err.Error() = {reason=DaxSrcIsNotFound, Name=fuga} 70 71 ClearDaxBase() 72 } 73 74 func ExampleDaxBase_SetUpLocalDaxSrc() { 75 base := sabi.NewDaxBase() 76 defer base.FreeAllLocalDaxSrcs() 77 78 base.SetUpLocalDaxSrc("hoge", NewMapDaxSrc()) 79 80 type MyDax struct { 81 sabi.Dax 82 } 83 84 dax := MyDax{Dax: base} 85 86 conn, err := sabi.GetDaxConn[MapDaxConn](dax, "hoge") 87 fmt.Printf("conn = %v\n", reflect.TypeOf(conn)) 88 fmt.Printf("err.IsOk() = %v\n", err.IsOk()) 89 90 // Output: 91 // conn = sabi_test.MapDaxConn 92 // err.IsOk() = true 93 94 ClearDaxBase() 95 } 96 97 type GettingDax struct { 98 sabi.Dax 99 } 100 101 func (dax GettingDax) GetData() (string, sabi.Err) { 102 conn, err := sabi.GetDaxConn[MapDaxConn](dax, "hoge") 103 if !err.IsOk() { 104 return "", err 105 } 106 data := conn.dataMap["hogehoge"] 107 return data, err 108 } 109 110 type SettingDax struct { 111 sabi.Dax 112 } 113 114 func (dax SettingDax) SetData(data string) sabi.Err { 115 conn, err := sabi.GetDaxConn[MapDaxConn](dax, "fuga") 116 if !err.IsOk() { 117 return err 118 } 119 conn.dataMap["fugafuga"] = data 120 return err 121 } 122 123 func ExampleDax() { 124 // type GettingDax struct { 125 // sabi.Dax 126 // } 127 // func (dax GettingDax) GetData() (string, sabi.Err) { 128 // conn, err := dax.getDaxConn("hoge") 129 // if !err.IsOk() { 130 // return nil, err 131 // } 132 // return conn.(MapDaxConn).dataMap["hogehoge"], err 133 // } 134 // 135 // type SettingDax struct { 136 // sabi.Dax 137 // } 138 // func (dax SettingDax) SetData(data string) sabi.Err { 139 // conn, err := dax.getDaxConn("fuga") 140 // if !err.IsOk() { 141 // return nil, err 142 // } 143 // conn.(MapDaxConn).dataMap["fugafuga"] = data 144 // return err 145 // } 146 147 hogeDs := NewMapDaxSrc() 148 fugaDs := NewMapDaxSrc() 149 150 base := sabi.NewDaxBase() 151 defer base.FreeAllLocalDaxSrcs() 152 153 if err := base.SetUpLocalDaxSrc("hoge", hogeDs); err.IsNotOk() { 154 return 155 } 156 if err := base.SetUpLocalDaxSrc("fuga", fugaDs); err.IsNotOk() { 157 return 158 } 159 160 base = struct { 161 sabi.DaxBase 162 GettingDax 163 SettingDax 164 }{ 165 DaxBase: base, 166 GettingDax: GettingDax{Dax: base}, 167 SettingDax: SettingDax{Dax: base}, 168 } 169 170 type DaxForLogic interface { 171 GetData() (string, sabi.Err) 172 SetData(data string) sabi.Err 173 } 174 175 hogeDs.dataMap["hogehoge"] = "hello" 176 err := sabi.RunTxn(base, func(dax DaxForLogic) sabi.Err { 177 data, err := dax.GetData() 178 if !err.IsOk() { 179 return err 180 } 181 err = dax.SetData(data) 182 return err 183 }) 184 fmt.Printf("%t\n", err.IsOk()) 185 fmt.Printf("%s\n", fugaDs.dataMap["fugafuga"]) 186 187 // Output: 188 // true 189 // hello 190 }