Add files via upload
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
package schema
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
"entgo.io/ent/schema/field"
|
||||
)
|
||||
|
||||
// Contact 联系方式实体
|
||||
type Contact struct {
|
||||
ent.Schema
|
||||
}
|
||||
|
||||
func (Contact) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.Int("id"),
|
||||
field.String("type").Comment("联系方式类型(Email, Github, 支付宝, 微信等)"),
|
||||
field.String("icon").Comment("图标类名"),
|
||||
field.String("url").Optional().Comment("链接URL(mailto:或https://)"),
|
||||
field.String("qr_code").Optional().Comment("二维码图片URL或路径"),
|
||||
field.String("hover_color").Optional().Comment("悬停颜色"),
|
||||
field.Int("sort_order").Default(0).Comment("排序顺序"),
|
||||
}
|
||||
}
|
||||
|
||||
func (Contact) Edges() []ent.Edge {
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package schema
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
"entgo.io/ent/schema/field"
|
||||
"time"
|
||||
)
|
||||
|
||||
// LoginHistory 登录历史记录实体
|
||||
type LoginHistory struct {
|
||||
ent.Schema
|
||||
}
|
||||
|
||||
func (LoginHistory) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.Int("id"),
|
||||
field.String("username").Comment("用户名"),
|
||||
field.String("ip").Comment("登录IP地址"),
|
||||
field.String("location").Optional().Comment("IP地理位置"),
|
||||
field.String("user_agent").Optional().Comment("用户代理"),
|
||||
field.Time("login_time").Default(time.Now).Comment("登录时间"),
|
||||
field.Bool("success").Default(true).Comment("登录是否成功"),
|
||||
}
|
||||
}
|
||||
|
||||
func (LoginHistory) Edges() []ent.Edge {
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package schema
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
"entgo.io/ent/schema/field"
|
||||
)
|
||||
|
||||
// Site 站点实体
|
||||
type Site struct {
|
||||
ent.Schema
|
||||
}
|
||||
|
||||
func (Site) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.Int("id"),
|
||||
field.String("name").Comment("站点名称"),
|
||||
field.String("url").Comment("站点URL"),
|
||||
field.String("icon").Comment("站点图标类名"),
|
||||
field.Int("sort_order").Default(0).Comment("排序顺序"),
|
||||
}
|
||||
}
|
||||
|
||||
func (Site) Edges() []ent.Edge {
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package schema
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
"entgo.io/ent/schema/field"
|
||||
)
|
||||
|
||||
// SiteConfig 站点配置实体(单例)
|
||||
type SiteConfig struct {
|
||||
ent.Schema
|
||||
}
|
||||
|
||||
func (SiteConfig) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.Int("id").Default(1),
|
||||
field.String("site_name").Comment("站点名称"),
|
||||
field.String("site_url").Comment("站点URL"),
|
||||
field.String("site_icon").Comment("站点图标"),
|
||||
field.String("site_description").Comment("站点描述"),
|
||||
field.String("site_keywords").Comment("站点关键词"),
|
||||
field.String("user_name").Comment("用户名"),
|
||||
field.String("profile_image_url").Optional().Comment("头像URL"),
|
||||
field.String("icp_number").Optional().Comment("ICP备案号"),
|
||||
field.String("police_number").Optional().Comment("公安备案号"),
|
||||
// 新增字段:对应.env文件中的配置
|
||||
field.String("page_title").Optional().Comment("网页标题"),
|
||||
field.String("favicon").Optional().Comment("网页图标路径"),
|
||||
field.String("umami_script").Optional().Comment("Umami统计脚本地址"),
|
||||
field.String("umami_website_id").Optional().Comment("Umami统计网站ID"),
|
||||
field.String("icon_library").Optional().Comment("图标库CDN地址"),
|
||||
field.String("font_library").Optional().Comment("字体库CDN地址"),
|
||||
}
|
||||
}
|
||||
|
||||
func (SiteConfig) Edges() []ent.Edge {
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package schema
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
"entgo.io/ent/schema/field"
|
||||
)
|
||||
|
||||
// User 用户实体(用于JWT认证)
|
||||
type User struct {
|
||||
ent.Schema
|
||||
}
|
||||
|
||||
func (User) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.Int("id"),
|
||||
field.String("username").Unique().Comment("用户名"),
|
||||
field.String("password").Comment("密码(bcrypt哈希)"),
|
||||
}
|
||||
}
|
||||
|
||||
func (User) Edges() []ent.Edge {
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package schema
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
"entgo.io/ent/schema/field"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Visit 访问记录实体
|
||||
type Visit struct {
|
||||
ent.Schema
|
||||
}
|
||||
|
||||
func (Visit) Fields() []ent.Field {
|
||||
return []ent.Field{
|
||||
field.Int("id"),
|
||||
field.String("path").Comment("访问路径"),
|
||||
field.String("ip").Comment("访问IP"),
|
||||
field.String("user_agent").Optional().Comment("用户代理"),
|
||||
field.String("referer").Optional().Comment("来源页面"),
|
||||
field.Time("visit_time").Default(time.Now).Comment("访问时间"),
|
||||
}
|
||||
}
|
||||
|
||||
func (Visit) Edges() []ent.Edge {
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user