Dyna

Dyna #

  • Dynamic data manager
  • Supports manual provided data, database data or data factory functions
  • Used in dynamic components like: autocomplete, datatable
  • Database query uses Esquel

New instance #

dyna.New()

Query data model #

type Query struct {
	Table  string
    Alias  string
    Value  string
	Fields map[string]string
}

Table #

Database table name

Alias #

Datatable table alias

Value #

Datatable table field name, like id

Fields #

Datatable fields aliases, suitable for smart components

Fields: map[string]string{
	"text":   "e.name",
	"value":  "e.id",
}

Set DB #

m := dyna.New()

m.DB(db, query)

Set Data #

m := dyna.New()

m.Data([]map[string]any{
    { "value": 1, "text": "Text 1" },
    { "value": 2, "text": "Text 2" },
})

Parse params from hiro.Ctx #

var param dyna.Param
param = param.Parse(c)

Use params on Esquel query #

  • Generates conditions, sorting, offseting, limiting
var param dyna.Param
param = param.Parse(c)
q := db.Q(`...`)
param.Use(q)
q.MustExec()

Get data #

  • Automatically choose data source (manual data / database),
    if override func exists, prefers that

Get All #

GetAll(param, &target)

Get One #

GetOne("id", 1, &target)

Get Many #

GetMany("id", []int{1,2,3}, &target)

Override data get #

Get All Func #

GetAllFunc(func(param Param, t any) error {
	// ...
	return nil
})

Get One Func #

GetOneFunc(func(name string, v any, t any) error {
	// ...
	return nil
})

Get Many Func #

GetManyFunc(func(name string, v any, t any) error {
	// ...
	return nil
})

Util #

Create Select #

 // third param is not required, because id is default value field
CreateSelect("examples", "name", "id") Query