package django import ( "fmt" "strings" ) const ( ID = "id" Link = "link" ) type Builder struct { Params []string } func NewBuilder(token string) *Builder { return &Builder{[]string{fmt.Sprintf("api=%s", token)}} } func (db *Builder) QueryString() string { return "?" + strings.Join(db.Params, "&") } func (db *Builder) Exact(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__exact=%s", field, value)) return db } func (db *Builder) IExact(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__iexact=%s", field, value)) return db } func (db *Builder) Contains(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__contains=%s", field, value)) return db } func (db *Builder) IContains(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__icontains=%s", field, value)) return db } func (db *Builder) In(field string, values ...string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__in=[%s]", field, strings.Join(values, ","))) return db } func (db *Builder) Gt(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__gt=%s", field, value)) return db } func (db *Builder) Gte(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__gte=%s", field, value)) return db } func (db *Builder) Lt(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__lt=%s", field, value)) return db } func (db *Builder) Lte(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__lte=%s", field, value)) return db } func (db *Builder) Startswith(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__startswith=%s", field, value)) return db } func (db *Builder) IStartswith(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__istartswith=%s", field, value)) return db } func (db *Builder) Endswith(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__endswith=%s", field, value)) return db } func (db *Builder) IEndswith(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__iendswith=%s", field, value)) return db } func (db *Builder) Range(field, from, to string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__range=(%s,%s)", field, from, to)) return db } func (db *Builder) Date(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__date=%s", field, value)) return db } func (db *Builder) Year(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__year=%s", field, value)) return db } func (db *Builder) Month(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__month=%s", field, value)) return db } func (db *Builder) Day(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__day=%s", field, value)) return db } func (db *Builder) Week(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__week=%s", field, value)) return db } func (db *Builder) WeekDay(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__week_day=%s", field, value)) return db } func (db *Builder) Quarter(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__quarter=%s", field, value)) return db } func (db *Builder) Time(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__time=%s", field, value)) return db } func (db *Builder) Hour(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__hour=%s", field, value)) return db } func (db *Builder) Minute(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__minute=%s", field, value)) return db } func (db *Builder) Second(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__second=%s", field, value)) return db } func (db *Builder) IsNull(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__isnull=%s", field, value)) return db } func (db *Builder) Regex(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__regex=r'%s'", field, value)) return db } func (db *Builder) IRegex(field, value string) *Builder { db.Params = append(db.Params, fmt.Sprintf("%s__iregex=r'%s'", field, value)) return db }