feat: add superadmin assets and notifications

This commit is contained in:
2026-01-15 15:28:41 +08:00
parent c683fa5cf3
commit b896d0fa00
22 changed files with 4852 additions and 260 deletions

View File

@@ -16,27 +16,28 @@ import (
)
var (
Q = new(Query)
CommentQuery *commentQuery
ContentQuery *contentQuery
ContentAccessQuery *contentAccessQuery
ContentAssetQuery *contentAssetQuery
ContentPriceQuery *contentPriceQuery
CouponQuery *couponQuery
MediaAssetQuery *mediaAssetQuery
NotificationQuery *notificationQuery
OrderQuery *orderQuery
OrderItemQuery *orderItemQuery
PayoutAccountQuery *payoutAccountQuery
TenantQuery *tenantQuery
TenantInviteQuery *tenantInviteQuery
TenantJoinRequestQuery *tenantJoinRequestQuery
TenantLedgerQuery *tenantLedgerQuery
TenantUserQuery *tenantUserQuery
UserQuery *userQuery
UserCommentActionQuery *userCommentActionQuery
UserContentActionQuery *userContentActionQuery
UserCouponQuery *userCouponQuery
Q = new(Query)
CommentQuery *commentQuery
ContentQuery *contentQuery
ContentAccessQuery *contentAccessQuery
ContentAssetQuery *contentAssetQuery
ContentPriceQuery *contentPriceQuery
CouponQuery *couponQuery
MediaAssetQuery *mediaAssetQuery
NotificationQuery *notificationQuery
NotificationTemplateQuery *notificationTemplateQuery
OrderQuery *orderQuery
OrderItemQuery *orderItemQuery
PayoutAccountQuery *payoutAccountQuery
TenantQuery *tenantQuery
TenantInviteQuery *tenantInviteQuery
TenantJoinRequestQuery *tenantJoinRequestQuery
TenantLedgerQuery *tenantLedgerQuery
TenantUserQuery *tenantUserQuery
UserQuery *userQuery
UserCommentActionQuery *userCommentActionQuery
UserContentActionQuery *userContentActionQuery
UserCouponQuery *userCouponQuery
)
func SetDefault(db *gorm.DB, opts ...gen.DOOption) {
@@ -49,6 +50,7 @@ func SetDefault(db *gorm.DB, opts ...gen.DOOption) {
CouponQuery = &Q.Coupon
MediaAssetQuery = &Q.MediaAsset
NotificationQuery = &Q.Notification
NotificationTemplateQuery = &Q.NotificationTemplate
OrderQuery = &Q.Order
OrderItemQuery = &Q.OrderItem
PayoutAccountQuery = &Q.PayoutAccount
@@ -65,80 +67,83 @@ func SetDefault(db *gorm.DB, opts ...gen.DOOption) {
func Use(db *gorm.DB, opts ...gen.DOOption) *Query {
return &Query{
db: db,
Comment: newComment(db, opts...),
Content: newContent(db, opts...),
ContentAccess: newContentAccess(db, opts...),
ContentAsset: newContentAsset(db, opts...),
ContentPrice: newContentPrice(db, opts...),
Coupon: newCoupon(db, opts...),
MediaAsset: newMediaAsset(db, opts...),
Notification: newNotification(db, opts...),
Order: newOrder(db, opts...),
OrderItem: newOrderItem(db, opts...),
PayoutAccount: newPayoutAccount(db, opts...),
Tenant: newTenant(db, opts...),
TenantInvite: newTenantInvite(db, opts...),
TenantJoinRequest: newTenantJoinRequest(db, opts...),
TenantLedger: newTenantLedger(db, opts...),
TenantUser: newTenantUser(db, opts...),
User: newUser(db, opts...),
UserCommentAction: newUserCommentAction(db, opts...),
UserContentAction: newUserContentAction(db, opts...),
UserCoupon: newUserCoupon(db, opts...),
db: db,
Comment: newComment(db, opts...),
Content: newContent(db, opts...),
ContentAccess: newContentAccess(db, opts...),
ContentAsset: newContentAsset(db, opts...),
ContentPrice: newContentPrice(db, opts...),
Coupon: newCoupon(db, opts...),
MediaAsset: newMediaAsset(db, opts...),
Notification: newNotification(db, opts...),
NotificationTemplate: newNotificationTemplate(db, opts...),
Order: newOrder(db, opts...),
OrderItem: newOrderItem(db, opts...),
PayoutAccount: newPayoutAccount(db, opts...),
Tenant: newTenant(db, opts...),
TenantInvite: newTenantInvite(db, opts...),
TenantJoinRequest: newTenantJoinRequest(db, opts...),
TenantLedger: newTenantLedger(db, opts...),
TenantUser: newTenantUser(db, opts...),
User: newUser(db, opts...),
UserCommentAction: newUserCommentAction(db, opts...),
UserContentAction: newUserContentAction(db, opts...),
UserCoupon: newUserCoupon(db, opts...),
}
}
type Query struct {
db *gorm.DB
Comment commentQuery
Content contentQuery
ContentAccess contentAccessQuery
ContentAsset contentAssetQuery
ContentPrice contentPriceQuery
Coupon couponQuery
MediaAsset mediaAssetQuery
Notification notificationQuery
Order orderQuery
OrderItem orderItemQuery
PayoutAccount payoutAccountQuery
Tenant tenantQuery
TenantInvite tenantInviteQuery
TenantJoinRequest tenantJoinRequestQuery
TenantLedger tenantLedgerQuery
TenantUser tenantUserQuery
User userQuery
UserCommentAction userCommentActionQuery
UserContentAction userContentActionQuery
UserCoupon userCouponQuery
Comment commentQuery
Content contentQuery
ContentAccess contentAccessQuery
ContentAsset contentAssetQuery
ContentPrice contentPriceQuery
Coupon couponQuery
MediaAsset mediaAssetQuery
Notification notificationQuery
NotificationTemplate notificationTemplateQuery
Order orderQuery
OrderItem orderItemQuery
PayoutAccount payoutAccountQuery
Tenant tenantQuery
TenantInvite tenantInviteQuery
TenantJoinRequest tenantJoinRequestQuery
TenantLedger tenantLedgerQuery
TenantUser tenantUserQuery
User userQuery
UserCommentAction userCommentActionQuery
UserContentAction userContentActionQuery
UserCoupon userCouponQuery
}
func (q *Query) Available() bool { return q.db != nil }
func (q *Query) clone(db *gorm.DB) *Query {
return &Query{
db: db,
Comment: q.Comment.clone(db),
Content: q.Content.clone(db),
ContentAccess: q.ContentAccess.clone(db),
ContentAsset: q.ContentAsset.clone(db),
ContentPrice: q.ContentPrice.clone(db),
Coupon: q.Coupon.clone(db),
MediaAsset: q.MediaAsset.clone(db),
Notification: q.Notification.clone(db),
Order: q.Order.clone(db),
OrderItem: q.OrderItem.clone(db),
PayoutAccount: q.PayoutAccount.clone(db),
Tenant: q.Tenant.clone(db),
TenantInvite: q.TenantInvite.clone(db),
TenantJoinRequest: q.TenantJoinRequest.clone(db),
TenantLedger: q.TenantLedger.clone(db),
TenantUser: q.TenantUser.clone(db),
User: q.User.clone(db),
UserCommentAction: q.UserCommentAction.clone(db),
UserContentAction: q.UserContentAction.clone(db),
UserCoupon: q.UserCoupon.clone(db),
db: db,
Comment: q.Comment.clone(db),
Content: q.Content.clone(db),
ContentAccess: q.ContentAccess.clone(db),
ContentAsset: q.ContentAsset.clone(db),
ContentPrice: q.ContentPrice.clone(db),
Coupon: q.Coupon.clone(db),
MediaAsset: q.MediaAsset.clone(db),
Notification: q.Notification.clone(db),
NotificationTemplate: q.NotificationTemplate.clone(db),
Order: q.Order.clone(db),
OrderItem: q.OrderItem.clone(db),
PayoutAccount: q.PayoutAccount.clone(db),
Tenant: q.Tenant.clone(db),
TenantInvite: q.TenantInvite.clone(db),
TenantJoinRequest: q.TenantJoinRequest.clone(db),
TenantLedger: q.TenantLedger.clone(db),
TenantUser: q.TenantUser.clone(db),
User: q.User.clone(db),
UserCommentAction: q.UserCommentAction.clone(db),
UserContentAction: q.UserContentAction.clone(db),
UserCoupon: q.UserCoupon.clone(db),
}
}
@@ -152,75 +157,78 @@ func (q *Query) WriteDB() *Query {
func (q *Query) ReplaceDB(db *gorm.DB) *Query {
return &Query{
db: db,
Comment: q.Comment.replaceDB(db),
Content: q.Content.replaceDB(db),
ContentAccess: q.ContentAccess.replaceDB(db),
ContentAsset: q.ContentAsset.replaceDB(db),
ContentPrice: q.ContentPrice.replaceDB(db),
Coupon: q.Coupon.replaceDB(db),
MediaAsset: q.MediaAsset.replaceDB(db),
Notification: q.Notification.replaceDB(db),
Order: q.Order.replaceDB(db),
OrderItem: q.OrderItem.replaceDB(db),
PayoutAccount: q.PayoutAccount.replaceDB(db),
Tenant: q.Tenant.replaceDB(db),
TenantInvite: q.TenantInvite.replaceDB(db),
TenantJoinRequest: q.TenantJoinRequest.replaceDB(db),
TenantLedger: q.TenantLedger.replaceDB(db),
TenantUser: q.TenantUser.replaceDB(db),
User: q.User.replaceDB(db),
UserCommentAction: q.UserCommentAction.replaceDB(db),
UserContentAction: q.UserContentAction.replaceDB(db),
UserCoupon: q.UserCoupon.replaceDB(db),
db: db,
Comment: q.Comment.replaceDB(db),
Content: q.Content.replaceDB(db),
ContentAccess: q.ContentAccess.replaceDB(db),
ContentAsset: q.ContentAsset.replaceDB(db),
ContentPrice: q.ContentPrice.replaceDB(db),
Coupon: q.Coupon.replaceDB(db),
MediaAsset: q.MediaAsset.replaceDB(db),
Notification: q.Notification.replaceDB(db),
NotificationTemplate: q.NotificationTemplate.replaceDB(db),
Order: q.Order.replaceDB(db),
OrderItem: q.OrderItem.replaceDB(db),
PayoutAccount: q.PayoutAccount.replaceDB(db),
Tenant: q.Tenant.replaceDB(db),
TenantInvite: q.TenantInvite.replaceDB(db),
TenantJoinRequest: q.TenantJoinRequest.replaceDB(db),
TenantLedger: q.TenantLedger.replaceDB(db),
TenantUser: q.TenantUser.replaceDB(db),
User: q.User.replaceDB(db),
UserCommentAction: q.UserCommentAction.replaceDB(db),
UserContentAction: q.UserContentAction.replaceDB(db),
UserCoupon: q.UserCoupon.replaceDB(db),
}
}
type queryCtx struct {
Comment *commentQueryDo
Content *contentQueryDo
ContentAccess *contentAccessQueryDo
ContentAsset *contentAssetQueryDo
ContentPrice *contentPriceQueryDo
Coupon *couponQueryDo
MediaAsset *mediaAssetQueryDo
Notification *notificationQueryDo
Order *orderQueryDo
OrderItem *orderItemQueryDo
PayoutAccount *payoutAccountQueryDo
Tenant *tenantQueryDo
TenantInvite *tenantInviteQueryDo
TenantJoinRequest *tenantJoinRequestQueryDo
TenantLedger *tenantLedgerQueryDo
TenantUser *tenantUserQueryDo
User *userQueryDo
UserCommentAction *userCommentActionQueryDo
UserContentAction *userContentActionQueryDo
UserCoupon *userCouponQueryDo
Comment *commentQueryDo
Content *contentQueryDo
ContentAccess *contentAccessQueryDo
ContentAsset *contentAssetQueryDo
ContentPrice *contentPriceQueryDo
Coupon *couponQueryDo
MediaAsset *mediaAssetQueryDo
Notification *notificationQueryDo
NotificationTemplate *notificationTemplateQueryDo
Order *orderQueryDo
OrderItem *orderItemQueryDo
PayoutAccount *payoutAccountQueryDo
Tenant *tenantQueryDo
TenantInvite *tenantInviteQueryDo
TenantJoinRequest *tenantJoinRequestQueryDo
TenantLedger *tenantLedgerQueryDo
TenantUser *tenantUserQueryDo
User *userQueryDo
UserCommentAction *userCommentActionQueryDo
UserContentAction *userContentActionQueryDo
UserCoupon *userCouponQueryDo
}
func (q *Query) WithContext(ctx context.Context) *queryCtx {
return &queryCtx{
Comment: q.Comment.WithContext(ctx),
Content: q.Content.WithContext(ctx),
ContentAccess: q.ContentAccess.WithContext(ctx),
ContentAsset: q.ContentAsset.WithContext(ctx),
ContentPrice: q.ContentPrice.WithContext(ctx),
Coupon: q.Coupon.WithContext(ctx),
MediaAsset: q.MediaAsset.WithContext(ctx),
Notification: q.Notification.WithContext(ctx),
Order: q.Order.WithContext(ctx),
OrderItem: q.OrderItem.WithContext(ctx),
PayoutAccount: q.PayoutAccount.WithContext(ctx),
Tenant: q.Tenant.WithContext(ctx),
TenantInvite: q.TenantInvite.WithContext(ctx),
TenantJoinRequest: q.TenantJoinRequest.WithContext(ctx),
TenantLedger: q.TenantLedger.WithContext(ctx),
TenantUser: q.TenantUser.WithContext(ctx),
User: q.User.WithContext(ctx),
UserCommentAction: q.UserCommentAction.WithContext(ctx),
UserContentAction: q.UserContentAction.WithContext(ctx),
UserCoupon: q.UserCoupon.WithContext(ctx),
Comment: q.Comment.WithContext(ctx),
Content: q.Content.WithContext(ctx),
ContentAccess: q.ContentAccess.WithContext(ctx),
ContentAsset: q.ContentAsset.WithContext(ctx),
ContentPrice: q.ContentPrice.WithContext(ctx),
Coupon: q.Coupon.WithContext(ctx),
MediaAsset: q.MediaAsset.WithContext(ctx),
Notification: q.Notification.WithContext(ctx),
NotificationTemplate: q.NotificationTemplate.WithContext(ctx),
Order: q.Order.WithContext(ctx),
OrderItem: q.OrderItem.WithContext(ctx),
PayoutAccount: q.PayoutAccount.WithContext(ctx),
Tenant: q.Tenant.WithContext(ctx),
TenantInvite: q.TenantInvite.WithContext(ctx),
TenantJoinRequest: q.TenantJoinRequest.WithContext(ctx),
TenantLedger: q.TenantLedger.WithContext(ctx),
TenantUser: q.TenantUser.WithContext(ctx),
User: q.User.WithContext(ctx),
UserCommentAction: q.UserCommentAction.WithContext(ctx),
UserContentAction: q.UserContentAction.WithContext(ctx),
UserCoupon: q.UserCoupon.WithContext(ctx),
}
}