package repository import ( "github.com/topfans/backend/pkg/models" "gorm.io/gorm" ) type AssetLevelRepository struct { db *gorm.DB } func NewAssetLevelRepository(db *gorm.DB) *AssetLevelRepository { return &AssetLevelRepository{db: db} } func (r *AssetLevelRepository) Create(record *models.AssetLevelRecord) error { return r.db.Create(record).Error } func (r *AssetLevelRepository) Save(record *models.AssetLevelRecord) error { return r.db.Save(record).Error } func (r *AssetLevelRepository) GetByAssetID(assetID int64) (*models.AssetLevelRecord, error) { var record models.AssetLevelRecord err := r.db.Where("asset_id = ?", assetID).First(&record).Error if err != nil { return nil, err } return &record, nil } func (r *AssetLevelRepository) GetBySeason(seasonID string) ([]*models.AssetLevelRecord, error) { var records []*models.AssetLevelRecord err := r.db.Where("season_id = ?", seasonID).Find(&records).Error return records, err } func (r *AssetLevelRepository) GetAllLevels() ([]*models.AssetLevel, error) { var levels []*models.AssetLevel err := r.db.Order("level_order ASC").Find(&levels).Error return levels, err } func (r *AssetLevelRepository) GetLevelConfig(level string) (*models.AssetLevel, error) { var config models.AssetLevel err := r.db.Where("level = ?", level).First(&config).Error if err != nil { return nil, err } return &config, nil } func (r *AssetLevelRepository) CreateChangeLog(log *models.AssetLevelChangeLog) error { return r.db.Create(log).Error } func (r *AssetLevelRepository) GetDB() *gorm.DB { return r.db } func (r *AssetLevelRepository) GetChangeLogs(assetID int64, limit, offset int) ([]*models.AssetLevelChangeLog, error) { var logs []*models.AssetLevelChangeLog err := r.db.Where("asset_id = ?", assetID). Order("created_at DESC"). Limit(limit). Offset(offset). Find(&logs).Error return logs, err }