152 lines
3.4 KiB
Go
152 lines
3.4 KiB
Go
package test
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"time"
|
|
|
|
"git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models"
|
|
"github.com/davecgh/go-spew/spew"
|
|
gonanoid "github.com/matoous/go-nanoid/v2"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func GenerateRandomTags(num int) []models.Tag {
|
|
var tags []models.Tag
|
|
tagTypes := []models.TagType{"general", "species", "character", "artist", "lore", "meta", "invalid", "copyright"}
|
|
|
|
for i := 0; i < num; i++ {
|
|
id, _ := gonanoid.New(10)
|
|
tagName := spew.Sprintf("tag_name_%s", id)
|
|
|
|
tagType := tagTypes[rand.Intn(len(tagTypes))]
|
|
|
|
tag := models.Tag{
|
|
Name: models.TagName(tagName),
|
|
Type: tagType,
|
|
}
|
|
|
|
tags = append(tags, tag)
|
|
}
|
|
|
|
return tags
|
|
}
|
|
|
|
func GenerateRandomTagGroups(tags []models.Tag, num int) []models.TagGroup {
|
|
var tagGroups []models.TagGroup
|
|
|
|
for i := 0; i < num; i++ {
|
|
id, _ := gonanoid.New(10)
|
|
groupName := fmt.Sprintf("tag_group_%s", id)
|
|
randomTag := tags[rand.Intn(len(tags))]
|
|
|
|
tagGroup := models.TagGroup{
|
|
Name: models.TagGroupName(groupName),
|
|
TagID: randomTag.Name,
|
|
}
|
|
|
|
tagGroups = append(tagGroups, tagGroup)
|
|
}
|
|
|
|
return tagGroups
|
|
}
|
|
|
|
func GenerateRandomTagAlias(tags []models.Tag, num int) []models.TagAlias {
|
|
var tagAliases []models.TagAlias
|
|
|
|
for i := 0; i < num; i++ {
|
|
id, _ := gonanoid.New(10)
|
|
groupName := fmt.Sprintf("tag_alias_%s", id)
|
|
randomTag := tags[rand.Intn(len(tags))]
|
|
|
|
tagAlias := models.TagAlias{
|
|
Name: models.TagAliasName(groupName),
|
|
TagID: randomTag.Name,
|
|
}
|
|
|
|
tagAliases = append(tagAliases, tagAlias)
|
|
}
|
|
|
|
return tagAliases
|
|
}
|
|
|
|
func GenerateRandomSources(num int) []models.Source {
|
|
var sources []models.Source
|
|
|
|
for i := 0; i < num; i++ {
|
|
id, _ := gonanoid.New(10)
|
|
displayName, _ := gonanoid.New(10)
|
|
domain, _ := gonanoid.New(10)
|
|
icon, _ := gonanoid.New(10)
|
|
id = spew.Sprintf("source_name_%s", id)
|
|
|
|
source := models.Source{
|
|
BaseModel: models.BaseModel[models.SourceID]{
|
|
ID: models.SourceID(id),
|
|
CreatedAt: time.Now(),
|
|
UpdatedAt: time.Now(),
|
|
DeletedAt: gorm.DeletedAt{},
|
|
},
|
|
DisplayName: displayName,
|
|
Domain: models.SourceDomain(domain),
|
|
Icon: icon,
|
|
UserSources: nil,
|
|
References: nil,
|
|
}
|
|
|
|
sources = append(sources, source)
|
|
}
|
|
|
|
return sources
|
|
}
|
|
|
|
func GenerateRandomPosts(num int) []models.Post {
|
|
var sources []models.Post
|
|
ratings := []models.Rating{"safe", "explicit", "questionable", "unknown"}
|
|
|
|
for i := 0; i < num; i++ {
|
|
id, _ := gonanoid.New(10)
|
|
id = spew.Sprintf("source_name_%s", id)
|
|
rating := ratings[rand.Intn(len(ratings))]
|
|
|
|
source := models.Post{
|
|
BaseModel: models.BaseModel[models.PostID]{
|
|
ID: models.PostID(id),
|
|
CreatedAt: time.Now(),
|
|
UpdatedAt: time.Now(),
|
|
DeletedAt: gorm.DeletedAt{},
|
|
},
|
|
Rating: rating,
|
|
}
|
|
|
|
sources = append(sources, source)
|
|
}
|
|
|
|
return sources
|
|
}
|
|
|
|
func GenerateRandomUserFavorites(userID models.UserID, postID models.PostID, userSourceID models.UserSourceID, num int) []models.UserFavorite {
|
|
var userFavorites []models.UserFavorite
|
|
|
|
for i := 0; i < num; i++ {
|
|
id, _ := gonanoid.New(6)
|
|
id = spew.Sprintf("user_favorite_name_%s", id)
|
|
|
|
source := models.UserFavorite{
|
|
BaseModel: models.BaseModel[models.UserFavoriteID]{
|
|
ID: models.UserFavoriteID(id),
|
|
CreatedAt: time.Now(),
|
|
UpdatedAt: time.Now(),
|
|
DeletedAt: gorm.DeletedAt{},
|
|
},
|
|
UserID: userID,
|
|
PostID: postID,
|
|
UserSourceID: userSourceID,
|
|
}
|
|
|
|
userFavorites = append(userFavorites, source)
|
|
}
|
|
|
|
return userFavorites
|
|
}
|