✨ Development SDK of Paperclip
✨ Support update usage by random id
This commit is contained in:
@ -93,10 +93,18 @@ func (v *Server) UpdateVisibility(ctx context.Context, request *proto.UpdateVisi
|
||||
}
|
||||
|
||||
func (v *Server) UpdateUsage(ctx context.Context, request *proto.UpdateUsageRequest) (*proto.UpdateUsageResponse, error) {
|
||||
id := lo.Map(request.GetId(), func(item uint64, _ int) uint {
|
||||
return uint(item)
|
||||
})
|
||||
if rows, err := services.CountAttachmentUsage(id, int(request.GetDelta())); err != nil {
|
||||
tx := database.C
|
||||
if len(request.Id) == 0 && len(request.Rid) == 0 {
|
||||
return nil, status.Error(codes.InvalidArgument, "you must provide at least one id or random id")
|
||||
}
|
||||
if len(request.Id) > 0 {
|
||||
tx = tx.Where("id IN ?", request.Id)
|
||||
}
|
||||
if len(request.Rid) > 0 {
|
||||
tx = tx.Where("rid IN ?", request.Rid)
|
||||
}
|
||||
|
||||
if rows, err := services.CountAttachmentUsage(tx, int(request.GetDelta())); err != nil {
|
||||
return nil, status.Error(codes.Internal, err.Error())
|
||||
} else {
|
||||
return &proto.UpdateUsageResponse{
|
||||
|
@ -318,9 +318,8 @@ func DeleteAttachmentInBatch(items []models.Attachment, txs ...*gorm.DB) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func CountAttachmentUsage(id []uint, delta int) (int64, error) {
|
||||
if tx := database.C.Model(&models.Attachment{}).
|
||||
Where("id IN ?", id).
|
||||
func CountAttachmentUsage(tx *gorm.DB, delta int) (int64, error) {
|
||||
if tx := tx.Model(&models.Attachment{}).
|
||||
Update("used_count", gorm.Expr("used_count + ?", delta)); tx.Error != nil {
|
||||
return tx.RowsAffected, tx.Error
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user