diff --git a/backend/internal/data/ent/schema/notifier.go b/backend/internal/data/ent/schema/notifier.go new file mode 100755 index 0000000..54fb9f2 --- /dev/null +++ b/backend/internal/data/ent/schema/notifier.go @@ -0,0 +1,55 @@ +package schema + +import ( + "entgo.io/ent" + "entgo.io/ent/schema/edge" + "entgo.io/ent/schema/field" + "entgo.io/ent/schema/index" + + "github.com/google/uuid" + "github.com/hay-kot/homebox/backend/internal/data/ent/schema/mixins" +) + +type Notifier struct { + ent.Schema +} + +func (Notifier) Mixin() []ent.Mixin { + return []ent.Mixin{ + mixins.BaseMixin{}, + } +} + +// Fields of the Notifier. +func (Notifier) Fields() []ent.Field { + return []ent.Field{ + field.UUID("user_id", uuid.UUID{}), + field.String("name"). + MaxLen(255). + NotEmpty(), + field.String("url"). + Sensitive(). + MaxLen(2083). // supposed max length of URL + NotEmpty(), + field.Bool("is_active"). + Default(true), + } +} + +// Edges of the Notifier. +func (Notifier) Edges() []ent.Edge { + return []ent.Edge{ + edge.From("user", User.Type). + Field("user_id"). + Ref("notifiers"). + Required(). + Unique(), + } +} + +func (Notifier) Indexes() []ent.Index { + return []ent.Index{ + index.Fields("user_id"), + index.Fields("user_id", "is_active"), + } +} diff --git a/backend/internal/data/ent/schema/user.go b/backend/internal/data/ent/schema/user.go index b3342a8..1568aa5 100644 --- a/backend/internal/data/ent/schema/user.go +++ b/backend/internal/data/ent/schema/user.go @@ -35,11 +35,11 @@ func (User) Fields() []ent.Field { Sensitive(), field.Bool("is_superuser"). Default(false), + field.Bool("superuser"). + Default(false), field.Enum("role"). Default("user"). Values("user", "owner"), - field.Bool("superuser"). - Default(false), field.Time("activated_on"). Optional(), } @@ -56,5 +56,9 @@ func (User) Edges() []ent.Edge { Annotations(entsql.Annotation{ OnDelete: entsql.Cascade, }), + edge.To("notifiers", Notifier.Type). + Annotations(entsql.Annotation{ + OnDelete: entsql.Cascade, + }), } }