package f5 /* import ( "fmt" ) */ type LinkOp int32 const ( LK_AND LinkOp = iota LK_OR ) type QueryCond int32 const ( QC_LIKE QueryCond = iota QC_EQ QC_LT QC_LE QC_GT QC_GE QC_CUSTOM ) type pageQuery struct { } type PageQueryFilter interface { And() PageQueryFilter Or() PageQueryFilter Not() PageQueryFilter GenSql() string } type PageQueryOne struct { linkOp LinkOp not bool fieldName string cond QueryCond ignoreEmpty bool val string } type PageQueryComp struct { linkOp LinkOp not bool subFilters []*PageQueryOne } type PageQueryParam struct { Filter []PageQueryFilter OrderBy string } func (this *PageQueryParam) genSql() string { sql := " " /* for _, field := range this.Filter { }*/ sql += " " + this.OrderBy + " " return sql } func (this *pageQuery) Like(fieldName string, val string) *PageQueryOne { f := &PageQueryOne{ cond: QC_LIKE, fieldName: fieldName, val: val} return f } func (this *pageQuery) EQ(fieldName string, val string) *PageQueryOne { f := &PageQueryOne{ cond: QC_EQ, fieldName: fieldName, val: val} return f } func (this *pageQuery) LT(fieldName string, val string) *PageQueryOne { f := &PageQueryOne{ cond: QC_LT, fieldName: fieldName, val: val} return f } func (this *pageQuery) LE(fieldName string, val string) *PageQueryOne { f := &PageQueryOne{ cond: QC_LE, fieldName: fieldName, val: val} return f } func (this *pageQuery) GT(fieldName string, val string) *PageQueryOne { f := &PageQueryOne{ cond: QC_GT, fieldName: fieldName, val: val} return f } func (this *pageQuery) GE(fieldName string, val string) *PageQueryOne { f := &PageQueryOne{ cond: QC_GE, fieldName: fieldName, val: val} return f } func (this *pageQuery) Custom(fieldName string, val string) *PageQueryOne { f := &PageQueryOne{ cond: QC_CUSTOM, fieldName: fieldName, val: val} return f } func (this *pageQuery) Comp(subFilters []*PageQueryOne) *PageQueryComp { f := &PageQueryComp{ subFilters: subFilters} return f } func (this *PageQueryOne) IgnoreEmpy() *PageQueryOne { this.ignoreEmpty = true return this }