versia-go/ent/schema/lysand_entity.go

40 lines
799 B
Go
Raw Normal View History

2024-08-11 03:51:22 +02:00
package schema
import (
"entgo.io/ent"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/mixin"
"github.com/google/uuid"
2024-08-22 23:03:38 +02:00
"github.com/lysand-org/versia-go/pkg/versia"
"net/url"
"time"
2024-08-11 03:51:22 +02:00
)
2024-08-22 23:09:58 +02:00
type VersiaEntityMixin struct{ mixin.Schema }
2024-08-11 03:51:22 +02:00
2024-08-22 23:09:58 +02:00
var _ ent.Mixin = (*VersiaEntityMixin)(nil)
2024-08-11 03:51:22 +02:00
2024-08-22 23:09:58 +02:00
func (VersiaEntityMixin) Fields() []ent.Field {
2024-08-11 03:51:22 +02:00
return []ent.Field{
field.UUID("id", uuid.UUID{}).
Default(uuid.New).
Immutable(),
field.Bool("isRemote"),
field.String("uri").Validate(ValidateURI),
2024-08-22 23:03:38 +02:00
field.JSON("extensions", versia.Extensions{}).Default(versia.Extensions{}),
2024-08-11 03:51:22 +02:00
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
}