mirror of
https://github.com/photoprism/photoprism.git
synced 2026-01-23 02:24:24 +00:00
Entities: Improve Stringer interface implementations for logging #4490
Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
parent
f6b5d03465
commit
fc5d8cb9a9
14 changed files with 119 additions and 12 deletions
|
|
@ -435,6 +435,10 @@ func (m *Album) BeforeCreate(scope *gorm.Scope) error {
|
|||
|
||||
// String returns the id or name as string.
|
||||
func (m *Album) String() string {
|
||||
if m == nil {
|
||||
return "Album<nil>"
|
||||
}
|
||||
|
||||
if m.AlbumSlug != "" {
|
||||
return clean.Log(m.AlbumSlug)
|
||||
}
|
||||
|
|
@ -447,7 +451,7 @@ func (m *Album) String() string {
|
|||
return clean.Log(m.AlbumUID)
|
||||
}
|
||||
|
||||
return "[unknown album]"
|
||||
return "*Album"
|
||||
}
|
||||
|
||||
// IsMoment tests if the album is of type moment.
|
||||
|
|
|
|||
|
|
@ -482,7 +482,7 @@ func TestAlbum_String(t *testing.T) {
|
|||
AlbumType: AlbumManual,
|
||||
AlbumTitle: "",
|
||||
}
|
||||
assert.Equal(t, "[unknown album]", album.String())
|
||||
assert.Equal(t, "*Album", album.String())
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -542,6 +542,10 @@ func (m *User) SetUploadPath(dir string) *User {
|
|||
|
||||
// String returns an identifier that can be used in logs.
|
||||
func (m *User) String() string {
|
||||
if m == nil {
|
||||
return "User<nil>"
|
||||
}
|
||||
|
||||
if n := m.Username(); n != "" {
|
||||
return clean.LogQuote(n)
|
||||
} else if n = m.FullName(); n != "" {
|
||||
|
|
|
|||
|
|
@ -143,6 +143,10 @@ func FirstOrCreateCamera(m *Camera) *Camera {
|
|||
|
||||
// String returns an identifier that can be used in logs.
|
||||
func (m *Camera) String() string {
|
||||
if m == nil {
|
||||
return "Camera<nil>"
|
||||
}
|
||||
|
||||
return clean.Log(m.CameraName)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -142,6 +142,10 @@ func FirstOrCreateLens(m *Lens) *Lens {
|
|||
|
||||
// String returns an identifier that can be used in logs.
|
||||
func (m *Lens) String() string {
|
||||
if m == nil {
|
||||
return "Lens<nil>"
|
||||
}
|
||||
|
||||
return clean.Log(m.LensName)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -255,5 +255,9 @@ func FindValidLinks(token, shared string) (found Links) {
|
|||
|
||||
// String returns a human-readable identifier for use in logs.
|
||||
func (m *Link) String() string {
|
||||
if m == nil {
|
||||
return "Link<nil>"
|
||||
}
|
||||
|
||||
return clean.Log(m.LinkUID)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -358,7 +358,7 @@ func (m *Marker) SyncSubject(updateRelated bool) (err error) {
|
|||
UpdateColumns(Map{"subj_uid": m.SubjUID, "subj_src": SrcAuto, "marker_review": false}).Error; err != nil {
|
||||
return fmt.Errorf("%s (update related markers)", err)
|
||||
} else if res.RowsAffected > 0 && m.face != nil {
|
||||
log.Debugf("markers: matched %s with %s", subj.SubjName, m.FaceID)
|
||||
log.Debugf("markers: matched %s with %s", subj, m.FaceID)
|
||||
return m.face.RefreshPhotos()
|
||||
}
|
||||
|
||||
|
|
@ -691,6 +691,21 @@ func (m *Marker) Uncertainty() int {
|
|||
return 50
|
||||
}
|
||||
|
||||
// String returns the id or name as string.
|
||||
func (m *Marker) String() string {
|
||||
if m == nil {
|
||||
return "Marker<nil>"
|
||||
}
|
||||
|
||||
if m.MarkerName != "" {
|
||||
return m.MarkerName
|
||||
} else if m.MarkerUID != "" {
|
||||
return m.MarkerUID
|
||||
}
|
||||
|
||||
return "*Marker"
|
||||
}
|
||||
|
||||
// FindMarker returns an existing row if exists.
|
||||
func FindMarker(markerUid string) *Marker {
|
||||
if markerUid == "" {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package entity
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/photoprism/photoprism/internal/form"
|
||||
|
|
@ -662,3 +663,20 @@ func TestMarker_OverlapPercent(t *testing.T) {
|
|||
assert.Equal(t, 0, m1.OverlapPercent(m3))
|
||||
assert.Equal(t, 96, m1.OverlapPercent(m4))
|
||||
}
|
||||
|
||||
func TestMarker_String(t *testing.T) {
|
||||
t.Run("Nil", func(t *testing.T) {
|
||||
var m *Marker
|
||||
assert.Equal(t, "Marker<nil>", m.String())
|
||||
assert.Equal(t, "Marker<nil>", fmt.Sprintf("%s", m))
|
||||
})
|
||||
t.Run("New", func(t *testing.T) {
|
||||
m := &Marker{}
|
||||
assert.Equal(t, "*Marker", m.String())
|
||||
assert.Equal(t, "*Marker", fmt.Sprintf("%s", m))
|
||||
})
|
||||
t.Run("Name", func(t *testing.T) {
|
||||
m := MarkerFixtures.Pointer("1000003-4")
|
||||
assert.Equal(t, "Jens Mander", m.String())
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -142,5 +142,9 @@ func (m *Password) Empty() bool {
|
|||
|
||||
// String returns the BCrypt Password Hash.
|
||||
func (m *Password) String() string {
|
||||
if m == nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
return m.Hash
|
||||
}
|
||||
|
|
|
|||
|
|
@ -239,6 +239,10 @@ func (m *Photo) GetUID() string {
|
|||
|
||||
// String returns the id or name as string.
|
||||
func (m *Photo) String() string {
|
||||
if m == nil {
|
||||
return "Photo<nil>"
|
||||
}
|
||||
|
||||
if m.PhotoName != "" {
|
||||
return clean.Log(path.Join(m.PhotoPath, m.PhotoName))
|
||||
} else if m.OriginalName != "" {
|
||||
|
|
@ -249,7 +253,7 @@ func (m *Photo) String() string {
|
|||
return fmt.Sprintf("id %d", m.ID)
|
||||
}
|
||||
|
||||
return "(unknown)"
|
||||
return "*Photo"
|
||||
}
|
||||
|
||||
// FirstOrCreate fetches an existing row from the database or inserts a new one.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package entity
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
|
|
@ -329,17 +330,23 @@ func TestPhotos_UIDs(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestPhoto_String(t *testing.T) {
|
||||
t.Run("ReturnOriginal", func(t *testing.T) {
|
||||
photo := Photo{PhotoUID: "", PhotoName: "", OriginalName: "holidayOriginal"}
|
||||
assert.Equal(t, "holidayOriginal", photo.String())
|
||||
t.Run("Nil", func(t *testing.T) {
|
||||
var m *Photo
|
||||
assert.Equal(t, "Photo<nil>", m.String())
|
||||
assert.Equal(t, "Photo<nil>", fmt.Sprintf("%s", m))
|
||||
})
|
||||
t.Run("Unknown", func(t *testing.T) {
|
||||
photo := Photo{PhotoUID: "", PhotoName: "", OriginalName: ""}
|
||||
assert.Equal(t, "(unknown)", photo.String())
|
||||
t.Run("New", func(t *testing.T) {
|
||||
m := &Photo{PhotoUID: "", PhotoName: "", OriginalName: ""}
|
||||
assert.Equal(t, "*Photo", m.String())
|
||||
assert.Equal(t, "*Photo", fmt.Sprintf("%s", m))
|
||||
})
|
||||
t.Run("Original", func(t *testing.T) {
|
||||
m := Photo{PhotoUID: "", PhotoName: "", OriginalName: "holidayOriginal"}
|
||||
assert.Equal(t, "holidayOriginal", m.String())
|
||||
})
|
||||
t.Run("UID", func(t *testing.T) {
|
||||
photo := Photo{PhotoUID: "ps6sg6be2lvl0k53", PhotoName: "", OriginalName: ""}
|
||||
assert.Equal(t, "uid ps6sg6be2lvl0k53", photo.String())
|
||||
m := Photo{PhotoUID: "ps6sg6be2lvl0k53", PhotoName: "", OriginalName: ""}
|
||||
assert.Equal(t, "uid ps6sg6be2lvl0k53", m.String())
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,6 +60,10 @@ func (m *Reaction) Emoji() react.Emoji {
|
|||
|
||||
// String returns the user reaction as string.
|
||||
func (m *Reaction) String() string {
|
||||
if m == nil {
|
||||
return "Reaction<nil>"
|
||||
}
|
||||
|
||||
return m.Reaction
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -530,3 +530,20 @@ func (m *Subject) MergeWith(other *Subject) error {
|
|||
func (m *Subject) Links() Links {
|
||||
return FindLinks("", m.SubjUID)
|
||||
}
|
||||
|
||||
// String returns the id or name as string.
|
||||
func (m *Subject) String() string {
|
||||
if m == nil {
|
||||
return "Subject<nil>"
|
||||
}
|
||||
|
||||
if m.SubjName != "" {
|
||||
return m.SubjName
|
||||
} else if m.SubjSlug != "" {
|
||||
return m.SubjSlug
|
||||
} else if m.SubjUID != "" {
|
||||
return m.SubjUID
|
||||
}
|
||||
|
||||
return "*Subject"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package entity
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
|
|
@ -255,6 +256,23 @@ func TestSubject_Links(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestSubject_String(t *testing.T) {
|
||||
t.Run("Nil", func(t *testing.T) {
|
||||
var m *Subject
|
||||
assert.Equal(t, "Subject<nil>", m.String())
|
||||
assert.Equal(t, "Subject<nil>", fmt.Sprintf("%s", m))
|
||||
})
|
||||
t.Run("New", func(t *testing.T) {
|
||||
m := &Subject{}
|
||||
assert.Equal(t, "*Subject", m.String())
|
||||
assert.Equal(t, "*Subject", fmt.Sprintf("%s", m))
|
||||
})
|
||||
t.Run("JohnDoe", func(t *testing.T) {
|
||||
m := SubjectFixtures.Pointer("john-doe")
|
||||
assert.Equal(t, "John Doe", m.String())
|
||||
})
|
||||
}
|
||||
|
||||
func TestSubject_Update(t *testing.T) {
|
||||
t.Run("Success", func(t *testing.T) {
|
||||
m := NewSubject("Update Me", SubjPerson, SrcAuto)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue