package models import ( "context" "time" ) // ChannelMember represents a user's membership in a channel. type ChannelMember struct { Base ChannelID string `json:"channelId"` UserID string `json:"userId"` Modes string `json:"modes"` JoinedAt time.Time `json:"joinedAt"` Nick string `json:"nick"` // denormalized from users table } // User returns the full User for this membership. func (cm *ChannelMember) User(ctx context.Context) (*User, error) { if ul := cm.GetUserLookup(); ul != nil { return ul.GetUserByID(ctx, cm.UserID) } return nil, ErrUserLookupNotAvailable } // Channel returns the full Channel for this membership. func (cm *ChannelMember) Channel(ctx context.Context) (*Channel, error) { if cl := cm.GetChannelLookup(); cl != nil { return cl.GetChannelByID(ctx, cm.ChannelID) } return nil, ErrChannelLookupNotAvailable }