mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-05 23:26:38 +08:00
refactor(plugins): restructure admin and message_gateway into standard layered sub-packages
This commit is contained in:
@@ -25,11 +25,11 @@ import (
|
||||
pkgcache "Wavelet/pkg/cache/disk"
|
||||
"Wavelet/pkg/ginutil"
|
||||
|
||||
"Wavelet/plugins/domain/upload/repository"
|
||||
uploadstorage "Wavelet/plugins/domain/upload/storage"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"golang.org/x/sync/singleflight"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -76,15 +76,15 @@ const (
|
||||
func ServeFileByID(c *gin.Context) {
|
||||
upload, err := GetUploadRecordByID(c)
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
response.AbortNotFound(c, "文件记录未找到")
|
||||
if repository.IsRecordNotFound(err) {
|
||||
response.AbortNotFound(c, shared.ErrFileRecordNotFound)
|
||||
return
|
||||
}
|
||||
if _, ok := err.(*strconv.NumError); ok {
|
||||
response.AbortBadRequest(c, "无效的上传ID")
|
||||
response.AbortBadRequest(c, shared.ErrInvalidUploadID)
|
||||
return
|
||||
}
|
||||
response.AbortInternal(c, "服务器内部错误")
|
||||
response.AbortInternal(c, shared.ErrInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -277,7 +277,7 @@ func ImageCompressionCacheKey(upload *models.Upload, quality string) string {
|
||||
func serveOriginal(c *gin.Context, upload *models.Upload) {
|
||||
obj, err := uploadstorage.OpenStoredObject(c.Request.Context(), upload)
|
||||
if err != nil {
|
||||
response.AbortNotFound(c, "文件未找到")
|
||||
response.AbortNotFound(c, shared.ErrFileNotFound)
|
||||
return
|
||||
}
|
||||
defer func() { _ = obj.Body.Close() }()
|
||||
|
||||
@@ -111,7 +111,7 @@ func DeleteFile(c *gin.Context) {
|
||||
|
||||
if _, err := softDeleteUpload(ctx, uploadID); err != nil {
|
||||
if isRecordNotFound(err) {
|
||||
response.AbortNotFound(c, "文件记录未找到")
|
||||
response.AbortNotFound(c, shared.ErrFileRecordNotFound)
|
||||
return
|
||||
}
|
||||
response.AbortBadRequest(c, shared.ErrDeleteFileFailed)
|
||||
@@ -230,11 +230,11 @@ func DeleteMyFile(c *gin.Context) {
|
||||
|
||||
if _, err := softDeleteOwnedUpload(ctx, currUser.ID, uploadID); err != nil {
|
||||
if isRecordNotFound(err) {
|
||||
response.AbortNotFound(c, "文件记录未找到")
|
||||
response.AbortNotFound(c, shared.ErrFileRecordNotFound)
|
||||
return
|
||||
}
|
||||
if err == ingest.ErrForbidden {
|
||||
response.AbortForbidden(c, "无权操作")
|
||||
response.AbortForbidden(c, shared.ErrOperationForbidden)
|
||||
return
|
||||
}
|
||||
response.AbortBadRequest(c, shared.ErrDeleteFileFailed)
|
||||
@@ -284,11 +284,11 @@ func UpdateMyFile(c *gin.Context) {
|
||||
updated, err := updateOwnedUpload(ctx, currUser.ID, uploadID, updateMyUploadInput(req))
|
||||
if err != nil {
|
||||
if isRecordNotFound(err) {
|
||||
response.AbortNotFound(c, "文件记录未找到")
|
||||
response.AbortNotFound(c, shared.ErrFileRecordNotFound)
|
||||
return
|
||||
}
|
||||
if err == ingest.ErrForbidden {
|
||||
response.AbortForbidden(c, "无权操作")
|
||||
response.AbortForbidden(c, shared.ErrOperationForbidden)
|
||||
return
|
||||
}
|
||||
response.AbortBadRequest(c, shared.ErrUpdateFileFailed)
|
||||
|
||||
@@ -8,10 +8,7 @@ import (
|
||||
"Wavelet/plugins/domain/upload/models"
|
||||
"Wavelet/plugins/domain/upload/repository"
|
||||
"context"
|
||||
"errors"
|
||||
"sort"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func listUploadFiles(ctx context.Context, filter repository.UploadListFilter) (int64, []models.Upload, error) {
|
||||
@@ -82,5 +79,5 @@ func loadUploadStats(ctx context.Context) ([]models.UploadStat, error) {
|
||||
}
|
||||
|
||||
func isRecordNotFound(err error) bool {
|
||||
return errors.Is(err, gorm.ErrRecordNotFound)
|
||||
return repository.IsRecordNotFound(err)
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ import (
|
||||
"Wavelet/pkg/ginutil"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
|
||||
uploadstorage "Wavelet/plugins/domain/upload/storage"
|
||||
)
|
||||
@@ -170,8 +169,8 @@ func UploadFile(c *gin.Context) {
|
||||
func DownloadFile(c *gin.Context) {
|
||||
upload, err := filesrv.GetUploadRecordByID(c)
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
response.AbortNotFound(c, "文件记录未找到")
|
||||
if isRecordNotFound(err) {
|
||||
response.AbortNotFound(c, shared.ErrFileRecordNotFound)
|
||||
return
|
||||
}
|
||||
if _, ok := err.(*strconv.NumError); ok {
|
||||
@@ -306,7 +305,7 @@ func resolveUploadAccessMode(c *gin.Context, uploadType string) (int, string) {
|
||||
|
||||
accessMode, err := strconv.Atoi(accessModeStr)
|
||||
if err != nil || (accessMode != 0 && accessMode != 1) {
|
||||
return 0, "无效的 access_mode 参数"
|
||||
return 0, shared.ErrInvalidAccessModeParam
|
||||
}
|
||||
return accessMode, ""
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"Wavelet/plugins/domain/upload/models"
|
||||
"Wavelet/plugins/domain/upload/shared"
|
||||
"context"
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"gorm.io/gorm"
|
||||
@@ -137,3 +138,9 @@ func ListUploadStats(ctx context.Context) ([]models.UploadStat, error) {
|
||||
}
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
// IsRecordNotFound reports whether err is the persistence "record not found" sentinel.
|
||||
// Upper layers must use this helper instead of importing gorm directly.
|
||||
func IsRecordNotFound(err error) bool {
|
||||
return errors.Is(err, gorm.ErrRecordNotFound)
|
||||
}
|
||||
|
||||
@@ -40,4 +40,10 @@ const (
|
||||
ErrQueryTypeListFailed = "查询文件类型列表失败"
|
||||
ErrUpdateFileFailed = "更新文件失败"
|
||||
ErrUnauthorized = "未登录"
|
||||
ErrFileRecordNotFound = "文件记录未找到"
|
||||
ErrFileNotFound = "文件未找到"
|
||||
ErrOperationForbidden = "无权操作"
|
||||
ErrInvalidUploadID = "无效的上传ID"
|
||||
ErrInvalidAccessModeParam = "无效的 access_mode 参数"
|
||||
ErrInternalServerError = "服务器内部错误"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user