// 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/cache" "github.com/zeromicro/go-zero/core/stores/sqlc" "github.com/zeromicro/go-zero/core/stores/sqlx" "github.com/zeromicro/go-zero/core/stringx" ) var ( sysUserFieldNames = builder.RawFieldNames(&SysUser{}) sysUserRows = strings.Join(sysUserFieldNames, ",") sysUserRowsExpectAutoSet = strings.Join(stringx.Remove(sysUserFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",") sysUserRowsWithPlaceHolder = strings.Join(stringx.Remove(sysUserFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?" cacheSysUserIdPrefix = "cache:sysUser:id:" cacheSysUserUserIdPrefix = "cache:sysUser:userId:" cacheSysUserUsernamePrefix = "cache:sysUser:username:" ) type ( sysUserModel interface { Insert(ctx context.Context, data *SysUser) (sql.Result, error) FindOne(ctx context.Context, id int64) (*SysUser, error) FindOneByUserId(ctx context.Context, userId string) (*SysUser, error) FindOneByUsername(ctx context.Context, username string) (*SysUser, error) Update(ctx context.Context, data *SysUser) error Delete(ctx context.Context, id int64) error } defaultSysUserModel struct { sqlc.CachedConn table string } SysUser struct { Id int64 `db:"id"` UserId string `db:"user_id"` Username string `db:"username"` Password string `db:"password"` Salt string `db:"salt"` RealName string `db:"real_name"` Phone string `db:"phone"` Email string `db:"email"` Avatar string `db:"avatar"` Status int64 `db:"status"` // 1:enabled 0:disabled LastLoginTime sql.NullTime `db:"last_login_time"` LastLoginIp string `db:"last_login_ip"` CreatedAt time.Time `db:"created_at"` UpdatedAt time.Time `db:"updated_at"` DeletedAt sql.NullTime `db:"deleted_at"` } ) func newSysUserModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultSysUserModel { return &defaultSysUserModel{ CachedConn: sqlc.NewConn(conn, c, opts...), table: "`sys_user`", } } func (m *defaultSysUserModel) Delete(ctx context.Context, id int64) error { data, err := m.FindOne(ctx, id) if err != nil { return err } sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, id) sysUserUserIdKey := fmt.Sprintf("%s%v", cacheSysUserUserIdPrefix, data.UserId) sysUserUsernameKey := fmt.Sprintf("%s%v", cacheSysUserUsernamePrefix, data.Username) _, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { query := fmt.Sprintf("delete from %s where `id` = ?", m.table) return conn.ExecCtx(ctx, query, id) }, sysUserIdKey, sysUserUserIdKey, sysUserUsernameKey) return err } func (m *defaultSysUserModel) FindOne(ctx context.Context, id int64) (*SysUser, error) { sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, id) var resp SysUser err := m.QueryRowCtx(ctx, &resp, sysUserIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error { query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", sysUserRows, m.table) return conn.QueryRowCtx(ctx, v, query, id) }) switch err { case nil: return &resp, nil case sqlc.ErrNotFound: return nil, ErrNotFound default: return nil, err } } func (m *defaultSysUserModel) FindOneByUserId(ctx context.Context, userId string) (*SysUser, error) { sysUserUserIdKey := fmt.Sprintf("%s%v", cacheSysUserUserIdPrefix, userId) var resp SysUser err := m.QueryRowIndexCtx(ctx, &resp, sysUserUserIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) { query := fmt.Sprintf("select %s from %s where `user_id` = ? limit 1", sysUserRows, m.table) if err := conn.QueryRowCtx(ctx, &resp, query, userId); err != nil { return nil, err } return resp.Id, nil }, m.queryPrimary) switch err { case nil: return &resp, nil case sqlc.ErrNotFound: return nil, ErrNotFound default: return nil, err } } func (m *defaultSysUserModel) FindOneByUsername(ctx context.Context, username string) (*SysUser, error) { sysUserUsernameKey := fmt.Sprintf("%s%v", cacheSysUserUsernamePrefix, username) var resp SysUser err := m.QueryRowIndexCtx(ctx, &resp, sysUserUsernameKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) { query := fmt.Sprintf("select %s from %s where `username` = ? limit 1", sysUserRows, m.table) if err := conn.QueryRowCtx(ctx, &resp, query, username); err != nil { return nil, err } return resp.Id, nil }, m.queryPrimary) switch err { case nil: return &resp, nil case sqlc.ErrNotFound: return nil, ErrNotFound default: return nil, err } } func (m *defaultSysUserModel) Insert(ctx context.Context, data *SysUser) (sql.Result, error) { sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, data.Id) sysUserUserIdKey := fmt.Sprintf("%s%v", cacheSysUserUserIdPrefix, data.UserId) sysUserUsernameKey := fmt.Sprintf("%s%v", cacheSysUserUsernamePrefix, data.Username) ret, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, sysUserRowsExpectAutoSet) return conn.ExecCtx(ctx, query, data.UserId, data.Username, data.Password, data.Salt, data.RealName, data.Phone, data.Email, data.Avatar, data.Status, data.LastLoginTime, data.LastLoginIp, data.DeletedAt) }, sysUserIdKey, sysUserUserIdKey, sysUserUsernameKey) return ret, err } func (m *defaultSysUserModel) Update(ctx context.Context, newData *SysUser) error { data, err := m.FindOne(ctx, newData.Id) if err != nil { return err } sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, data.Id) sysUserUserIdKey := fmt.Sprintf("%s%v", cacheSysUserUserIdPrefix, data.UserId) sysUserUsernameKey := fmt.Sprintf("%s%v", cacheSysUserUsernamePrefix, data.Username) _, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, sysUserRowsWithPlaceHolder) return conn.ExecCtx(ctx, query, newData.UserId, newData.Username, newData.Password, newData.Salt, newData.RealName, newData.Phone, newData.Email, newData.Avatar, newData.Status, newData.LastLoginTime, newData.LastLoginIp, newData.DeletedAt, newData.Id) }, sysUserIdKey, sysUserUserIdKey, sysUserUsernameKey) return err } func (m *defaultSysUserModel) formatPrimary(primary any) string { return fmt.Sprintf("%s%v", cacheSysUserIdPrefix, primary) } func (m *defaultSysUserModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error { query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", sysUserRows, m.table) return conn.QueryRowCtx(ctx, v, query, primary) } func (m *defaultSysUserModel) tableName() string { return m.table }