Перевел на multi-tenant

Добавил поставщиков
Накладные успешно создаются из фронта
This commit is contained in:
2025-12-18 03:56:21 +03:00
parent 47ec8094e5
commit 542beafe0e
38 changed files with 1942 additions and 977 deletions

View File

@@ -5,6 +5,8 @@ import (
"rmser/internal/domain/operations"
"github.com/google/uuid"
"gorm.io/gorm"
)
@@ -16,19 +18,15 @@ func NewRepository(db *gorm.DB) operations.Repository {
return &pgRepository{db: db}
}
func (r *pgRepository) SaveOperations(ops []operations.StoreOperation, opType operations.OperationType, dateFrom, dateTo time.Time) error {
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 {
// 1. Удаляем старые записи этого типа, которые пересекаются с периодом.
// Так как отчет агрегированный, мы привязываемся к периоду "с" и "по".
// Упрощение: удаляем всё, где PeriodFrom совпадает с текущей выгрузкой,
// предполагая, что мы всегда грузим одними и теми же квантами (например, месяц или неделя).
// Для надежности удалим всё, что попадает в диапазон.
if err := tx.Where("op_type = ? AND period_from >= ? AND period_to <= ?", opType, dateFrom, dateTo).
// Удаляем старые записи этого типа, но ТОЛЬКО для конкретного сервера
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
}
// 2. Вставляем новые
if len(ops) > 0 {
if err := tx.CreateInBatches(ops, 500).Error; err != nil {
return err