mirror of
https://git.vectorsigma.ru/public/photoview.git
synced 2026-08-03 20:59:03 +00:00
Add db resolver for media.exif
This commit is contained in:
@@ -29,6 +29,9 @@ models:
|
||||
resolver: true
|
||||
Media:
|
||||
model: github.com/photoview/photoview/api/graphql/models.Media
|
||||
fields:
|
||||
exif:
|
||||
resolver: true
|
||||
MediaURL:
|
||||
model: github.com/photoview/photoview/api/graphql/models.MediaURL
|
||||
MediaEXIF:
|
||||
|
||||
@@ -230,6 +230,8 @@ type MediaResolver interface {
|
||||
HighRes(ctx context.Context, obj *models.Media) (*models.MediaURL, error)
|
||||
VideoWeb(ctx context.Context, obj *models.Media) (*models.MediaURL, error)
|
||||
|
||||
Exif(ctx context.Context, obj *models.Media) (*models.MediaEXIF, error)
|
||||
|
||||
Favorite(ctx context.Context, obj *models.Media) (bool, error)
|
||||
|
||||
Shares(ctx context.Context, obj *models.Media) ([]*models.ShareToken, error)
|
||||
@@ -2973,14 +2975,14 @@ func (ec *executionContext) _Media_exif(ctx context.Context, field graphql.Colle
|
||||
Object: "Media",
|
||||
Field: field,
|
||||
Args: nil,
|
||||
IsMethod: false,
|
||||
IsResolver: false,
|
||||
IsMethod: true,
|
||||
IsResolver: true,
|
||||
}
|
||||
|
||||
ctx = graphql.WithFieldContext(ctx, fc)
|
||||
resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
|
||||
ctx = rctx // use context from middleware stack in children
|
||||
return obj.Exif, nil
|
||||
return ec.resolvers.Media().Exif(rctx, obj)
|
||||
})
|
||||
if err != nil {
|
||||
ec.Error(ctx, err)
|
||||
@@ -7971,7 +7973,16 @@ func (ec *executionContext) _Media(ctx context.Context, sel ast.SelectionSet, ob
|
||||
atomic.AddUint32(&invalids, 1)
|
||||
}
|
||||
case "exif":
|
||||
out.Values[i] = ec._Media_exif(ctx, field, obj)
|
||||
field := field
|
||||
out.Concurrently(i, func() (res graphql.Marshaler) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
ec.Error(ctx, ec.Recover(ctx, r))
|
||||
}
|
||||
}()
|
||||
res = ec._Media_exif(ctx, field, obj)
|
||||
return res
|
||||
})
|
||||
case "videoMetadata":
|
||||
out.Values[i] = ec._Media_videoMetadata(ctx, field, obj)
|
||||
case "favorite":
|
||||
|
||||
@@ -192,6 +192,19 @@ func (r *mediaResolver) VideoWeb(ctx context.Context, media *models.Media) (*mod
|
||||
return &url, nil
|
||||
}
|
||||
|
||||
func (r *mediaResolver) Exif(ctx context.Context, media *models.Media) (*models.MediaEXIF, error) {
|
||||
if media.Exif != nil {
|
||||
return media.Exif, nil
|
||||
}
|
||||
|
||||
var exif models.MediaEXIF
|
||||
if err := r.Database.Model(&media).Association("Exif").Find(&exif); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &exif, nil
|
||||
}
|
||||
|
||||
func (r *mediaResolver) Favorite(ctx context.Context, media *models.Media) (bool, error) {
|
||||
user := auth.UserFromContext(ctx)
|
||||
if user == nil {
|
||||
|
||||
Reference in New Issue
Block a user