57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package schema
|
|
|
|
import (
|
|
"time"
|
|
|
|
"entgo.io/ent"
|
|
"entgo.io/ent/dialect/entsql"
|
|
"entgo.io/ent/schema"
|
|
"entgo.io/ent/schema/field"
|
|
"entgo.io/ent/schema/index"
|
|
)
|
|
|
|
// ShopInvitations holds the schema definition for the ShopInvitations entity.
|
|
type ShopInvitations struct {
|
|
ent.Schema
|
|
}
|
|
|
|
// Annotations of the ShopInvitations.
|
|
func (ShopInvitations) Annotations() []schema.Annotation {
|
|
return []schema.Annotation{
|
|
entsql.Annotation{
|
|
Table: "shop_invitations",
|
|
Checks: map[string]string{
|
|
"chk_invitation_status": "status IN ('pending', 'accepted', 'rejected', 'cancelled')",
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
// Fields of the ShopInvitations.
|
|
func (ShopInvitations) Fields() []ent.Field {
|
|
return []ent.Field{
|
|
field.Int64("id").Immutable().Unique(),
|
|
field.Int64("shop_id"),
|
|
field.Int64("player_id"),
|
|
field.String("status").MaxLen(20).Default("pending"),
|
|
field.Int64("invited_by"),
|
|
field.Time("created_at").Default(time.Now).Immutable(),
|
|
field.Time("responded_at").Optional().Nillable(),
|
|
}
|
|
}
|
|
|
|
// Indexes of the ShopInvitations.
|
|
func (ShopInvitations) Indexes() []ent.Index {
|
|
return []ent.Index{
|
|
index.Fields("shop_id"),
|
|
index.Fields("player_id"),
|
|
index.Fields("player_id", "status", "created_at"),
|
|
index.Fields("shop_id", "status", "created_at"),
|
|
}
|
|
}
|
|
|
|
// Edges of the ShopInvitations.
|
|
func (ShopInvitations) Edges() []ent.Edge {
|
|
return nil
|
|
}
|