Files
rmser/internal/infrastructure/repository/operations/postgres.go
SERTY 542beafe0e Перевел на multi-tenant
Добавил поставщиков
Накладные успешно создаются из фронта
2025-12-18 03:56:21 +03:00

38 lines
936 B
Go

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
})
}