Files
hldrCenter/server/internal/admin/internal/model/adminmodel_gen.go

127 lines
4.2 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"
"time"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
)
var (
adminFieldNames = builder.RawFieldNames(&Admin{})
adminRows = strings.Join(adminFieldNames, ",")
adminRowsExpectAutoSet = strings.Join(stringx.Remove(adminFieldNames, "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",")
adminRowsWithPlaceHolder = strings.Join(stringx.Remove(adminFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?"
)
type (
adminModel interface {
Insert(ctx context.Context, data *Admin) (sql.Result, error)
FindOne(ctx context.Context, id int64) (*Admin, error)
Update(ctx context.Context, data *Admin) error
Delete(ctx context.Context, id int64) error
FindOneByUsername(ctx context.Context, username string) (*Admin, error)
}
defaultAdminModel struct {
conn sqlx.SqlConn
table string
}
Admin struct {
Id int64 `db:"id"` // 用户ID
Username sql.NullString `db:"username"`
Password string `db:"password"` // 管理员密码
CoverUrl sql.NullString `db:"cover_url"`
Intro sql.NullString `db:"intro"`
CreateTime time.Time `db:"create_time"`
UpdateTime time.Time `db:"update_time"`
Role sql.NullString `db:"role"`
Status int64 `db:"status"` // 1表示启用0表示禁用
}
)
func newAdminModel(conn sqlx.SqlConn) *defaultAdminModel {
return &defaultAdminModel{
conn: conn,
table: "`admin`",
}
}
func (m *defaultAdminModel) 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 *defaultAdminModel) FindOne(ctx context.Context, id int64) (*Admin, error) {
query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", adminRows, m.table)
var resp Admin
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 *defaultAdminModel) Insert(ctx context.Context, data *Admin) (sql.Result, error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?)", m.table, adminRowsExpectAutoSet)
ret, err := m.conn.ExecCtx(ctx, query, data.Id, data.Username, data.Password, data.CoverUrl, data.Intro, data.Role, data.Status)
return ret, err
}
func (m *defaultAdminModel) Update(ctx context.Context, data *Admin) error {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, adminRowsWithPlaceHolder)
_, err := m.conn.ExecCtx(ctx, query, data.Username, data.Password, data.CoverUrl, data.Intro, data.Role, data.Status, data.Id)
return err
}
func (m *defaultAdminModel) FindOneByUsername(ctx context.Context, username string) (*Admin, error) {
// 1. 构建查询语句使用model的table字段避免硬编码表名查询所有字段与Admin结构体对应
// 字段顺序与Admin结构体字段顺序一致确保映射正确
query := fmt.Sprintf(`
SELECT
id, username, password, cover_url, intro, create_time, update_time, role, status
FROM %s
WHERE username = ?
LIMIT 1
`, m.table) // 使用m.table替代硬编码"admin",适配表名可能的变化
var admin Admin
err := m.conn.QueryRowCtx(ctx, &admin, query, username)
if err != nil {
// 3. 错误处理:区分"记录不存在"和"查询异常"
if err == sql.ErrNoRows {
// 返回自定义的"记录不存在"错误,上层可明确判断
return nil, err
}
// 其他错误如SQL语法错误、连接异常等记录日志并返回
logx.WithContext(ctx).Errorf(
"failed to find admin by username: %s, err: %v, query: %s",
username, err, query,
)
return nil, err
}
// 4. 查询成功,返回管理员信息
return &admin, nil
}
func (m *defaultAdminModel) tableName() string {
return m.table
}