feat: add asset level repositories
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
6f21c294e9
commit
0753f0b168
@ -0,0 +1,66 @@
|
||||
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) 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
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"github.com/topfans/backend/pkg/models"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type SeasonDecayConfigRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewSeasonDecayConfigRepository(db *gorm.DB) *SeasonDecayConfigRepository {
|
||||
return &SeasonDecayConfigRepository{db: db}
|
||||
}
|
||||
|
||||
func (r *SeasonDecayConfigRepository) GetBySeason(seasonID string) ([]*models.SeasonDecayConfig, error) {
|
||||
var configs []*models.SeasonDecayConfig
|
||||
err := r.db.Where("season_id = ?", seasonID).Find(&configs).Error
|
||||
return configs, err
|
||||
}
|
||||
|
||||
func (r *SeasonDecayConfigRepository) GetBySeasonAndLevel(seasonID, level string) (*models.SeasonDecayConfig, error) {
|
||||
var config models.SeasonDecayConfig
|
||||
err := r.db.Where("season_id = ? AND level = ?", seasonID, level).First(&config).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &config, nil
|
||||
}
|
||||
@ -0,0 +1,67 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"github.com/topfans/backend/pkg/models"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type SeasonRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewSeasonRepository(db *gorm.DB) *SeasonRepository {
|
||||
return &SeasonRepository{db: db}
|
||||
}
|
||||
|
||||
func (r *SeasonRepository) GetByID(seasonID string) (*models.Season, error) {
|
||||
var season models.Season
|
||||
err := r.db.Where("id = ?", seasonID).First(&season).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &season, nil
|
||||
}
|
||||
|
||||
func (r *SeasonRepository) GetActiveSeason() (*models.Season, error) {
|
||||
var season models.Season
|
||||
err := r.db.Where("status = ?", "active").First(&season).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &season, nil
|
||||
}
|
||||
|
||||
func (r *SeasonRepository) GetEndedSeasons() ([]*models.Season, error) {
|
||||
var seasons []*models.Season
|
||||
err := r.db.Where("status = ? AND end_time < ?", "active", gorm.Expr("NOW()")).Find(&seasons).Error
|
||||
return seasons, err
|
||||
}
|
||||
|
||||
func (r *SeasonRepository) Save(season *models.Season) error {
|
||||
return r.db.Save(season).Error
|
||||
}
|
||||
|
||||
func (r *SeasonRepository) Create(season *models.Season) error {
|
||||
return r.db.Create(season).Error
|
||||
}
|
||||
|
||||
func (r *SeasonRepository) GetOrCreate(seasonID string, durationDays int, resetStrategy string) (*models.Season, error) {
|
||||
season, err := r.GetByID(seasonID)
|
||||
if err == nil {
|
||||
return season, nil
|
||||
}
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
season = &models.Season{
|
||||
ID: seasonID,
|
||||
DurationDays: durationDays,
|
||||
ResetStrategy: resetStrategy,
|
||||
ResetLevel: true,
|
||||
Status: "active",
|
||||
}
|
||||
if err := r.Create(season); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return season, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user