176 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			176 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|  | // Code generated by goctl. DO NOT EDIT. | ||
|  | // versions: | ||
|  | //  goctl version: 1.7.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 ( | ||
|  | 	secretsFieldNames          = builder.RawFieldNames(&Secrets{}) | ||
|  | 	secretsRows                = strings.Join(secretsFieldNames, ",") | ||
|  | 	secretsRowsExpectAutoSet   = strings.Join(stringx.Remove(secretsFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",") | ||
|  | 	secretsRowsWithPlaceHolder = strings.Join(stringx.Remove(secretsFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?" | ||
|  | 
 | ||
|  | 	cacheSecretsIdPrefix       = "cache:secrets:id:" | ||
|  | 	cacheSecretsSecretIdPrefix = "cache:secrets:secretId:" | ||
|  | 	cacheSecretsUserIdPrefix   = "cache:secrets:userId:" | ||
|  | ) | ||
|  | 
 | ||
|  | type ( | ||
|  | 	secretsModel interface { | ||
|  | 		Insert(ctx context.Context, data *Secrets) (sql.Result, error) | ||
|  | 		FindOne(ctx context.Context, id int64) (*Secrets, error) | ||
|  | 		FindOneBySecretId(ctx context.Context, secretId string) (*Secrets, error) | ||
|  | 		FindOneByUserId(ctx context.Context, userId int64) (*Secrets, error) | ||
|  | 		Update(ctx context.Context, data *Secrets) error | ||
|  | 		Delete(ctx context.Context, id int64) error | ||
|  | 	} | ||
|  | 
 | ||
|  | 	defaultSecretsModel struct { | ||
|  | 		sqlc.CachedConn | ||
|  | 		table string | ||
|  | 	} | ||
|  | 
 | ||
|  | 	Secrets struct { | ||
|  | 		Id        int64     `db:"id"`         // 密钥ID | ||
|  | 		UserId    int64     `db:"user_id"`    // 用户ID | ||
|  | 		SecretId  string    `db:"secret_id"`  // 密钥ID | ||
|  | 		AesKey    string    `db:"aes_key"`    // AES 128位密钥 | ||
|  | 		CreatedAt time.Time `db:"created_at"` // 创建时间 | ||
|  | 		UpdatedAt time.Time `db:"updated_at"` // 更新时间 | ||
|  | 	} | ||
|  | ) | ||
|  | 
 | ||
|  | func newSecretsModel(conn sqlx.SqlConn, c cache.CacheConf, opts ...cache.Option) *defaultSecretsModel { | ||
|  | 	return &defaultSecretsModel{ | ||
|  | 		CachedConn: sqlc.NewConn(conn, c, opts...), | ||
|  | 		table:      "`secrets`", | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | func (m *defaultSecretsModel) Delete(ctx context.Context, id int64) error { | ||
|  | 	data, err := m.FindOne(ctx, id) | ||
|  | 	if err != nil { | ||
|  | 		return err | ||
|  | 	} | ||
|  | 
 | ||
|  | 	secretsIdKey := fmt.Sprintf("%s%v", cacheSecretsIdPrefix, id) | ||
|  | 	secretsSecretIdKey := fmt.Sprintf("%s%v", cacheSecretsSecretIdPrefix, data.SecretId) | ||
|  | 	secretsUserIdKey := fmt.Sprintf("%s%v", cacheSecretsUserIdPrefix, data.UserId) | ||
|  | 	_, 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) | ||
|  | 	}, secretsIdKey, secretsSecretIdKey, secretsUserIdKey) | ||
|  | 	return err | ||
|  | } | ||
|  | 
 | ||
|  | func (m *defaultSecretsModel) FindOne(ctx context.Context, id int64) (*Secrets, error) { | ||
|  | 	secretsIdKey := fmt.Sprintf("%s%v", cacheSecretsIdPrefix, id) | ||
|  | 	var resp Secrets | ||
|  | 	err := m.QueryRowCtx(ctx, &resp, secretsIdKey, func(ctx context.Context, conn sqlx.SqlConn, v any) error { | ||
|  | 		query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", secretsRows, 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 *defaultSecretsModel) FindOneBySecretId(ctx context.Context, secretId string) (*Secrets, error) { | ||
|  | 	secretsSecretIdKey := fmt.Sprintf("%s%v", cacheSecretsSecretIdPrefix, secretId) | ||
|  | 	var resp Secrets | ||
|  | 	err := m.QueryRowIndexCtx(ctx, &resp, secretsSecretIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v any) (i any, e error) { | ||
|  | 		query := fmt.Sprintf("select %s from %s where `secret_id` = ? limit 1", secretsRows, m.table) | ||
|  | 		if err := conn.QueryRowCtx(ctx, &resp, query, secretId); 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 *defaultSecretsModel) FindOneByUserId(ctx context.Context, userId int64) (*Secrets, error) { | ||
|  | 	secretsUserIdKey := fmt.Sprintf("%s%v", cacheSecretsUserIdPrefix, userId) | ||
|  | 	var resp Secrets | ||
|  | 	err := m.QueryRowIndexCtx(ctx, &resp, secretsUserIdKey, 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", secretsRows, 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 *defaultSecretsModel) Insert(ctx context.Context, data *Secrets) (sql.Result, error) { | ||
|  | 	secretsIdKey := fmt.Sprintf("%s%v", cacheSecretsIdPrefix, data.Id) | ||
|  | 	secretsSecretIdKey := fmt.Sprintf("%s%v", cacheSecretsSecretIdPrefix, data.SecretId) | ||
|  | 	secretsUserIdKey := fmt.Sprintf("%s%v", cacheSecretsUserIdPrefix, data.UserId) | ||
|  | 	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, secretsRowsExpectAutoSet) | ||
|  | 		return conn.ExecCtx(ctx, query, data.UserId, data.SecretId, data.AesKey) | ||
|  | 	}, secretsIdKey, secretsSecretIdKey, secretsUserIdKey) | ||
|  | 	return ret, err | ||
|  | } | ||
|  | 
 | ||
|  | func (m *defaultSecretsModel) Update(ctx context.Context, newData *Secrets) error { | ||
|  | 	data, err := m.FindOne(ctx, newData.Id) | ||
|  | 	if err != nil { | ||
|  | 		return err | ||
|  | 	} | ||
|  | 
 | ||
|  | 	secretsIdKey := fmt.Sprintf("%s%v", cacheSecretsIdPrefix, data.Id) | ||
|  | 	secretsSecretIdKey := fmt.Sprintf("%s%v", cacheSecretsSecretIdPrefix, data.SecretId) | ||
|  | 	secretsUserIdKey := fmt.Sprintf("%s%v", cacheSecretsUserIdPrefix, data.UserId) | ||
|  | 	_, 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, secretsRowsWithPlaceHolder) | ||
|  | 		return conn.ExecCtx(ctx, query, newData.UserId, newData.SecretId, newData.AesKey, newData.Id) | ||
|  | 	}, secretsIdKey, secretsSecretIdKey, secretsUserIdKey) | ||
|  | 	return err | ||
|  | } | ||
|  | 
 | ||
|  | func (m *defaultSecretsModel) formatPrimary(primary any) string { | ||
|  | 	return fmt.Sprintf("%s%v", cacheSecretsIdPrefix, primary) | ||
|  | } | ||
|  | 
 | ||
|  | func (m *defaultSecretsModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary any) error { | ||
|  | 	query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", secretsRows, m.table) | ||
|  | 	return conn.QueryRowCtx(ctx, v, query, primary) | ||
|  | } | ||
|  | 
 | ||
|  | func (m *defaultSecretsModel) tableName() string { | ||
|  | 	return m.table | ||
|  | } |