Add stash_ids to performer, scene, studio import/export (#1916)

* add stash_ids to performer, scene, studio import/export
This commit is contained in:
7dJx1qP 2021-10-28 20:12:39 -04:00 committed by GitHub
parent 87036a07bc
commit c6a326ca64
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 156 additions and 55 deletions

View file

@ -35,6 +35,7 @@ type Performer struct {
DeathDate string `json:"death_date,omitempty"`
HairColor string `json:"hair_color,omitempty"`
Weight int `json:"weight,omitempty"`
StashIDs []models.StashID `json:"stash_ids,omitempty"`
}
func LoadPerformerFile(filePath string) (*Performer, error) {

View file

@ -56,6 +56,7 @@ type Scene struct {
Cover string `json:"cover,omitempty"`
CreatedAt models.JSONTime `json:"created_at,omitempty"`
UpdatedAt models.JSONTime `json:"updated_at,omitempty"`
StashIDs []models.StashID `json:"stash_ids,omitempty"`
}
func LoadSceneFile(filePath string) (*Scene, error) {

View file

@ -18,6 +18,7 @@ type Studio struct {
Rating int `json:"rating,omitempty"`
Details string `json:"details,omitempty"`
Aliases []string `json:"aliases,omitempty"`
StashIDs []models.StashID `json:"stash_ids,omitempty"`
}
func LoadStudioFile(filePath string) (*Studio, error) {

View file

@ -91,6 +91,18 @@ func ToJSON(reader models.PerformerReader, performer *models.Performer) (*jsonsc
newPerformerJSON.Image = utils.GetBase64StringFromData(image)
}
stashIDs, _ := reader.GetStashIDs(performer.ID)
var ret []models.StashID
for _, stashID := range stashIDs {
newJoin := models.StashID{
StashID: stashID.StashID,
Endpoint: stashID.Endpoint,
}
ret = append(ret, newJoin)
}
newPerformerJSON.StashIDs = ret
return &newPerformerJSON, nil
}

View file

@ -44,6 +44,14 @@ const (
var imageBytes = []byte("imageBytes")
var stashID = models.StashID{
StashID: "StashID",
Endpoint: "Endpoint",
}
var stashIDs = []*models.StashID{
&stashID,
}
const image = "aW1hZ2VCeXRlcw=="
var birthDate = models.SQLiteDate{
@ -144,6 +152,9 @@ func createFullJSONPerformer(name string, image string) *jsonschema.Performer {
DeathDate: deathDate.String,
HairColor: hairColor,
Weight: weight,
StashIDs: []models.StashID{
stashID,
},
}
}
@ -197,6 +208,9 @@ func TestToJSON(t *testing.T) {
mockPerformerReader.On("GetImage", noImageID).Return(nil, nil).Once()
mockPerformerReader.On("GetImage", errImageID).Return(nil, imageErr).Once()
mockPerformerReader.On("GetStashIDs", performerID).Return(stashIDs, nil).Once()
mockPerformerReader.On("GetStashIDs", noImageID).Return(nil, nil).Once()
for i, s := range scenarios {
tag := s.input
json, err := ToJSON(mockPerformerReader, &tag)

View file

@ -123,6 +123,12 @@ func (i *Importer) PostImport(id int) error {
}
}
if len(i.Input.StashIDs) > 0 {
if err := i.ReaderWriter.UpdateStashIDs(id, i.Input.StashIDs); err != nil {
return fmt.Errorf("error setting stash id: %v", err)
}
}
return nil
}

View file

@ -65,6 +65,18 @@ func ToBasicJSON(reader models.SceneReader, scene *models.Scene) (*jsonschema.Sc
newSceneJSON.Cover = utils.GetBase64StringFromData(cover)
}
stashIDs, _ := reader.GetStashIDs(scene.ID)
var ret []models.StashID
for _, stashID := range stashIDs {
newJoin := models.StashID{
StashID: stashID.StashID,
Endpoint: stashID.Endpoint,
}
ret = append(ret, newJoin)
}
newSceneJSON.StashIDs = ret
return &newSceneJSON, nil
}

View file

@ -85,6 +85,14 @@ var names = []string{
var imageBytes = []byte("imageBytes")
var stashID = models.StashID{
StashID: "StashID",
Endpoint: "Endpoint",
}
var stashIDs = []*models.StashID{
&stashID,
}
const imageBase64 = "aW1hZ2VCeXRlcw=="
var (
@ -174,6 +182,9 @@ func createFullJSONScene(image string) *jsonschema.Scene {
Time: updateTime,
},
Cover: image,
StashIDs: []models.StashID{
stashID,
},
}
}
@ -222,6 +233,9 @@ func TestToJSON(t *testing.T) {
mockSceneReader.On("GetCover", noImageID).Return(nil, nil).Once()
mockSceneReader.On("GetCover", errImageID).Return(nil, imageErr).Once()
mockSceneReader.On("GetStashIDs", sceneID).Return(stashIDs, nil).Once()
mockSceneReader.On("GetStashIDs", noImageID).Return(nil, nil).Once()
for i, s := range scenarios {
scene := s.input
json, err := ToBasicJSON(mockSceneReader, &scene)

View file

@ -386,6 +386,12 @@ func (i *Importer) PostImport(id int) error {
}
}
if len(i.Input.StashIDs) > 0 {
if err := i.ReaderWriter.UpdateStashIDs(id, i.Input.StashIDs); err != nil {
return fmt.Errorf("error setting stash id: %v", err)
}
}
return nil
}

View file

@ -58,5 +58,17 @@ func ToJSON(reader models.StudioReader, studio *models.Studio) (*jsonschema.Stud
newStudioJSON.Image = utils.GetBase64StringFromData(image)
}
stashIDs, _ := reader.GetStashIDs(studio.ID)
var ret []models.StashID
for _, stashID := range stashIDs {
newJoin := models.StashID{
StashID: stashID.StashID,
Endpoint: stashID.Endpoint,
}
ret = append(ret, newJoin)
}
newStudioJSON.StashIDs = ret
return &newStudioJSON, nil
}

View file

@ -39,6 +39,14 @@ var parentStudio models.Studio = models.Studio{
var imageBytes = []byte("imageBytes")
var stashID = models.StashID{
StashID: "StashID",
Endpoint: "Endpoint",
}
var stashIDs = []*models.StashID{
&stashID,
}
const image = "aW1hZ2VCeXRlcw=="
var (
@ -95,6 +103,9 @@ func createFullJSONStudio(parentStudio, image string, aliases []string) *jsonsch
Image: image,
Rating: rating,
Aliases: aliases,
StashIDs: []models.StashID{
stashID,
},
}
}
@ -180,6 +191,10 @@ func TestToJSON(t *testing.T) {
mockStudioReader.On("GetAliases", missingParentStudioID).Return(nil, nil).Once()
mockStudioReader.On("GetAliases", errAliasID).Return(nil, aliasErr).Once()
mockStudioReader.On("GetStashIDs", studioID).Return(stashIDs, nil).Once()
mockStudioReader.On("GetStashIDs", noImageID).Return(nil, nil).Once()
mockStudioReader.On("GetStashIDs", missingParentStudioID).Return(stashIDs, nil).Once()
for i, s := range scenarios {
studio := s.input
json, err := ToJSON(mockStudioReader, &studio)

View file

@ -101,6 +101,12 @@ func (i *Importer) PostImport(id int) error {
}
}
if len(i.Input.StashIDs) > 0 {
if err := i.ReaderWriter.UpdateStashIDs(id, i.Input.StashIDs); err != nil {
return fmt.Errorf("error setting stash id: %v", err)
}
}
if err := i.ReaderWriter.UpdateAliases(id, i.Input.Aliases); err != nil {
return fmt.Errorf("error setting tag aliases: %v", err)
}

View file

@ -20,6 +20,7 @@
* Optimised scanning process. ([#1816](https://github.com/stashapp/stash/pull/1816))
### 🐛 Bug fixes
* Include stash ids in import/export. ([#1916](https://github.com/stashapp/stash/pull/1916))
* Fix tiny menu items in scrape menu when a stash-box instance has no name. ([#1889](https://github.com/stashapp/stash/pull/1889))
* Fix creating missing entities removing the incorrect entry from the missing list in the scrape dialog. ([#1890](https://github.com/stashapp/stash/pull/1890))
* Allow creating missing Studio during movie scrape. ([#1899](https://github.com/stashapp/stash/pull/1899))