announcement_read.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package schema
  2. import (
  3. "time"
  4. "entgo.io/ent"
  5. "entgo.io/ent/dialect"
  6. "entgo.io/ent/dialect/entsql"
  7. "entgo.io/ent/schema"
  8. "entgo.io/ent/schema/edge"
  9. "entgo.io/ent/schema/field"
  10. "entgo.io/ent/schema/index"
  11. )
  12. // AnnouncementRead holds the schema definition for the AnnouncementRead entity.
  13. //
  14. // 记录用户对公告的已读状态(首次已读时间)。
  15. type AnnouncementRead struct {
  16. ent.Schema
  17. }
  18. func (AnnouncementRead) Annotations() []schema.Annotation {
  19. return []schema.Annotation{
  20. entsql.Annotation{Table: "announcement_reads"},
  21. }
  22. }
  23. func (AnnouncementRead) Fields() []ent.Field {
  24. return []ent.Field{
  25. field.Int64("announcement_id"),
  26. field.Int64("user_id"),
  27. field.Time("read_at").
  28. Default(time.Now).
  29. SchemaType(map[string]string{dialect.Postgres: "timestamptz"}).
  30. Comment("用户首次已读时间"),
  31. field.Time("created_at").
  32. Immutable().
  33. Default(time.Now).
  34. SchemaType(map[string]string{dialect.Postgres: "timestamptz"}),
  35. }
  36. }
  37. func (AnnouncementRead) Edges() []ent.Edge {
  38. return []ent.Edge{
  39. edge.From("announcement", Announcement.Type).
  40. Ref("reads").
  41. Field("announcement_id").
  42. Unique().
  43. Required(),
  44. edge.From("user", User.Type).
  45. Ref("announcement_reads").
  46. Field("user_id").
  47. Unique().
  48. Required(),
  49. }
  50. }
  51. func (AnnouncementRead) Indexes() []ent.Index {
  52. return []ent.Index{
  53. index.Fields("announcement_id"),
  54. index.Fields("user_id"),
  55. index.Fields("read_at"),
  56. index.Fields("announcement_id", "user_id").Unique(),
  57. }
  58. }