package operations import ( "time" "rmser/internal/domain/operations" "github.com/google/uuid" "gorm.io/gorm" ) type pgRepository struct { db *gorm.DB } func NewRepository(db *gorm.DB) operations.Repository { return &pgRepository{db: db} } func (r *pgRepository) SaveOperations(ops []operations.StoreOperation, serverID uuid.UUID, opType operations.OperationType, dateFrom, dateTo time.Time) error { return r.db.Transaction(func(tx *gorm.DB) error { // Удаляем старые записи этого типа, но ТОЛЬКО для конкретного сервера if err := tx.Where("rms_server_id = ? AND op_type = ? AND period_from >= ? AND period_to <= ?", serverID, opType, dateFrom, dateTo). Delete(&operations.StoreOperation{}).Error; err != nil { return err } if len(ops) > 0 { if err := tx.CreateInBatches(ops, 500).Error; err != nil { return err } } return nil }) }