Refactoring part 2.4: Long func refactoring in graphql/resolvers (#1076)

* Split long functions and optimize code

* Addressing comments

* Remove unnecessary input param

---------

Co-authored-by: Konstantin Koval
This commit is contained in:
Kostiantyn
2024-10-11 12:31:49 +03:00
committed by GitHub
parent 7e0c38b5b4
commit dd90d476ad
10 changed files with 132 additions and 59 deletions

View File

@@ -11,7 +11,9 @@ import (
"gorm.io/gorm"
)
func (r *queryResolver) MyAlbums(ctx context.Context, order *models.Ordering, paginate *models.Pagination, onlyRoot *bool, showEmpty *bool, onlyWithFavorites *bool) ([]*models.Album, error) {
func (r *queryResolver) MyAlbums(ctx context.Context, order *models.Ordering, paginate *models.Pagination, onlyRoot *bool,
showEmpty *bool, onlyWithFavorites *bool) ([]*models.Album, error) {
user := auth.UserFromContext(ctx)
if user == nil {
return nil, auth.ErrUnauthorized
@@ -21,6 +23,7 @@ func (r *queryResolver) MyAlbums(ctx context.Context, order *models.Ordering, pa
}
func (r *queryResolver) Album(ctx context.Context, id int, tokenCredentials *models.ShareTokenCredentials) (*models.Album, error) {
db := r.DB(ctx)
if tokenCredentials != nil {
@@ -34,7 +37,9 @@ func (r *queryResolver) Album(ctx context.Context, id int, tokenCredentials *mod
return shareToken.Album, nil
}
subAlbum, err := shareToken.Album.GetChildren(db, func(query *gorm.DB) *gorm.DB { return query.Where("sub_albums.id = ?", id) })
subAlbum, err := shareToken.Album.GetChildren(db, func(query *gorm.DB) *gorm.DB {
return query.Where("sub_albums.id = ?", id)
})
if err != nil {
return nil, errors.Wrapf(err, "find sub album of share token (%s)", tokenCredentials.Token)
}
@@ -59,12 +64,16 @@ func (r *Resolver) Album() api.AlbumResolver {
type albumResolver struct{ *Resolver }
func (r *albumResolver) Media(ctx context.Context, album *models.Album, order *models.Ordering, paginate *models.Pagination, onlyFavorites *bool) ([]*models.Media, error) {
func (r *albumResolver) Media(ctx context.Context, album *models.Album, order *models.Ordering,
paginate *models.Pagination, onlyFavorites *bool) ([]*models.Media, error) {
db := r.DB(ctx)
query := db.
Where("media.album_id = ?", album.ID).
Where("media.id IN (?)", db.Model(&models.MediaURL{}).Select("media_urls.media_id").Where("media_urls.media_id = media.id"))
Where("media.id IN (?)", db.Model(&models.MediaURL{}).
Select("media_urls.media_id").
Where("media_urls.media_id = media.id"))
if onlyFavorites != nil && *onlyFavorites == true {
user := auth.UserFromContext(ctx)
@@ -93,7 +102,8 @@ func (r *albumResolver) Thumbnail(ctx context.Context, album *models.Album) (*mo
return album.Thumbnail(r.DB(ctx))
}
func (r *albumResolver) SubAlbums(ctx context.Context, parent *models.Album, order *models.Ordering, paginate *models.Pagination) ([]*models.Album, error) {
func (r *albumResolver) SubAlbums(ctx context.Context, parent *models.Album, order *models.Ordering,
paginate *models.Pagination) ([]*models.Album, error) {
var albums []*models.Album