topfans/backend/services/assetService/repository/asset_level_repository.go

70 lines
2.0 KiB
Go

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
}