1
0
api/ent/schema/card.go
2024-05-17 10:03:59 +09:00

141 lines
2.2 KiB
Go

package schema
import (
"time"
"math/rand"
"entgo.io/ent"
"entgo.io/ent/schema/edge"
"entgo.io/ent/schema/field"
)
// Card holds the schema definition for the Card entity.
type Card struct {
ent.Schema
}
var url = "https://card.syui.ai"
var card int
var super string
var skill string
var cp int
func (Card) Fields() []ent.Field {
return []ent.Field{
field.String("password").
NotEmpty().
Immutable().
Sensitive(),
field.Int("card").
DefaultFunc(func() int {
rand.Seed(time.Now().UnixNano())
var a = rand.Intn(20)
if a == 1 {
card = rand.Intn(3) + 123
} else if a == 2 {
card = rand.Intn(14) + 1
} else {
card = 0
}
return card
}).
Optional(),
field.String("skill").
DefaultFunc(func() string {
rand.Seed(time.Now().UnixNano())
var a = rand.Intn(30)
if a == 1 {
skill = "critical"
} else {
skill = "normal"
}
if card == 0 {
skill = "normal"
}
return skill
}).
Optional(),
field.String("status").
//Immutable().
DefaultFunc(func() string {
rand.Seed(time.Now().UnixNano())
var a = rand.Intn(40)
if a == 1 {
super = "super"
} else {
super = "normal"
}
if card == 0 {
super = "normal"
}
return super
}).
Optional(),
field.String("token").
Optional().
Sensitive(),
field.Int("cp").
//Immutable().
DefaultFunc(func() int {
rand.Seed(time.Now().UnixNano())
var cp = 1 + rand.Intn(200)
if cp == 2 {
cp = 50 + rand.Intn(300)
}
if card >= 1 {
cp = 200 + cp + rand.Intn(500)
}
if super == "super" {
cp = 400 + cp + rand.Intn(700)
}
if skill == "critical" {
cp = 400 + cp + rand.Intn(700)
}
if card == 22 {
cp = 800 + cp + rand.Intn(1500)
}
if card == 25 {
cp = 0
}
return cp
}).
Optional(),
field.String("url").
Default(url).
Optional(),
field.Int("count").
Optional(),
field.String("author").
Optional(),
field.Time("created_at").
Immutable().
Optional().
Default(func() time.Time {
return time.Now().In(jst)
}),
}
}
func (Card) Edges() []ent.Edge {
return []ent.Edge{
edge.From("owner", User.Type).
Ref("card").
Unique().
Required(),
}
}