1
Fork 0

Merge pull request #155 from stz184/search-orm-migration

Migrated the search to gorm
This commit is contained in:
Viktor Strate Kløvedal 2020-12-19 09:46:24 +01:00 committed by GitHub
commit ae8e764539
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 52 additions and 52 deletions

View File

@ -3,70 +3,70 @@ package resolvers
import ( import (
"context" "context"
"github.com/photoview/photoview/api/graphql/auth"
"github.com/pkg/errors"
"gorm.io/gorm/clause"
"github.com/photoview/photoview/api/graphql/models" "github.com/photoview/photoview/api/graphql/models"
) )
func (r *Resolver) Search(ctx context.Context, query string, _limitMedia *int, _limitAlbums *int) (*models.SearchResult, error) { func (r *Resolver) Search(ctx context.Context, query string, _limitMedia *int, _limitAlbums *int) (*models.SearchResult, error) {
// user := auth.UserFromContext(ctx) user := auth.UserFromContext(ctx)
// if user == nil { if user == nil {
// return nil, auth.ErrUnauthorized return nil, auth.ErrUnauthorized
// } }
// limitMedia := 10 limitMedia := 10
// limitAlbums := 10 limitAlbums := 10
// if _limitMedia != nil { if _limitMedia != nil {
// limitMedia = *_limitMedia limitMedia = *_limitMedia
// } }
// if _limitAlbums != nil { if _limitAlbums != nil {
// limitAlbums = *_limitAlbums limitAlbums = *_limitAlbums
// } }
// wildQuery := "%" + query + "%" wildQuery := "%" + query + "%"
// photoRows, err := r.Database.Query(` var media []*models.Media
// SELECT media.* FROM media JOIN album ON media.album_id = album.album_id
// WHERE album.owner_id = ? AND ( media.title LIKE ? OR media.path LIKE ? ) err := r.Database.Joins("Album").
// ORDER BY ( Where("Album.owner_id = ? AND ( media.title LIKE ? OR media.path LIKE ? )", user.ID, wildQuery, wildQuery).
// case when media.title LIKE ? then 2 Clauses(clause.OrderBy{
// when media.path LIKE ? then 1 Expression: clause.Expr{
// end ) DESC SQL: "(CASE WHEN media.title LIKE ? THEN 2 WHEN media.path LIKE ? THEN 1 END) DESC",
// LIMIT ? Vars: []interface{}{wildQuery, wildQuery},
// `, user.UserID, wildQuery, wildQuery, wildQuery, wildQuery, limitMedia) WithoutParentheses: true},
// if err != nil { }).
// return nil, errors.Wrapf(err, "searching media") Limit(limitMedia).
// } Find(&media).Error
// photos, err := models.NewMediaFromRows(photoRows) if err != nil {
// if err != nil { return nil, errors.Wrapf(err, "searching media")
// return nil, err }
// }
var albums []*models.Album
// albumRows, err := r.Database.Query(`
// SELECT * FROM album err = r.Database.Where("owner_id = ? AND (title LIKE ? OR path LIKE ?)", user.ID, wildQuery, wildQuery).
// WHERE owner_id = ? AND ( title LIKE ? OR path LIKE ? ) Clauses(clause.OrderBy{
// ORDER BY ( Expression: clause.Expr{
// case when title LIKE ? then 2 SQL: "(CASE WHEN title LIKE ? THEN 2 WHEN path LIKE ? THEN 1 END) DESC",
// when path LIKE ? then 1 Vars: []interface{}{wildQuery, wildQuery},
// end ) DESC WithoutParentheses: true},
// LIMIT ? }).
// `, user.UserID, wildQuery, wildQuery, wildQuery, wildQuery, limitAlbums) Limit(limitAlbums).
// if err != nil { Find(&albums).Error
// return nil, errors.Wrapf(err, "searching albums")
// } if err != nil {
return nil, errors.Wrapf(err, "searching albums")
// albums, err := models.NewAlbumsFromRows(albumRows) }
// if err != nil {
// return nil, err result := models.SearchResult{
// } Query: query,
Media: media,
// result := models.SearchResult{ Albums: albums,
// Query: query, }
// Media: photos,
// Albums: albums, return &result, nil
// }
// return &result, nil
panic("to be migrated")
} }