go.mercari.io/datastore@v1.8.2/testsuite/favcliptools/model_query.go (about) 1 // Code generated by qbg -output model_query.go -usedatastorewrapper .; DO NOT EDIT 2 3 package favcliptools 4 5 import ( 6 "go.mercari.io/datastore" 7 ) 8 9 // Plugin supply hook point for query constructions. 10 type Plugin interface { 11 Init(typeName string) 12 Ancestor(ancestor datastore.Key) 13 KeysOnly() 14 Start(cur datastore.Cursor) 15 Offset(offset int) 16 Limit(limit int) 17 Filter(name, op string, value interface{}) 18 Asc(name string) 19 Desc(name string) 20 } 21 22 // Plugger supply Plugin component. 23 type Plugger interface { 24 Plugin() Plugin 25 } 26 27 // UserQueryBuilder build query for User. 28 type UserQueryBuilder struct { 29 q datastore.Query 30 plugin Plugin 31 ID *UserQueryProperty 32 Name *UserQueryProperty 33 MentorID *UserQueryProperty 34 } 35 36 // UserQueryProperty has property information for UserQueryBuilder. 37 type UserQueryProperty struct { 38 bldr *UserQueryBuilder 39 name string 40 } 41 42 // NewUserQueryBuilder create new UserQueryBuilder. 43 func NewUserQueryBuilder(client datastore.Client) *UserQueryBuilder { 44 return NewUserQueryBuilderWithKind(client, "User") 45 } 46 47 // NewUserQueryBuilderWithKind create new UserQueryBuilder with specific kind. 48 func NewUserQueryBuilderWithKind(client datastore.Client, kind string) *UserQueryBuilder { 49 q := client.NewQuery(kind) 50 bldr := &UserQueryBuilder{q: q} 51 bldr.ID = &UserQueryProperty{ 52 bldr: bldr, 53 name: "__key__", 54 } 55 bldr.Name = &UserQueryProperty{ 56 bldr: bldr, 57 name: "Name", 58 } 59 bldr.MentorID = &UserQueryProperty{ 60 bldr: bldr, 61 name: "MentorID", 62 } 63 64 if plugger, ok := interface{}(bldr).(Plugger); ok { 65 bldr.plugin = plugger.Plugin() 66 bldr.plugin.Init("User") 67 } 68 69 return bldr 70 } 71 72 // Ancestor sets parent key to ancestor query. 73 func (bldr *UserQueryBuilder) Ancestor(parentKey datastore.Key) *UserQueryBuilder { 74 bldr.q = bldr.q.Ancestor(parentKey) 75 if bldr.plugin != nil { 76 bldr.plugin.Ancestor(parentKey) 77 } 78 return bldr 79 } 80 81 // KeysOnly sets keys only option to query. 82 func (bldr *UserQueryBuilder) KeysOnly() *UserQueryBuilder { 83 bldr.q = bldr.q.KeysOnly() 84 if bldr.plugin != nil { 85 bldr.plugin.KeysOnly() 86 } 87 return bldr 88 } 89 90 // Start setup to query. 91 func (bldr *UserQueryBuilder) Start(cur datastore.Cursor) *UserQueryBuilder { 92 bldr.q = bldr.q.Start(cur) 93 if bldr.plugin != nil { 94 bldr.plugin.Start(cur) 95 } 96 return bldr 97 } 98 99 // Offset setup to query. 100 func (bldr *UserQueryBuilder) Offset(offset int) *UserQueryBuilder { 101 bldr.q = bldr.q.Offset(offset) 102 if bldr.plugin != nil { 103 bldr.plugin.Offset(offset) 104 } 105 return bldr 106 } 107 108 // Limit setup to query. 109 func (bldr *UserQueryBuilder) Limit(limit int) *UserQueryBuilder { 110 bldr.q = bldr.q.Limit(limit) 111 if bldr.plugin != nil { 112 bldr.plugin.Limit(limit) 113 } 114 return bldr 115 } 116 117 // Query returns *datastore.Query. 118 func (bldr *UserQueryBuilder) Query() datastore.Query { 119 return bldr.q 120 } 121 122 // Filter with op & value. 123 func (p *UserQueryProperty) Filter(op string, value interface{}) *UserQueryBuilder { 124 switch op { 125 case "<=": 126 p.LessThanOrEqual(value) 127 case ">=": 128 p.GreaterThanOrEqual(value) 129 case "<": 130 p.LessThan(value) 131 case ">": 132 p.GreaterThan(value) 133 case "=": 134 p.Equal(value) 135 default: 136 p.bldr.q = p.bldr.q.Filter(p.name+" "+op, value) // error raised by native query 137 } 138 if p.bldr.plugin != nil { 139 p.bldr.plugin.Filter(p.name, op, value) 140 } 141 return p.bldr 142 } 143 144 // LessThanOrEqual filter with value. 145 func (p *UserQueryProperty) LessThanOrEqual(value interface{}) *UserQueryBuilder { 146 p.bldr.q = p.bldr.q.Filter(p.name+" <=", value) 147 if p.bldr.plugin != nil { 148 p.bldr.plugin.Filter(p.name, "<=", value) 149 } 150 return p.bldr 151 } 152 153 // GreaterThanOrEqual filter with value. 154 func (p *UserQueryProperty) GreaterThanOrEqual(value interface{}) *UserQueryBuilder { 155 p.bldr.q = p.bldr.q.Filter(p.name+" >=", value) 156 if p.bldr.plugin != nil { 157 p.bldr.plugin.Filter(p.name, ">=", value) 158 } 159 return p.bldr 160 } 161 162 // LessThan filter with value. 163 func (p *UserQueryProperty) LessThan(value interface{}) *UserQueryBuilder { 164 p.bldr.q = p.bldr.q.Filter(p.name+" <", value) 165 if p.bldr.plugin != nil { 166 p.bldr.plugin.Filter(p.name, "<", value) 167 } 168 return p.bldr 169 } 170 171 // GreaterThan filter with value. 172 func (p *UserQueryProperty) GreaterThan(value interface{}) *UserQueryBuilder { 173 p.bldr.q = p.bldr.q.Filter(p.name+" >", value) 174 if p.bldr.plugin != nil { 175 p.bldr.plugin.Filter(p.name, ">", value) 176 } 177 return p.bldr 178 } 179 180 // Equal filter with value. 181 func (p *UserQueryProperty) Equal(value interface{}) *UserQueryBuilder { 182 p.bldr.q = p.bldr.q.Filter(p.name+" =", value) 183 if p.bldr.plugin != nil { 184 p.bldr.plugin.Filter(p.name, "=", value) 185 } 186 return p.bldr 187 } 188 189 // Asc order. 190 func (p *UserQueryProperty) Asc() *UserQueryBuilder { 191 p.bldr.q = p.bldr.q.Order(p.name) 192 if p.bldr.plugin != nil { 193 p.bldr.plugin.Asc(p.name) 194 } 195 return p.bldr 196 } 197 198 // Desc order. 199 func (p *UserQueryProperty) Desc() *UserQueryBuilder { 200 p.bldr.q = p.bldr.q.Order("-" + p.name) 201 if p.bldr.plugin != nil { 202 p.bldr.plugin.Desc(p.name) 203 } 204 return p.bldr 205 }