You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.1 KiB
49 lines
1.1 KiB
package validate
|
|
|
|
import (
|
|
"fmt"
|
|
"git.aiterp.net/stufflog3/stufflog3/internal/genutils"
|
|
"git.aiterp.net/stufflog3/stufflog3/models"
|
|
)
|
|
|
|
func Tags(existingTags, addTags, removeTags []string) error {
|
|
for i, tag := range addTags {
|
|
if !Tag(tag) {
|
|
return models.BadInputError{
|
|
Object: "ItemInput",
|
|
Field: "addTags",
|
|
Problem: fmt.Sprintf("Invalid tag: %s", tag),
|
|
Element: tag,
|
|
}
|
|
}
|
|
|
|
if genutils.Contains(addTags[:i], tag) {
|
|
return models.BadInputError{
|
|
Object: "ItemUpdate",
|
|
Field: "addTags",
|
|
Problem: fmt.Sprintf("The tag %s already exists!", tag),
|
|
Element: tag,
|
|
}
|
|
}
|
|
if genutils.Contains(existingTags, tag) {
|
|
return models.BadInputError{
|
|
Object: "ItemUpdate",
|
|
Field: "addTags",
|
|
Problem: fmt.Sprintf("The tag %s already exists!", tag),
|
|
Element: tag,
|
|
}
|
|
}
|
|
}
|
|
for _, tag := range removeTags {
|
|
if !genutils.Contains(existingTags, tag) {
|
|
return models.BadInputError{
|
|
Object: "ItemUpdate",
|
|
Field: "removeTags",
|
|
Problem: fmt.Sprintf("The tag %s does not exist!", tag),
|
|
Element: tag,
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|