diff --git a/server/internal/social_service/internal/model/socialservicemodel.go b/server/internal/social_service/internal/model/socialservicemodel.go new file mode 100644 index 00000000..45f1704b --- /dev/null +++ b/server/internal/social_service/internal/model/socialservicemodel.go @@ -0,0 +1,29 @@ +package model + +import "github.com/zeromicro/go-zero/core/stores/sqlx" + +var _ SocialServiceModel = (*customSocialServiceModel)(nil) + +type ( + // SocialServiceModel is an interface to be customized, add more methods here, + // and implement the added methods in customSocialServiceModel. + SocialServiceModel interface { + socialServiceModel + withSession(session sqlx.Session) SocialServiceModel + } + + customSocialServiceModel struct { + *defaultSocialServiceModel + } +) + +// NewSocialServiceModel returns a model for the database table. +func NewSocialServiceModel(conn sqlx.SqlConn) SocialServiceModel { + return &customSocialServiceModel{ + defaultSocialServiceModel: newSocialServiceModel(conn), + } +} + +func (m *customSocialServiceModel) withSession(session sqlx.Session) SocialServiceModel { + return NewSocialServiceModel(sqlx.NewSqlConnFromSession(session)) +} diff --git a/server/internal/social_service/internal/model/socialservicemodel_gen.go b/server/internal/social_service/internal/model/socialservicemodel_gen.go new file mode 100644 index 00000000..92f17d66 --- /dev/null +++ b/server/internal/social_service/internal/model/socialservicemodel_gen.go @@ -0,0 +1,97 @@ +// Code generated by goctl. DO NOT EDIT. +// versions: +// goctl version: 1.9.2 + +package model + +import ( + "context" + "database/sql" + "fmt" + "strings" + "time" + + "github.com/zeromicro/go-zero/core/stores/builder" + "github.com/zeromicro/go-zero/core/stores/sqlx" + "github.com/zeromicro/go-zero/core/stringx" +) + +var ( + socialServiceFieldNames = builder.RawFieldNames(&SocialService{}) + socialServiceRows = strings.Join(socialServiceFieldNames, ",") + socialServiceRowsExpectAutoSet = strings.Join(stringx.Remove(socialServiceFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",") + socialServiceRowsWithPlaceHolder = strings.Join(stringx.Remove(socialServiceFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?" +) + +type ( + socialServiceModel interface { + Insert(ctx context.Context, data *SocialService) (sql.Result, error) + FindOne(ctx context.Context, id int64) (*SocialService, error) + Update(ctx context.Context, data *SocialService) error + Delete(ctx context.Context, id int64) error + } + + defaultSocialServiceModel struct { + conn sqlx.SqlConn + table string + } + + SocialService struct { + Id int64 `db:"id"` // 主键ID + Title string `db:"title"` // 标题 + Subtitle string `db:"subtitle"` // 副标题 + CoverUrl string `db:"cover_url"` // 封面图片URL + Intro string `db:"intro"` // 简介(纯文字) + Content sql.NullString `db:"content"` // 内容(Markdown格式) + ImageEditors string `db:"image_editors"` // 图片编辑者名单(多个用逗号分隔) + TextEditors string `db:"text_editors"` // 文字编辑者名单(多个用逗号分隔) + ChiefEditor string `db:"chief_editor"` // 总编辑 + Proofreaders string `db:"proofreaders"` // 校对者名单(多个用逗号分隔) + Reviewers string `db:"reviewers"` // 审核者名单(多个用逗号分隔) + PublishTime time.Time `db:"publish_time"` // 发布时间(默认插入时的当前时间) + UpdateTime time.Time `db:"update_time"` // 最后更改时间(自动更新) + } +) + +func newSocialServiceModel(conn sqlx.SqlConn) *defaultSocialServiceModel { + return &defaultSocialServiceModel{ + conn: conn, + table: "`social_service`", + } +} + +func (m *defaultSocialServiceModel) Delete(ctx context.Context, id int64) error { + query := fmt.Sprintf("delete from %s where `id` = ?", m.table) + _, err := m.conn.ExecCtx(ctx, query, id) + return err +} + +func (m *defaultSocialServiceModel) FindOne(ctx context.Context, id int64) (*SocialService, error) { + query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", socialServiceRows, m.table) + var resp SocialService + err := m.conn.QueryRowCtx(ctx, &resp, query, id) + switch err { + case nil: + return &resp, nil + case sqlx.ErrNotFound: + return nil, ErrNotFound + default: + return nil, err + } +} + +func (m *defaultSocialServiceModel) Insert(ctx context.Context, data *SocialService) (sql.Result, error) { + query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, socialServiceRowsExpectAutoSet) + ret, err := m.conn.ExecCtx(ctx, query, data.Title, data.Subtitle, data.CoverUrl, data.Intro, data.Content, data.ImageEditors, data.TextEditors, data.ChiefEditor, data.Proofreaders, data.Reviewers, data.PublishTime) + return ret, err +} + +func (m *defaultSocialServiceModel) Update(ctx context.Context, data *SocialService) error { + query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, socialServiceRowsWithPlaceHolder) + _, err := m.conn.ExecCtx(ctx, query, data.Title, data.Subtitle, data.CoverUrl, data.Intro, data.Content, data.ImageEditors, data.TextEditors, data.ChiefEditor, data.Proofreaders, data.Reviewers, data.PublishTime, data.Id) + return err +} + +func (m *defaultSocialServiceModel) tableName() string { + return m.table +} diff --git a/server/internal/social_service/internal/model/vars.go b/server/internal/social_service/internal/model/vars.go new file mode 100644 index 00000000..69ca814e --- /dev/null +++ b/server/internal/social_service/internal/model/vars.go @@ -0,0 +1,5 @@ +package model + +import "github.com/zeromicro/go-zero/core/stores/sqlx" + +var ErrNotFound = sqlx.ErrNotFound