feat(announcements): add admin/user announcement system
Implements announcements end-to-end (admin CRUD + read status, user list + mark read) with OR-of-AND targeting. Also breaks the ent<->service import cycle by moving schema-facing constants/targeting into a new domain package.
This commit is contained in:
@@ -51,6 +51,8 @@ const (
|
||||
EdgeSubscriptions = "subscriptions"
|
||||
// EdgeAssignedSubscriptions holds the string denoting the assigned_subscriptions edge name in mutations.
|
||||
EdgeAssignedSubscriptions = "assigned_subscriptions"
|
||||
// EdgeAnnouncementReads holds the string denoting the announcement_reads edge name in mutations.
|
||||
EdgeAnnouncementReads = "announcement_reads"
|
||||
// EdgeAllowedGroups holds the string denoting the allowed_groups edge name in mutations.
|
||||
EdgeAllowedGroups = "allowed_groups"
|
||||
// EdgeUsageLogs holds the string denoting the usage_logs edge name in mutations.
|
||||
@@ -91,6 +93,13 @@ const (
|
||||
AssignedSubscriptionsInverseTable = "user_subscriptions"
|
||||
// AssignedSubscriptionsColumn is the table column denoting the assigned_subscriptions relation/edge.
|
||||
AssignedSubscriptionsColumn = "assigned_by"
|
||||
// AnnouncementReadsTable is the table that holds the announcement_reads relation/edge.
|
||||
AnnouncementReadsTable = "announcement_reads"
|
||||
// AnnouncementReadsInverseTable is the table name for the AnnouncementRead entity.
|
||||
// It exists in this package in order to avoid circular dependency with the "announcementread" package.
|
||||
AnnouncementReadsInverseTable = "announcement_reads"
|
||||
// AnnouncementReadsColumn is the table column denoting the announcement_reads relation/edge.
|
||||
AnnouncementReadsColumn = "user_id"
|
||||
// AllowedGroupsTable is the table that holds the allowed_groups relation/edge. The primary key declared below.
|
||||
AllowedGroupsTable = "user_allowed_groups"
|
||||
// AllowedGroupsInverseTable is the table name for the Group entity.
|
||||
@@ -335,6 +344,20 @@ func ByAssignedSubscriptions(term sql.OrderTerm, terms ...sql.OrderTerm) OrderOp
|
||||
}
|
||||
}
|
||||
|
||||
// ByAnnouncementReadsCount orders the results by announcement_reads count.
|
||||
func ByAnnouncementReadsCount(opts ...sql.OrderTermOption) OrderOption {
|
||||
return func(s *sql.Selector) {
|
||||
sqlgraph.OrderByNeighborsCount(s, newAnnouncementReadsStep(), opts...)
|
||||
}
|
||||
}
|
||||
|
||||
// ByAnnouncementReads orders the results by announcement_reads terms.
|
||||
func ByAnnouncementReads(term sql.OrderTerm, terms ...sql.OrderTerm) OrderOption {
|
||||
return func(s *sql.Selector) {
|
||||
sqlgraph.OrderByNeighborTerms(s, newAnnouncementReadsStep(), append([]sql.OrderTerm{term}, terms...)...)
|
||||
}
|
||||
}
|
||||
|
||||
// ByAllowedGroupsCount orders the results by allowed_groups count.
|
||||
func ByAllowedGroupsCount(opts ...sql.OrderTermOption) OrderOption {
|
||||
return func(s *sql.Selector) {
|
||||
@@ -432,6 +455,13 @@ func newAssignedSubscriptionsStep() *sqlgraph.Step {
|
||||
sqlgraph.Edge(sqlgraph.O2M, false, AssignedSubscriptionsTable, AssignedSubscriptionsColumn),
|
||||
)
|
||||
}
|
||||
func newAnnouncementReadsStep() *sqlgraph.Step {
|
||||
return sqlgraph.NewStep(
|
||||
sqlgraph.From(Table, FieldID),
|
||||
sqlgraph.To(AnnouncementReadsInverseTable, FieldID),
|
||||
sqlgraph.Edge(sqlgraph.O2M, false, AnnouncementReadsTable, AnnouncementReadsColumn),
|
||||
)
|
||||
}
|
||||
func newAllowedGroupsStep() *sqlgraph.Step {
|
||||
return sqlgraph.NewStep(
|
||||
sqlgraph.From(Table, FieldID),
|
||||
|
||||
Reference in New Issue
Block a user