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