versia-go/ent/schema/lysand_entity.go

41 lines
800 B
Go
Raw Normal View History

2024-08-11 03:51:22 +02:00
package schema
import (
"net/url"
"time"
"entgo.io/ent"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/mixin"
"github.com/google/uuid"
"github.com/lysand-org/versia-go/pkg/lysand"
)
type LysandEntityMixin struct{ mixin.Schema }
var _ ent.Mixin = (*LysandEntityMixin)(nil)
func (LysandEntityMixin) Fields() []ent.Field {
return []ent.Field{
field.UUID("id", uuid.UUID{}).
Default(uuid.New).
Immutable(),
field.Bool("isRemote"),
field.String("uri").Validate(ValidateURI),
field.JSON("extensions", lysand.Extensions{}).Default(lysand.Extensions{}),
field.Time("created_at").
Immutable().
Default(time.Now),
field.Time("updated_at").
Default(time.Now).
UpdateDefault(time.Now),
}
}
func ValidateURI(s string) error {
_, err := url.Parse(s)
return err
}