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  }