Files
hldrCenter/server/internal/course_resource/internal/model/courseresourcemodel_gen.go

142 lines
4.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Code generated by goctl. DO NOT EDIT.
// versions:
// goctl version: 1.9.1
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
courseResourceFieldNames = builder.RawFieldNames(&CourseResource{})
courseResourceRows = strings.Join(courseResourceFieldNames, ",")
courseResourceRowsExpectAutoSet = strings.Join(stringx.Remove(courseResourceFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
courseResourceRowsWithPlaceHolder = strings.Join(stringx.Remove(courseResourceFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
courseResourceModel interface {
Insert(ctx context.Context, data *CourseResource) (sql.Result, error)
FindOne(ctx context.Context, id int64) (*CourseResource, error)
Update(ctx context.Context, data *CourseResource) error
Delete(ctx context.Context, id int64) error
CountByCourseId(ctx context.Context, courseId int64) (int64, error)
FindByCourseIdWithPage(
ctx context.Context,
courseId int64,
pageSize, offset int,
) ([]*CourseResource, error)
}
defaultCourseResourceModel struct {
conn sqlx.SqlConn
table string
}
CourseResource struct {
Id int64 `db:"id"` // 资源ID主键自增
CourseId int64 `db:"course_id"` // 关联课程ID
Title string `db:"title"` // 资源标题如“第1章课件.pdf”
ResourceUrl string `db:"resource_url"` // 资源文件URL
Size int64 `db:"size"` // 文件大小KB默认0
Sort int64 `db:"sort"` // 排序(数值越小越靠前)
}
)
func newCourseResourceModel(conn sqlx.SqlConn) *defaultCourseResourceModel {
return &defaultCourseResourceModel{
conn: conn,
table: "`course_resource`",
}
}
func (m *defaultCourseResourceModel) 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 *defaultCourseResourceModel) FindOne(ctx context.Context, id int64) (*CourseResource, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", courseResourceRows, m.table)
var resp CourseResource
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 *defaultCourseResourceModel) Insert(ctx context.Context, data *CourseResource) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?)", m.table, courseResourceRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.CourseId, data.Title, data.ResourceUrl, data.Size, data.Sort)
return ret, err
}
func (m *defaultCourseResourceModel) Update(ctx context.Context, data *CourseResource) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, courseResourceRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.CourseId, data.Title, data.ResourceUrl, data.Size, data.Sort, data.Id)
return err
}
func (m *defaultCourseResourceModel) CountByCourseId(ctx context.Context, courseId int64) (int64, error) {
var count int64
// 构造查询条件courseId=0时查全部否则按course_id筛选
if courseId == 0 {
query := fmt.Sprintf("select count(*) from %s", m.table)
err := m.conn.QueryRowCtx(ctx, &count, query)
return count, err
} else {
query := fmt.Sprintf("select count(*) from %s where `course_id` = ?", m.table)
err := m.conn.QueryRowCtx(ctx, &count, query, courseId)
return count, err
}
}
// FindByCourseIdWithPage 实现按课程ID分页查询
func (m *defaultCourseResourceModel) FindByCourseIdWithPage(
ctx context.Context,
courseId int64,
pageSize, offset int,
) ([]*CourseResource, error) {
var resources []*CourseResource
// 构造查询SQL支持筛选+排序+分页按sort升序确保资源有序
baseQuery := fmt.Sprintf("select %s from %s", courseResourceRows, m.table)
sortQuery := " order by `sort` asc limit ?, ?" // 按sort升序限制条数和偏移量
var query string
var args []interface{}
if courseId == 0 {
// 查全部资源无where条件
query = baseQuery + sortQuery
args = []interface{}{offset, pageSize}
} else {
// 按课程ID筛选
query = baseQuery + " where `course_id` = ?" + sortQuery
args = []interface{}{courseId, offset, pageSize}
}
// 执行查询
err := m.conn.QueryRowsCtx(ctx, &resources, query, args...)
if err != nil {
return nil, err
}
return resources, nil
}
func (m *defaultCourseResourceModel) tableName() string {
return m.table
}