mirror of
https://github.com/keven1024/015.git
synced 2026-05-26 07:08:02 +00:00
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package tasks
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"pkg/models"
|
|
"worker/internal/utils"
|
|
|
|
"github.com/hibiken/asynq"
|
|
"github.com/samber/lo"
|
|
)
|
|
|
|
type ShareRemoveTaskPayload struct {
|
|
ShareId string `json:"share_id"`
|
|
FileId string `json:"file_id"`
|
|
}
|
|
|
|
func RemoveShare(ctx context.Context, task *asynq.Task) error {
|
|
var payload ShareRemoveTaskPayload
|
|
if err := json.Unmarshal(task.Payload(), &payload); err != nil {
|
|
return err
|
|
}
|
|
shareIDs, err := models.GetRedisFileShareRelational(payload.FileId)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
shareIDs = lo.Filter(shareIDs, func(x string, _ int) bool {
|
|
return x != payload.ShareId
|
|
})
|
|
if len(shareIDs) == 0 {
|
|
rdb, ctx := utils.GetRedisClient()
|
|
uploadPath, err := utils.GetUploadDirPath()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
filePath := filepath.Join(uploadPath, payload.FileId)
|
|
rdb.HDel(ctx, "015:fileShareRelational", payload.FileId)
|
|
rdb.HDel(ctx, "015:fileInfoMap", payload.FileId)
|
|
os.RemoveAll(filePath)
|
|
return nil
|
|
}
|
|
models.SetRedisFileShareRelational(payload.FileId, shareIDs)
|
|
return nil
|
|
}
|
|
|
|
func ShareNotify(ctx context.Context, task *asynq.Task) error {
|
|
return nil
|
|
}
|