Studio aliases (#1660)

* Add migration to create studio aliases table
* Refactor studioQueryBuilder.Query to use filterBuilder
* Expand GraphQL API with aliases support for studio
* Add aliases support for studios to the UI
* List aliases in details panel
* Allow editing aliases in edit panel
* Add 'aliases' filter when searching
* Find studios by alias in filter / select
* Add auto-tagging based on studio aliases
* Support studio aliases for filename parsing
* Support importing and exporting of studio aliases
* Search for studio alias as well during scraping
This commit is contained in:
gitgiggety
2021-09-09 10:13:42 +02:00
committed by GitHub
parent c91ffe1e58
commit 04e5ac9c2f
34 changed files with 909 additions and 164 deletions

View File

@@ -18,6 +18,7 @@ const (
errImageID = 3
missingParentStudioID = 4
errStudioID = 5
errAliasID = 6
parentStudioID = 10
missingStudioID = 11
@@ -77,7 +78,7 @@ func createEmptyStudio(id int) models.Studio {
}
}
func createFullJSONStudio(parentStudio, image string) *jsonschema.Studio {
func createFullJSONStudio(parentStudio, image string, aliases []string) *jsonschema.Studio {
return &jsonschema.Studio{
Name: studioName,
URL: url,
@@ -91,6 +92,7 @@ func createFullJSONStudio(parentStudio, image string) *jsonschema.Studio {
ParentStudio: parentStudio,
Image: image,
Rating: rating,
Aliases: aliases,
}
}
@@ -117,7 +119,7 @@ func initTestTable() {
scenarios = []testScenario{
testScenario{
createFullStudio(studioID, parentStudioID),
createFullJSONStudio(parentStudioName, image),
createFullJSONStudio(parentStudioName, image, []string{"alias"}),
false,
},
testScenario{
@@ -132,7 +134,7 @@ func initTestTable() {
},
testScenario{
createFullStudio(missingParentStudioID, missingStudioID),
createFullJSONStudio("", image),
createFullJSONStudio("", image, nil),
false,
},
testScenario{
@@ -140,6 +142,11 @@ func initTestTable() {
nil,
true,
},
testScenario{
createFullStudio(errAliasID, parentStudioID),
nil,
true,
},
}
}
@@ -155,6 +162,7 @@ func TestToJSON(t *testing.T) {
mockStudioReader.On("GetImage", errImageID).Return(nil, imageErr).Once()
mockStudioReader.On("GetImage", missingParentStudioID).Return(imageBytes, nil).Maybe()
mockStudioReader.On("GetImage", errStudioID).Return(imageBytes, nil).Maybe()
mockStudioReader.On("GetImage", errAliasID).Return(imageBytes, nil).Maybe()
parentStudioErr := errors.New("error getting parent studio")
@@ -162,6 +170,14 @@ func TestToJSON(t *testing.T) {
mockStudioReader.On("Find", missingStudioID).Return(nil, nil)
mockStudioReader.On("Find", errParentStudioID).Return(nil, parentStudioErr)
aliasErr := errors.New("error getting aliases")
mockStudioReader.On("GetAliases", studioID).Return([]string{"alias"}, nil).Once()
mockStudioReader.On("GetAliases", noImageID).Return(nil, nil).Once()
mockStudioReader.On("GetAliases", errImageID).Return(nil, nil).Once()
mockStudioReader.On("GetAliases", missingParentStudioID).Return(nil, nil).Once()
mockStudioReader.On("GetAliases", errAliasID).Return(nil, aliasErr).Once()
for i, s := range scenarios {
studio := s.input
json, err := ToJSON(mockStudioReader, &studio)