From 7b93dd366d245cde6999e14e05f09819938b74e1 Mon Sep 17 00:00:00 2001 From: mayiming <1627832236@qq.com> Date: Sat, 1 Nov 2025 23:06:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=BE=E7=A8=8B=E6=96=87?= =?UTF-8?q?=E4=BB=B6Model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/model/coursefilemodel.go | 29 ++++++ .../internal/model/coursefilemodel_gen.go | 91 +++++++++++++++++++ .../course_file/internal/model/vars.go | 5 + 3 files changed, 125 insertions(+) create mode 100644 server/internal/course_file/internal/model/coursefilemodel.go create mode 100644 server/internal/course_file/internal/model/coursefilemodel_gen.go create mode 100644 server/internal/course_file/internal/model/vars.go diff --git a/server/internal/course_file/internal/model/coursefilemodel.go b/server/internal/course_file/internal/model/coursefilemodel.go new file mode 100644 index 00000000..d9e75b1a --- /dev/null +++ b/server/internal/course_file/internal/model/coursefilemodel.go @@ -0,0 +1,29 @@ +package model + +import "github.com/zeromicro/go-zero/core/stores/sqlx" + +var _ CourseFileModel = (*customCourseFileModel)(nil) + +type ( + // CourseFileModel is an interface to be customized, add more methods here, + // and implement the added methods in customCourseFileModel. + CourseFileModel interface { + courseFileModel + withSession(session sqlx.Session) CourseFileModel + } + + customCourseFileModel struct { + *defaultCourseFileModel + } +) + +// NewCourseFileModel returns a model for the database table. +func NewCourseFileModel(conn sqlx.SqlConn) CourseFileModel { + return &customCourseFileModel{ + defaultCourseFileModel: newCourseFileModel(conn), + } +} + +func (m *customCourseFileModel) withSession(session sqlx.Session) CourseFileModel { + return NewCourseFileModel(sqlx.NewSqlConnFromSession(session)) +} diff --git a/server/internal/course_file/internal/model/coursefilemodel_gen.go b/server/internal/course_file/internal/model/coursefilemodel_gen.go new file mode 100644 index 00000000..3b4ce524 --- /dev/null +++ b/server/internal/course_file/internal/model/coursefilemodel_gen.go @@ -0,0 +1,91 @@ +// Code generated by goctl. DO NOT EDIT. +// versions: +// goctl version: 1.9.1 + +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 ( + courseFileFieldNames = builder.RawFieldNames(&CourseFile{}) + courseFileRows = strings.Join(courseFileFieldNames, ",") + courseFileRowsExpectAutoSet = strings.Join(stringx.Remove(courseFileFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",") + courseFileRowsWithPlaceHolder = strings.Join(stringx.Remove(courseFileFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?" +) + +type ( + courseFileModel interface { + Insert(ctx context.Context, data *CourseFile) (sql.Result, error) + FindOne(ctx context.Context, id int64) (*CourseFile, error) + Update(ctx context.Context, data *CourseFile) error + Delete(ctx context.Context, id int64) error + } + + defaultCourseFileModel struct { + conn sqlx.SqlConn + table string + } + + CourseFile struct { + Id int64 `db:"id"` // 主键ID + ContentId int64 `db:"content_id"` // 关联的内容ID(如课程章节ID等) + Title string `db:"title"` // 文件标题 + FileType string `db:"file_type"` // 文件类型(如pdf、video、doc等) + FileUrl string `db:"file_url"` // 文件存储URL + CreateTime time.Time `db:"create_time"` // 创建时间 + UpdateTime time.Time `db:"update_time"` // 更新时间(自动更新) + } +) + +func newCourseFileModel(conn sqlx.SqlConn) *defaultCourseFileModel { + return &defaultCourseFileModel{ + conn: conn, + table: "`course_file`", + } +} + +func (m *defaultCourseFileModel) 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 *defaultCourseFileModel) FindOne(ctx context.Context, id int64) (*CourseFile, error) { + query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", courseFileRows, m.table) + var resp CourseFile + 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 *defaultCourseFileModel) Insert(ctx context.Context, data *CourseFile) (sql.Result, error) { + query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?)", m.table, courseFileRowsExpectAutoSet) + ret, err := m.conn.ExecCtx(ctx, query, data.ContentId, data.Title, data.FileType, data.FileUrl) + return ret, err +} + +func (m *defaultCourseFileModel) Update(ctx context.Context, data *CourseFile) error { + query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, courseFileRowsWithPlaceHolder) + _, err := m.conn.ExecCtx(ctx, query, data.ContentId, data.Title, data.FileType, data.FileUrl, data.Id) + return err +} + +func (m *defaultCourseFileModel) tableName() string { + return m.table +} diff --git a/server/internal/course_file/internal/model/vars.go b/server/internal/course_file/internal/model/vars.go new file mode 100644 index 00000000..69ca814e --- /dev/null +++ b/server/internal/course_file/internal/model/vars.go @@ -0,0 +1,5 @@ +package model + +import "github.com/zeromicro/go-zero/core/stores/sqlx" + +var ErrNotFound = sqlx.ErrNotFound