From 406a3575ef968d86e7aad322f61d33874277d132 Mon Sep 17 00:00:00 2001 From: Peter - Ubuntu dual boot Date: Sat, 18 Sep 2021 20:37:59 +0100 Subject: [PATCH] Reverting changes after I forgot to create a new branch for testing. --- api/database/database.go | 8 - api/database/migration_faces.go | 211 ------------------ api/graph/schema.graphqls | 28 --- api/graphql/generated.go | 61 +---- api/graphql/models/face_detection.go | 5 +- api/graphql/schema.graphql | 1 - api/scanner/face_detection/face_detector.go | 3 +- .../sidebar/__generated__/resetAlbumCover.ts | 2 +- .../sidebar/__generated__/setAlbumCover.ts | 2 +- 9 files changed, 9 insertions(+), 312 deletions(-) delete mode 100644 api/database/migration_faces.go delete mode 100644 api/graph/schema.graphqls diff --git a/api/database/database.go b/api/database/database.go index b52b4a55..ac94e125 100644 --- a/api/database/database.go +++ b/api/database/database.go @@ -188,14 +188,6 @@ func MigrateDatabase(db *gorm.DB) error { log.Printf("Failed to run exif fields migration: %v\n", err) } - // // PJ-Watson: Attempt to add new column for FaceGroup.PreviewImageFace - if !(db.Migrator().HasColumn(&models.FaceGroup{}, "preview_image_face")) { - db.Migrator().AddColumn(&models.FaceGroup{}, "preview_image_face") - } - if err := migrate_face_preview(db); err != nil { - log.Printf("Failed to run face groups preview image migration: %v\n", err) - } - return nil } diff --git a/api/database/migration_faces.go b/api/database/migration_faces.go deleted file mode 100644 index ead67389..00000000 --- a/api/database/migration_faces.go +++ /dev/null @@ -1,211 +0,0 @@ -package database - -import ( - "fmt" - - "github.com/photoview/photoview/api/graphql/models" - // "github.com/pkg/errors" - "gorm.io/gorm" -) - -// Migrate face groups -func migrate_face_preview(db *gorm.DB) error { - - // err = db.Transaction(func(tx *gorm.DB) error { - var facegroup models.FaceGroup - - fmt.Println("Got here") - - rows, err := db.Model(&models.FaceGroup{}).Rows() - - if err != nil { - return err - } - - for rows.Next() { - db.ScanRows(rows, &facegroup) - - if err := db.Model(&facegroup).Update("preview_image_face", &facegroup.ImageFaces[0]).Error; err != nil { - return err - } - - // fmt.Println(product) - } - - // if err := r.Database.Model(&album).Update("cover_id", coverID).Error; err != nil { - // return nil, err - // } - // faceGroupColumns, err := db.Migrator().ColumnTypes(&models.FaceGroup{}) - // if err != nil { - // return err - // } - - // err = db.Transaction(func(tx *gorm.DB) error { - // for _, faceCol := range faceGroupColumns { - // if faceCol.Name() == "preview_image_face" { - // - // - // switch exifCol.DatabaseTypeName() { - // case "double", "numeric", "real": - // // correct type, do nothing - // default: - // // do migration - // if err := migrate_exif_fields_exposure(db); err != nil { - // return err - // } - // } - // } - // - // if exifCol.Name() == "flash" { - // switch exifCol.DatabaseTypeName() { - // case "double", "numeric", "real": - // // correct type, do nothing - // default: - // // do migration - // if err := migrate_exif_fields_flash(db); err != nil { - // return err - // } - // } - // } - // } - - // if err := db.AutoMigrate(&models.MediaEXIF{}); err != nil { - // return errors.Wrap(err, "failed to auto migrate media_exif after exposure conversion") - // } - // - // return nil - // }) - - // if err != nil { - // return err - // } - - return nil -} - -// func migrate_exif_fields_exposure(db *gorm.DB) error { -// log.Println("Migrating `media_exif.exposure` from string to double") -// -// err := db.Transaction(func(tx *gorm.DB) error { -// -// if err := tx.Exec("UPDATE media_exif SET exposure = NULL WHERE exposure = ''").Error; err != nil { -// return errors.Wrapf(err, "convert flash attribute empty values to NULL") -// } -// -// type exifModel struct { -// ID int `gorm:"primarykey"` -// Exposure *string -// } -// var results []exifModel -// -// return tx.Model(&exifModel{}).Table("media_exif").Where("exposure LIKE '%/%'").FindInBatches(&results, 100, func(tx *gorm.DB, batch int) error { -// for _, result := range results { -// -// if result.Exposure == nil { -// continue -// } -// -// frac := strings.Split(*result.Exposure, "/") -// if len(frac) != 2 { -// return errors.Errorf("failed to convert exposure value (%s) expected format x/y", frac) -// } -// -// numerator, err := strconv.ParseFloat(frac[0], 64) -// if err != nil { -// return err -// } -// -// denominator, err := strconv.ParseFloat(frac[1], 64) -// if err != nil { -// return err -// } -// -// decimalValue := numerator / denominator -// *result.Exposure = fmt.Sprintf("%f", decimalValue) -// } -// -// tx.Save(&results) -// -// return nil -// }).Error -// }) -// -// if err != nil { -// return errors.Wrap(err, "migrating `media_exif.exposure` failed") -// } -// -// return nil -// } -// -// func migrate_exif_fields_flash(db *gorm.DB) error { -// log.Println("Migrating `media_exif.flash` from string to int") -// -// err := db.Transaction(func(tx *gorm.DB) error { -// -// if err := tx.Exec("UPDATE media_exif SET flash = NULL WHERE flash = ''").Error; err != nil { -// return errors.Wrapf(err, "convert flash attribute empty values to NULL") -// } -// -// type exifModel struct { -// ID int `gorm:"primarykey"` -// Flash *string -// } -// var results []exifModel -// -// var flashDescriptions = map[int]string{ -// 0x0: "No Flash", -// 0x1: "Fired", -// 0x5: "Fired, Return not detected", -// 0x7: "Fired, Return detected", -// 0x8: "On, Did not fire", -// 0x9: "On, Fired", -// 0xD: "On, Return not detected", -// 0xF: "On, Return detected", -// 0x10: "Off, Did not fire", -// 0x14: "Off, Did not fire, Return not detected", -// 0x18: "Auto, Did not fire", -// 0x19: "Auto, Fired", -// 0x1D: "Auto, Fired, Return not detected", -// 0x1F: "Auto, Fired, Return detected", -// 0x20: "No flash function", -// 0x30: "Off, No flash function", -// 0x41: "Fired, Red-eye reduction", -// 0x45: "Fired, Red-eye reduction, Return not detected", -// 0x47: "Fired, Red-eye reduction, Return detected", -// 0x49: "On, Red-eye reduction", -// 0x4D: "On, Red-eye reduction, Return not detected", -// 0x4F: "On, Red-eye reduction, Return detected", -// 0x50: "Off, Red-eye reduction", -// 0x58: "Auto, Did not fire, Red-eye reduction", -// 0x59: "Auto, Fired, Red-eye reduction", -// 0x5D: "Auto, Fired, Red-eye reduction, Return not detected", -// 0x5F: "Auto, Fired, Red-eye reduction, Return detected", -// } -// -// return tx.Model(&exifModel{}).Table("media_exif").Where("flash IS NOT NULL").FindInBatches(&results, 100, func(tx *gorm.DB, batch int) error { -// for _, result := range results { -// -// if result.Flash == nil { -// continue -// } -// -// for index, name := range flashDescriptions { -// if *result.Flash == name { -// *result.Flash = fmt.Sprintf("%d", index) -// break -// } -// } -// } -// -// tx.Save(&results) -// -// return nil -// }).Error -// }) -// -// if err != nil { -// return errors.Wrap(err, "migrating `media_exif.flash` failed") -// } -// -// return nil -// } diff --git a/api/graph/schema.graphqls b/api/graph/schema.graphqls deleted file mode 100644 index f6e1bac5..00000000 --- a/api/graph/schema.graphqls +++ /dev/null @@ -1,28 +0,0 @@ -# GraphQL schema example -# -# https://gqlgen.com/getting-started/ - -type Todo { - id: ID! - text: String! - done: Boolean! - user: User! -} - -type User { - id: ID! - name: String! -} - -type Query { - todos: [Todo!]! -} - -input NewTodo { - text: String! - userId: String! -} - -type Mutation { - createTodo(input: NewTodo!): Todo! -} \ No newline at end of file diff --git a/api/graphql/generated.go b/api/graphql/generated.go index e1b3652c..36d4d2a9 100644 --- a/api/graphql/generated.go +++ b/api/graphql/generated.go @@ -77,11 +77,10 @@ type ComplexityRoot struct { } FaceGroup struct { - ID func(childComplexity int) int - ImageFaceCount func(childComplexity int) int - ImageFaces func(childComplexity int, paginate *models.Pagination) int - Label func(childComplexity int) int - PreviewImageFace func(childComplexity int) int + ID func(childComplexity int) int + ImageFaceCount func(childComplexity int) int + ImageFaces func(childComplexity int, paginate *models.Pagination) int + Label func(childComplexity int) int } FaceRectangle struct { @@ -513,13 +512,6 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.FaceGroup.Label(childComplexity), true - case "FaceGroup.PreviewImageFace": - if e.complexity.FaceGroup.PreviewImageFace == nil { - break - } - - return e.complexity.FaceGroup.PreviewImageFace(childComplexity), true - case "FaceRectangle.maxX": if e.complexity.FaceRectangle.MaxX == nil { break @@ -2059,7 +2051,6 @@ type FaceGroup { label: String imageFaces(paginate: Pagination): [ImageFace!]! imageFaceCount: Int! - PreviewImageFace: ImageFace! } type ImageFace { @@ -3627,41 +3618,6 @@ func (ec *executionContext) _FaceGroup_imageFaceCount(ctx context.Context, field return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) _FaceGroup_PreviewImageFace(ctx context.Context, field graphql.CollectedField, obj *models.FaceGroup) (ret graphql.Marshaler) { - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null - } - }() - fc := &graphql.FieldContext{ - Object: "FaceGroup", - Field: field, - Args: nil, - IsMethod: false, - IsResolver: false, - } - - 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.PreviewImageFace, nil - }) - if err != nil { - ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } - return graphql.Null - } - res := resTmp.(models.ImageFace) - fc.Result = res - return ec.marshalNImageFace2githubᚗcomᚋphotoviewᚋphotoviewᚋapiᚋgraphqlᚋmodelsᚐImageFace(ctx, field.Selections, res) -} - func (ec *executionContext) _FaceRectangle_minX(ctx context.Context, field graphql.CollectedField, obj *models.FaceRectangle) (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { @@ -10504,11 +10460,6 @@ func (ec *executionContext) _FaceGroup(ctx context.Context, sel ast.SelectionSet } return res }) - case "PreviewImageFace": - out.Values[i] = ec._FaceGroup_PreviewImageFace(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&invalids, 1) - } default: panic("unknown field " + strconv.Quote(field.Name)) } @@ -12210,10 +12161,6 @@ func (ec *executionContext) marshalNID2ᚕintᚄ(ctx context.Context, sel ast.Se return ret } -func (ec *executionContext) marshalNImageFace2githubᚗcomᚋphotoviewᚋphotoviewᚋapiᚋgraphqlᚋmodelsᚐImageFace(ctx context.Context, sel ast.SelectionSet, v models.ImageFace) graphql.Marshaler { - return ec._ImageFace(ctx, sel, &v) -} - func (ec *executionContext) marshalNImageFace2ᚕᚖgithubᚗcomᚋphotoviewᚋphotoviewᚋapiᚋgraphqlᚋmodelsᚐImageFaceᚄ(ctx context.Context, sel ast.SelectionSet, v []*models.ImageFace) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup diff --git a/api/graphql/models/face_detection.go b/api/graphql/models/face_detection.go index 25675cc1..dca422f6 100644 --- a/api/graphql/models/face_detection.go +++ b/api/graphql/models/face_detection.go @@ -17,9 +17,8 @@ import ( type FaceGroup struct { Model - Label *string - ImageFaces []ImageFace `gorm:"constraint:OnDelete:CASCADE;"` - PreviewImageFace ImageFace `gorm:"constraint:OnDelete:CASCADE;"` + Label *string + ImageFaces []ImageFace `gorm:"constraint:OnDelete:CASCADE;"` } type ImageFace struct { diff --git a/api/graphql/schema.graphql b/api/graphql/schema.graphql index 2c571aa6..8a6d372f 100644 --- a/api/graphql/schema.graphql +++ b/api/graphql/schema.graphql @@ -383,7 +383,6 @@ type FaceGroup { label: String imageFaces(paginate: Pagination): [ImageFace!]! imageFaceCount: Int! - PreviewImageFace: ImageFace! } type ImageFace { diff --git a/api/scanner/face_detection/face_detector.go b/api/scanner/face_detection/face_detector.go index 6ec36bc2..506cb887 100644 --- a/api/scanner/face_detection/face_detector.go +++ b/api/scanner/face_detection/face_detector.go @@ -154,8 +154,7 @@ func (fd *FaceDetector) classifyFace(db *gorm.DB, face *face.Face, media *models log.Println("No match, assigning new face") faceGroup = models.FaceGroup{ - ImageFaces: []models.ImageFace{imageFace}, - PreviewImageFace: []models.ImageFace{imageFace}[0], + ImageFaces: []models.ImageFace{imageFace}, } if err := db.Create(&faceGroup).Error; err != nil { diff --git a/ui/src/components/sidebar/__generated__/resetAlbumCover.ts b/ui/src/components/sidebar/__generated__/resetAlbumCover.ts index dbd452fc..c9410349 100644 --- a/ui/src/components/sidebar/__generated__/resetAlbumCover.ts +++ b/ui/src/components/sidebar/__generated__/resetAlbumCover.ts @@ -14,7 +14,7 @@ export interface resetAlbumCover_resetAlbumCover { export interface resetAlbumCover { /** - * Reset the assigned cover photo for an album + * Reset the assigned cover image for an album */ resetAlbumCover: resetAlbumCover_resetAlbumCover } diff --git a/ui/src/components/sidebar/__generated__/setAlbumCover.ts b/ui/src/components/sidebar/__generated__/setAlbumCover.ts index beba8fa0..6df1e641 100644 --- a/ui/src/components/sidebar/__generated__/setAlbumCover.ts +++ b/ui/src/components/sidebar/__generated__/setAlbumCover.ts @@ -14,7 +14,7 @@ export interface setAlbumCover_setAlbumCover { export interface setAlbumCover { /** - * Assign a cover photo to an album + * Assign a cover image to an album */ setAlbumCover: setAlbumCover_setAlbumCover }