-
Notifications
You must be signed in to change notification settings - Fork 2
/
module.go
37 lines (27 loc) · 1005 Bytes
/
module.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package sdktypes
import (
"errors"
"go.autokitteh.dev/autokitteh/internal/kittehs"
modulev1 "go.autokitteh.dev/autokitteh/proto/gen/go/autokitteh/module/v1"
)
type Module struct {
object[*ModulePB, ModuleTraits]
}
type ModulePB = modulev1.Module
type ModuleTraits struct{}
func (ModuleTraits) Validate(m *ModulePB) error {
return errors.Join(
objectsMapField[ModuleFunction]("functions", m.Functions),
objectsMapField[ModuleVariable]("variables", m.Variables),
)
}
func (ModuleTraits) StrictValidate(m *ModulePB) error { return nil }
var InvalidModule Module
func ModuleFromProto(m *ModulePB) (Module, error) { return FromProto[Module](m) }
func StrictModuleFromProto(m *ModulePB) (Module, error) { return Strict(ModuleFromProto(m)) }
func NewModule(fs map[string]ModuleFunction, vs map[string]ModuleVariable) (Module, error) {
return FromProto[Module](&ModulePB{
Functions: kittehs.TransformMapValues(fs, ToProto),
Variables: kittehs.TransformMapValues(vs, ToProto),
})
}