feat: implement new structure

This commit is contained in:
2025-12-29 09:30:49 +08:00
parent 503b15aab7
commit ad52371028
116 changed files with 17579 additions and 1213 deletions

View File

@@ -30,16 +30,20 @@ func newContent(db *gorm.DB, opts ...gen.DOOption) contentQuery {
_contentQuery.UserID = field.NewInt64(tableName, "user_id")
_contentQuery.Title = field.NewString(tableName, "title")
_contentQuery.Description = field.NewString(tableName, "description")
_contentQuery.Status = field.NewField(tableName, "status")
_contentQuery.Visibility = field.NewField(tableName, "visibility")
_contentQuery.Status = field.NewString(tableName, "status")
_contentQuery.Visibility = field.NewString(tableName, "visibility")
_contentQuery.PreviewSeconds = field.NewInt32(tableName, "preview_seconds")
_contentQuery.PreviewDownloadable = field.NewBool(tableName, "preview_downloadable")
_contentQuery.PublishedAt = field.NewTime(tableName, "published_at")
_contentQuery.DeletedAt = field.NewField(tableName, "deleted_at")
_contentQuery.CreatedAt = field.NewTime(tableName, "created_at")
_contentQuery.UpdatedAt = field.NewTime(tableName, "updated_at")
_contentQuery.Summary = field.NewString(tableName, "summary")
_contentQuery.Tags = field.NewJSONB(tableName, "tags")
_contentQuery.Body = field.NewString(tableName, "body")
_contentQuery.Genre = field.NewString(tableName, "genre")
_contentQuery.Views = field.NewInt32(tableName, "views")
_contentQuery.Likes = field.NewInt32(tableName, "likes")
_contentQuery.CreatedAt = field.NewTime(tableName, "created_at")
_contentQuery.UpdatedAt = field.NewTime(tableName, "updated_at")
_contentQuery.DeletedAt = field.NewField(tableName, "deleted_at")
_contentQuery.fillFieldMap()
@@ -50,21 +54,25 @@ type contentQuery struct {
contentQueryDo contentQueryDo
ALL field.Asterisk
ID field.Int64 // 主键ID自增用于内容引用
TenantID field.Int64 // 租户ID多租户隔离关键字段所有查询/写入必须限定 tenant_id
UserID field.Int64 // 用户ID内容创建者/发布者;用于权限与审计(例如私有内容仅作者可见)
Title field.String // 标题:用于列表展示与搜索;建议限制长度(由业务校验)
Description field.String // 描述:用于详情页展示;可为空字符串
Status field.Field // 状态draft/reviewing/published/unpublished/blockedpublished 才对外展示
Visibility field.Field // 可见性public/tenant_only/private仅控制详情可见正片资源仍需按价格/权益校验
PreviewSeconds field.Int32 // 试看秒数:默认 60只对 preview 资源生效;必须为正整数
PreviewDownloadable field.Bool // 试看是否允许下载:默认 false当前策略固定为不允许下载仅 streaming
PublishedAt field.Time // 发布时间:首次发布时写入;用于时间窗与排序
DeletedAt field.Field // 软删除时间:非空表示已删除;对外接口需过滤
CreatedAt field.Time // 创建时间:默认 now();用于审计与排序
UpdatedAt field.Time // 更新时间:默认 now();编辑内容时写入
Summary field.String // 简介:用于列表/卡片展示的短文本;建议 <= 256 字符(由业务校验)
Tags field.JSONB // 标签JSON 数组(字符串列表);用于分类/检索与聚合展示
ID field.Int64
TenantID field.Int64
UserID field.Int64
Title field.String
Description field.String
Status field.String
Visibility field.String
PreviewSeconds field.Int32
PreviewDownloadable field.Bool
PublishedAt field.Time
Summary field.String
Tags field.JSONB
Body field.String
Genre field.String
Views field.Int32
Likes field.Int32
CreatedAt field.Time
UpdatedAt field.Time
DeletedAt field.Field
fieldMap map[string]field.Expr
}
@@ -86,16 +94,20 @@ func (c *contentQuery) updateTableName(table string) *contentQuery {
c.UserID = field.NewInt64(table, "user_id")
c.Title = field.NewString(table, "title")
c.Description = field.NewString(table, "description")
c.Status = field.NewField(table, "status")
c.Visibility = field.NewField(table, "visibility")
c.Status = field.NewString(table, "status")
c.Visibility = field.NewString(table, "visibility")
c.PreviewSeconds = field.NewInt32(table, "preview_seconds")
c.PreviewDownloadable = field.NewBool(table, "preview_downloadable")
c.PublishedAt = field.NewTime(table, "published_at")
c.DeletedAt = field.NewField(table, "deleted_at")
c.CreatedAt = field.NewTime(table, "created_at")
c.UpdatedAt = field.NewTime(table, "updated_at")
c.Summary = field.NewString(table, "summary")
c.Tags = field.NewJSONB(table, "tags")
c.Body = field.NewString(table, "body")
c.Genre = field.NewString(table, "genre")
c.Views = field.NewInt32(table, "views")
c.Likes = field.NewInt32(table, "likes")
c.CreatedAt = field.NewTime(table, "created_at")
c.UpdatedAt = field.NewTime(table, "updated_at")
c.DeletedAt = field.NewField(table, "deleted_at")
c.fillFieldMap()
@@ -128,7 +140,7 @@ func (c *contentQuery) GetFieldByName(fieldName string) (field.OrderExpr, bool)
}
func (c *contentQuery) fillFieldMap() {
c.fieldMap = make(map[string]field.Expr, 15)
c.fieldMap = make(map[string]field.Expr, 19)
c.fieldMap["id"] = c.ID
c.fieldMap["tenant_id"] = c.TenantID
c.fieldMap["user_id"] = c.UserID
@@ -139,11 +151,15 @@ func (c *contentQuery) fillFieldMap() {
c.fieldMap["preview_seconds"] = c.PreviewSeconds
c.fieldMap["preview_downloadable"] = c.PreviewDownloadable
c.fieldMap["published_at"] = c.PublishedAt
c.fieldMap["deleted_at"] = c.DeletedAt
c.fieldMap["created_at"] = c.CreatedAt
c.fieldMap["updated_at"] = c.UpdatedAt
c.fieldMap["summary"] = c.Summary
c.fieldMap["tags"] = c.Tags
c.fieldMap["body"] = c.Body
c.fieldMap["genre"] = c.Genre
c.fieldMap["views"] = c.Views
c.fieldMap["likes"] = c.Likes
c.fieldMap["created_at"] = c.CreatedAt
c.fieldMap["updated_at"] = c.UpdatedAt
c.fieldMap["deleted_at"] = c.DeletedAt
}
func (c contentQuery) clone(db *gorm.DB) contentQuery {