43 lines
864 B
Go
43 lines
864 B
Go
package sdk
|
|
|
|
import (
|
|
"aego/asset"
|
|
"aego/data"
|
|
"aego/engine/module"
|
|
"aego/schema"
|
|
)
|
|
|
|
type (
|
|
DataBuilder[T any] = module.DataBuilder[T]
|
|
DataRef[T any] = data.Ref[T]
|
|
TableRef[T any] = data.TableRef[T]
|
|
Weighted[T any] = data.Weighted[T]
|
|
)
|
|
|
|
func DataType[T any](r *Registry, opts ...schema.Option) *DataBuilder[T] {
|
|
b := module.DataType[T](r.r, opts...)
|
|
r.r.AddDataHook(dataHook[T]())
|
|
return b
|
|
}
|
|
|
|
func Live[T any](r *Registry, fields ...string) {
|
|
module.Live[T](r.r, fields...)
|
|
}
|
|
|
|
func DataLibrary(ctx *Context) (*data.Library, bool) {
|
|
s := SceneOf(ctx)
|
|
src, ok := AssetsOf(ctx).(asset.DataSource)
|
|
if s == nil || !ok {
|
|
return nil, false
|
|
}
|
|
return data.NewLibrary(s.Registry(), src), true
|
|
}
|
|
|
|
func Data[T any](ctx *Context, r DataRef[T]) (*T, error) {
|
|
l, ok := DataLibrary(ctx)
|
|
if !ok {
|
|
return nil, data.ErrNoSource
|
|
}
|
|
return r.Get(l)
|
|
}
|