84 lines
2.6 KiB
Go
84 lines
2.6 KiB
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
|
|
"kra/internal/biz/system"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type autoCodeHistoryRepo struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
// NewAutoCodeHistoryRepo 创建自动代码历史仓储
|
|
func NewAutoCodeHistoryRepo(db *gorm.DB) system.AutoCodeHistoryRepo {
|
|
return &autoCodeHistoryRepo{db: db}
|
|
}
|
|
|
|
// First 根据id获取meta信息
|
|
func (r *autoCodeHistoryRepo) First(ctx context.Context, id uint) (string, error) {
|
|
var meta string
|
|
err := r.db.WithContext(ctx).Model(&system.SysAutoCodeHistory{}).
|
|
Where("id = ?", id).
|
|
Pluck("request", &meta).Error
|
|
return meta, err
|
|
}
|
|
|
|
// Delete 删除历史记录
|
|
func (r *autoCodeHistoryRepo) Delete(ctx context.Context, id uint) error {
|
|
return r.db.WithContext(ctx).Where("id = ?", id).Delete(&system.SysAutoCodeHistory{}).Error
|
|
}
|
|
|
|
// GetList 获取历史记录列表
|
|
func (r *autoCodeHistoryRepo) GetList(ctx context.Context, page, pageSize int) ([]system.SysAutoCodeHistory, int64, error) {
|
|
var list []system.SysAutoCodeHistory
|
|
var total int64
|
|
|
|
db := r.db.WithContext(ctx).Model(&system.SysAutoCodeHistory{})
|
|
err := db.Count(&total).Error
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
offset := (page - 1) * pageSize
|
|
err = db.Offset(offset).Limit(pageSize).Order("updated_at desc").Find(&list).Error
|
|
return list, total, err
|
|
}
|
|
|
|
// GetByID 根据ID获取历史记录
|
|
func (r *autoCodeHistoryRepo) GetByID(ctx context.Context, id uint) (*system.SysAutoCodeHistory, error) {
|
|
var history system.SysAutoCodeHistory
|
|
err := r.db.WithContext(ctx).Where("id = ?", id).First(&history).Error
|
|
return &history, err
|
|
}
|
|
|
|
// UpdateFlag 更新标记
|
|
func (r *autoCodeHistoryRepo) UpdateFlag(ctx context.Context, id uint, flag int) error {
|
|
return r.db.WithContext(ctx).Model(&system.SysAutoCodeHistory{}).
|
|
Where("id = ?", id).
|
|
Update("flag", flag).Error
|
|
}
|
|
|
|
// DropTable 删除表
|
|
func (r *autoCodeHistoryRepo) DropTable(ctx context.Context, businessDB, tableName string) error {
|
|
// 注意:这里简化处理,实际应该支持多数据库
|
|
return r.db.WithContext(ctx).Exec("DROP TABLE IF EXISTS " + tableName).Error
|
|
}
|
|
|
|
// Create 创建历史记录
|
|
func (r *autoCodeHistoryRepo) Create(ctx context.Context, history *system.SysAutoCodeHistory) error {
|
|
return r.db.WithContext(ctx).Create(history).Error
|
|
}
|
|
|
|
// Repeat 检测重复
|
|
func (r *autoCodeHistoryRepo) Repeat(ctx context.Context, businessDB, structName, abbreviation, pkg string) bool {
|
|
var count int64
|
|
r.db.WithContext(ctx).Model(&system.SysAutoCodeHistory{}).
|
|
Where("business_db = ? AND struct_name = ? AND abbreviation = ? AND package = ?",
|
|
businessDB, structName, abbreviation, pkg).
|
|
Count(&count)
|
|
return count > 0
|
|
}
|