Skip to content

Commit 957c4fe

Browse files
GykesWithoutPants
andauthored
Bugfix: Fix empty Aliases Being Created for Studios (#6273)
* Filter out empty alias strings in studio modal create * Reject empty alias strings in backend * Remove invalid ValidateAliases call from UpdatePartial This was calling using the values which are not necessarily the final values. --------- Co-authored-by: WithoutPants <[email protected]>
1 parent e3b3fbb commit 957c4fe

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

pkg/sqlite/studio.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func (qb *StudioStore) Create(ctx context.Context, newObject *models.Studio) err
181181
}
182182

183183
if newObject.Aliases.Loaded() {
184-
if err := studio.EnsureAliasesUnique(ctx, id, newObject.Aliases.List(), qb); err != nil {
184+
if err := studio.ValidateAliases(ctx, id, newObject.Aliases.List(), qb); err != nil {
185185
return err
186186
}
187187

@@ -232,10 +232,6 @@ func (qb *StudioStore) UpdatePartial(ctx context.Context, input models.StudioPar
232232
}
233233

234234
if input.Aliases != nil {
235-
if err := studio.EnsureAliasesUnique(ctx, input.ID, input.Aliases.Values, qb); err != nil {
236-
return nil, err
237-
}
238-
239235
if err := studiosAliasesTableMgr.modifyJoins(ctx, input.ID, input.Aliases.Values, input.Aliases.Mode); err != nil {
240236
return nil, err
241237
}

pkg/studio/validate.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
var (
1212
ErrNameMissing = errors.New("studio name must not be blank")
13+
ErrEmptyAlias = errors.New("studio alias must not be an empty string")
1314
ErrStudioOwnAncestor = errors.New("studio cannot be an ancestor of itself")
1415
)
1516

@@ -61,9 +62,12 @@ func EnsureStudioNameUnique(ctx context.Context, id int, name string, qb models.
6162
return nil
6263
}
6364

64-
func EnsureAliasesUnique(ctx context.Context, id int, aliases []string, qb models.StudioQueryer) error {
65+
func ValidateAliases(ctx context.Context, id int, aliases []string, qb models.StudioQueryer) error {
6566
for _, a := range aliases {
66-
if err := EnsureStudioNameUnique(ctx, id, a, qb); err != nil {
67+
if err := validateName(ctx, id, a, qb); err != nil {
68+
if errors.Is(err, ErrNameMissing) {
69+
return ErrEmptyAlias
70+
}
6771
return err
6872
}
6973
}
@@ -77,7 +81,7 @@ func ValidateCreate(ctx context.Context, studio models.Studio, qb models.StudioQ
7781
}
7882

7983
if studio.Aliases.Loaded() && len(studio.Aliases.List()) > 0 {
80-
if err := EnsureAliasesUnique(ctx, 0, studio.Aliases.List(), qb); err != nil {
84+
if err := ValidateAliases(ctx, 0, studio.Aliases.List(), qb); err != nil {
8185
return err
8286
}
8387
}
@@ -131,7 +135,7 @@ func ValidateModify(ctx context.Context, s models.StudioPartial, qb ValidateModi
131135
}
132136

133137
effectiveAliases := s.Aliases.Apply(existing.Aliases.List())
134-
if err := EnsureAliasesUnique(ctx, s.ID, effectiveAliases, qb); err != nil {
138+
if err := ValidateAliases(ctx, s.ID, effectiveAliases, qb); err != nil {
135139
return err
136140
}
137141
}

ui/v2.5/src/components/Tagger/scenes/StudioModal.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,10 @@ const StudioModal: React.FC<IStudioModalProps> = ({
236236
image: studio.image,
237237
parent_id: studio.parent?.stored_id,
238238
details: studio.details,
239-
aliases: studio.aliases?.split(",").map((a) => a.trim()),
239+
aliases: studio.aliases
240+
?.split(",")
241+
.map((a) => a.trim())
242+
.filter((a) => a),
240243
tag_ids: studio.tags?.map((t) => t.stored_id).filter((id) => id) as
241244
| string[]
242245
| undefined,
@@ -270,7 +273,10 @@ const StudioModal: React.FC<IStudioModalProps> = ({
270273
urls: studio.parent?.urls,
271274
image: studio.parent?.image,
272275
details: studio.parent?.details,
273-
aliases: studio.parent?.aliases?.split(",").map((a) => a.trim()),
276+
aliases: studio.parent?.aliases
277+
?.split(",")
278+
.map((a) => a.trim())
279+
.filter((a) => a),
274280
tag_ids: studio.parent?.tags
275281
?.map((t) => t.stored_id)
276282
.filter((id) => id) as string[] | undefined,

0 commit comments

Comments
 (0)