精简后的项目:仅保留 api/ui 源码、文档、构建依赖

This commit is contained in:
gallery
2026-09-11 16:11:09 +08:00
commit 490e85634e
457 changed files with 86862 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
package dataloader
import (
"context"
"net/http"
"github.com/gorilla/mux"
"gorm.io/gorm"
)
type contextKey string
const loadersKey contextKey = "dataloaders"
type Loaders struct {
MediaThumbnail *MediaURLLoader
MediaHighres *MediaURLLoader
MediaVideoWeb *MediaURLLoader
UserFromAccessToken *UserLoader
UserMediaFavorite *UserFavoritesLoader
}
func Middleware(db *gorm.DB) mux.MiddlewareFunc {
return mux.MiddlewareFunc(func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ctx := context.WithValue(r.Context(), loadersKey, &Loaders{
MediaThumbnail: NewThumbnailMediaURLLoader(db),
MediaHighres: NewHighresMediaURLLoader(db),
MediaVideoWeb: NewVideoWebMediaURLLoader(db),
UserFromAccessToken: NewUserLoaderByToken(db),
UserMediaFavorite: NewUserFavoriteLoader(db),
})
r = r.WithContext(ctx)
next.ServeHTTP(w, r)
})
})
}
func For(ctx context.Context) *Loaders {
loaders, ok := ctx.Value(loadersKey).(*Loaders)
if !ok {
return nil
}
return loaders
}