Table of Contents

Introduction Installation Projects Tables Inserts Searches Updates Deletes CLI Production Installation Good Practices Only Files Conclusion

Searches - Flaarum Tutorials

Flaarum provides statements for different searches. This makes searches more comfortable than using a function call.

Sample Code


package main

import (
	"github.com/saenuma/flaarumlib"
)

func main() {
	cl := flaarumlib.NewClient("127.0.0.1", "not-yet-ready", "first_proj")
	rows, err := cl.Search(`
		table: user_roles expand
		limit: 100
		where:
			user = 32
	`)
	if err != nil {
		panic(err)
	}
	
	roles := make([]string, 0)
	for _, row := range *rows {
		roles = append(roles, row["roleid.role"])
	}
}

Sample Search Statements

  1. table: users
    fields: name email
    limit: 10
    start_index: 50
    order_by: name asc
    
  2. Date components searches. This assumes there is a field reg_dt which is a datettime

    table: users
    where:
      reg_dt_year = 2020
      and reg_dt_month = 7
      and reg_dt_day = 21
    			

    date types supports the following suffixes: _year, _month, _day

    datetime types supports the suffixes listed above with _hour, _tzname

  3. table: users distinct
    fields: name
    limit: 150
    
  4. table: grades expand
    fields: userid.firstname userid.surname grade
    order_by: userid.firstname
    where:
      userid.age > 20
      and userid.age < 50
    

    A Where statement can take either and, or. Not both of them

  5. a where condition that contains space.

    table: grades
    where:
      score < 90
      and remark = 'not suspicious'
    
  6. in queries

    table: users
    where:
      id in 1 13 15 3
      and name in 'James John' 'John Paul' 'Paulo liv'
    
  7. has queries

    table: testtable
    where:
      stringd has 'going home'	
    
  8. has queries doesn't use an index. So are generally slower than other queries

    has queries only operates on string and text data types.

  9. Compound Queries

    table: t1
    joiner: or
    where1:
      id > 1
      and id < 3
    ::
    where2:
      userid > 16
      and userid < 323
    ::
    where3:
      score > 300
      and score < 600
    ::
    	

    Compound queries expects a joiner which takes the value of either and, or

    Compound queries can have upto to four where statements

< Previous Next >