-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Description
AFAIK there are currently two ways to bind optional or non-primitive type values with EdgeDB:
- using one of the provided types in
edgedbtypes, e.g.OptionalStr, which cannot be extended with additional methods - implementing one of the
EdgeDB{*}Marshalerinterfaces, which is cumbersome when you have to do it for multiple types
Would it be possible to expose an interface that custom wrappers for EdgeDB-compatible types could implement ?
Something like:
type EdgeDBTypeWrapper[T any] interface {
Value() *T
}EdgeDBTypeWrapper.Value() could then be used internally to retrieve the wrapped type and marshal/unmarshal values when interacting with EdgeDB.
Example use-case:
type OptionalStrWrapper struct {
edgedb.OptionalStr
}
func (o OptionalStrWrapper) Value() *edgedb.OptionalStr {
return o.OptionalStr
}
func (o OptionalStrWrapper) SomeMethodUnrelatedToEdgeDB() {
// ...
}I would be willing to submit a PR for this, but I am not sure where to start. Would it be as simple as adding an extra case in codecs.*.Encode methods ?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels