mirror of
https://github.com/stashapp/stash.git
synced 2025-12-08 01:13:09 +01:00
Initialise UpdatedAt for stash ids (#5680)
* Initialise imported zero time to epoch time Fixes null time error after importing stash id without updatedAt set * Update unit tests
This commit is contained in:
parent
1e05766571
commit
b8af147a8d
5 changed files with 82 additions and 46 deletions
|
|
@ -121,12 +121,14 @@ func Test_PerformerStore_Create(t *testing.T) {
|
||||||
Aliases: models.NewRelatedStrings(aliases),
|
Aliases: models.NewRelatedStrings(aliases),
|
||||||
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
CreatedAt: createdAt,
|
CreatedAt: createdAt,
|
||||||
|
|
@ -283,12 +285,14 @@ func Test_PerformerStore_Update(t *testing.T) {
|
||||||
TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithPerformer], tagIDs[tagIdx1WithDupName]}),
|
TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithPerformer], tagIDs[tagIdx1WithDupName]}),
|
||||||
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
CreatedAt: createdAt,
|
CreatedAt: createdAt,
|
||||||
|
|
@ -518,12 +522,14 @@ func Test_PerformerStore_UpdatePartial(t *testing.T) {
|
||||||
StashIDs: &models.UpdateStashIDs{
|
StashIDs: &models.UpdateStashIDs{
|
||||||
StashIDs: []models.StashID{
|
StashIDs: []models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Mode: models.RelationshipUpdateModeSet,
|
Mode: models.RelationshipUpdateModeSet,
|
||||||
|
|
@ -560,12 +566,14 @@ func Test_PerformerStore_UpdatePartial(t *testing.T) {
|
||||||
TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithPerformer], tagIDs[tagIdx1WithDupName]}),
|
TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithPerformer], tagIDs[tagIdx1WithDupName]}),
|
||||||
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
CreatedAt: createdAt,
|
CreatedAt: createdAt,
|
||||||
|
|
@ -2075,8 +2083,9 @@ func testPerformerStashIDs(ctx context.Context, t *testing.T, s *models.Performe
|
||||||
const stashIDStr = "stashID"
|
const stashIDStr = "stashID"
|
||||||
const endpoint = "endpoint"
|
const endpoint = "endpoint"
|
||||||
stashID := models.StashID{
|
stashID := models.StashID{
|
||||||
StashID: stashIDStr,
|
StashID: stashIDStr,
|
||||||
Endpoint: endpoint,
|
Endpoint: endpoint,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
}
|
}
|
||||||
|
|
||||||
qb := db.Performer
|
qb := db.Performer
|
||||||
|
|
|
||||||
|
|
@ -133,12 +133,14 @@ func Test_sceneQueryBuilder_Create(t *testing.T) {
|
||||||
}),
|
}),
|
||||||
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
ResumeTime: float64(resumeTime),
|
ResumeTime: float64(resumeTime),
|
||||||
|
|
@ -178,12 +180,14 @@ func Test_sceneQueryBuilder_Create(t *testing.T) {
|
||||||
}),
|
}),
|
||||||
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
ResumeTime: resumeTime,
|
ResumeTime: resumeTime,
|
||||||
|
|
@ -362,12 +366,14 @@ func Test_sceneQueryBuilder_Update(t *testing.T) {
|
||||||
}),
|
}),
|
||||||
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
ResumeTime: resumeTime,
|
ResumeTime: resumeTime,
|
||||||
|
|
@ -590,12 +596,14 @@ func Test_sceneQueryBuilder_UpdatePartial(t *testing.T) {
|
||||||
StashIDs: &models.UpdateStashIDs{
|
StashIDs: &models.UpdateStashIDs{
|
||||||
StashIDs: []models.StashID{
|
StashIDs: []models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Mode: models.RelationshipUpdateModeSet,
|
Mode: models.RelationshipUpdateModeSet,
|
||||||
|
|
@ -634,12 +642,14 @@ func Test_sceneQueryBuilder_UpdatePartial(t *testing.T) {
|
||||||
}),
|
}),
|
||||||
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
StashIDs: models.NewRelatedStashIDs([]models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
ResumeTime: resumeTime,
|
ResumeTime: resumeTime,
|
||||||
|
|
@ -741,12 +751,14 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) {
|
||||||
|
|
||||||
stashIDs = []models.StashID{
|
stashIDs = []models.StashID{
|
||||||
{
|
{
|
||||||
StashID: stashID1,
|
StashID: stashID1,
|
||||||
Endpoint: endpoint1,
|
Endpoint: endpoint1,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
StashID: stashID2,
|
StashID: stashID2,
|
||||||
Endpoint: endpoint2,
|
Endpoint: endpoint2,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
@ -4377,8 +4389,9 @@ func testSceneStashIDs(ctx context.Context, t *testing.T, s *models.Scene) {
|
||||||
const stashIDStr = "stashID"
|
const stashIDStr = "stashID"
|
||||||
const endpoint = "endpoint"
|
const endpoint = "endpoint"
|
||||||
stashID := models.StashID{
|
stashID := models.StashID{
|
||||||
StashID: stashIDStr,
|
StashID: stashIDStr,
|
||||||
Endpoint: endpoint,
|
Endpoint: endpoint,
|
||||||
|
UpdatedAt: epochTime,
|
||||||
}
|
}
|
||||||
|
|
||||||
qb := db.Scene
|
qb := db.Scene
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@ import (
|
||||||
_ "github.com/stashapp/stash/pkg/sqlite/migrations"
|
_ "github.com/stashapp/stash/pkg/sqlite/migrations"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var epochTime = time.Unix(0, 0).UTC()
|
||||||
|
|
||||||
const (
|
const (
|
||||||
spacedSceneTitle = "zzz yyy xxx"
|
spacedSceneTitle = "zzz yyy xxx"
|
||||||
)
|
)
|
||||||
|
|
@ -1028,8 +1030,9 @@ func getObjectDate(index int) *models.Date {
|
||||||
|
|
||||||
func sceneStashID(i int) models.StashID {
|
func sceneStashID(i int) models.StashID {
|
||||||
return models.StashID{
|
return models.StashID{
|
||||||
StashID: getSceneStringValue(i, "stashid"),
|
StashID: getSceneStringValue(i, "stashid"),
|
||||||
Endpoint: getSceneStringValue(i, "endpoint"),
|
Endpoint: getSceneStringValue(i, "endpoint"),
|
||||||
|
UpdatedAt: epochTime,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -618,6 +618,9 @@ func testStudioStashIDs(ctx context.Context, t *testing.T, s *models.Studio) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #5563 - set the UpdatedAt field to epoch
|
||||||
|
stashID.UpdatedAt = epochTime
|
||||||
|
|
||||||
assert.Equal(t, []models.StashID{stashID}, s.StashIDs.List())
|
assert.Equal(t, []models.StashID{stashID}, s.StashIDs.List())
|
||||||
|
|
||||||
// remove stash ids and ensure was updated
|
// remove stash ids and ensure was updated
|
||||||
|
|
|
||||||
|
|
@ -309,7 +309,15 @@ func (t *stashIDTable) get(ctx context.Context, id int) ([]models.StashID, error
|
||||||
return ret, nil
|
return ret, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var epochTime = time.Unix(0, 0).UTC()
|
||||||
|
|
||||||
func (t *stashIDTable) insertJoin(ctx context.Context, id int, v models.StashID) (sql.Result, error) {
|
func (t *stashIDTable) insertJoin(ctx context.Context, id int, v models.StashID) (sql.Result, error) {
|
||||||
|
// #5563 - it's possible that zero-value updated at timestamps are provided via import
|
||||||
|
// replace them with the epoch time
|
||||||
|
if v.UpdatedAt.IsZero() {
|
||||||
|
v.UpdatedAt = epochTime
|
||||||
|
}
|
||||||
|
|
||||||
var q = dialect.Insert(t.table.table).Cols(t.idColumn.GetCol(), "endpoint", "stash_id", "updated_at").Vals(
|
var q = dialect.Insert(t.table.table).Cols(t.idColumn.GetCol(), "endpoint", "stash_id", "updated_at").Vals(
|
||||||
goqu.Vals{id, v.Endpoint, v.StashID, v.UpdatedAt},
|
goqu.Vals{id, v.Endpoint, v.StashID, v.UpdatedAt},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue