package model import "time" type AnnouncementRead struct { Id int `json:"id" gorm:"primaryKey;autoIncrement"` AnnouncementId int `json:"announcement_id" gorm:"not null;index:idx_announcement_read_user,unique"` UserId int `json:"user_id" gorm:"not null;index:idx_announcement_read_user,unique"` ReadAt time.Time `json:"read_at" gorm:"not null"` } func (AnnouncementRead) TableName() string { return "announcement_reads" } func (r *AnnouncementRead) Insert() error { return DB.Create(r).Error } func IsAnnouncementRead(announcementId int, userId int) (bool, error) { var count int64 err := DB.Model(&AnnouncementRead{}). Where("announcement_id = ? AND user_id = ?", announcementId, userId). Count(&count).Error return count > 0, err } type AnnouncementReadStatus struct { UserId int `json:"user_id"` Username string `json:"username"` ReadAt *time.Time `json:"read_at"` IsRead bool `json:"is_read"` }