photoprism/internal/models/tag.go

37 lines
588 B
Go
Raw Normal View History

2018-09-16 19:09:40 +02:00
package models
2018-07-18 15:17:56 +02:00
import (
"github.com/gosimple/slug"
2018-07-18 15:17:56 +02:00
"github.com/jinzhu/gorm"
"strings"
2018-07-18 15:17:56 +02:00
)
type Tag struct {
gorm.Model
TagLabel string `gorm:"type:varchar(100);unique_index"`
TagSlug string `gorm:"type:varchar(100);unique_index"`
}
func NewTag(label string) *Tag {
if label == "" {
label = "unknown"
}
tagLabel := strings.ToLower(label)
tagSlug := slug.MakeLang(tagLabel, "en")
result := &Tag{
TagLabel: tagLabel,
TagSlug: tagSlug,
}
return result
}
func (t *Tag) FirstOrCreate(db *gorm.DB) *Tag {
db.FirstOrCreate(t, "tag_label = ?", t.TagLabel)
return t
2018-07-18 15:17:56 +02:00
}