add service
All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m41s

This commit is contained in:
vallyenfail
2026-01-20 14:37:30 +03:00
parent 7e73144486
commit 28c8f93815
2 changed files with 52 additions and 1 deletions

View File

@@ -44,15 +44,30 @@ func (r *supplierRepository) bulkInsertWithExecutor(ctx context.Context, exec DB
query = query.Values(requestID, s.Name, s.Email, s.Phone, s.Address, s.URL) query = query.Values(requestID, s.Name, s.Email, s.Phone, s.Address, s.URL)
} }
query = query.Suffix("RETURNING id")
sqlQuery, args, err := query.ToSql() sqlQuery, args, err := query.ToSql()
if err != nil { if err != nil {
return errs.NewInternalError(errs.DatabaseError, "failed to build query", err) return errs.NewInternalError(errs.DatabaseError, "failed to build query", err)
} }
_, err = exec.Exec(ctx, sqlQuery, args...) rows, err := exec.Query(ctx, sqlQuery, args...)
if err != nil { if err != nil {
return errs.NewInternalError(errs.DatabaseError, "failed to bulk insert suppliers", err) return errs.NewInternalError(errs.DatabaseError, "failed to bulk insert suppliers", err)
} }
defer rows.Close()
i := 0
for rows.Next() {
if i >= len(suppliers) {
break
}
if err := rows.Scan(&suppliers[i].ID); err != nil {
return errs.NewInternalError(errs.DatabaseError, "failed to scan supplier id", err)
}
suppliers[i].RequestID = requestID
i++
}
return nil return nil
} }

View File

@@ -243,6 +243,42 @@ func (s *IntegrationSuite) TestRepository_SupplierBulkInsertAndDelete() {
s.Equal(0, len(found)) s.Equal(0, len(found))
} }
func (s *IntegrationSuite) TestRepository_SupplierBulkInsertReturnsIDs() {
supplierRepo := repository.NewSupplierRepository(s.pool)
requestRepo := repository.NewRequestRepository(s.pool)
ctx := context.Background()
var userID int
err := s.pool.QueryRow(ctx, "SELECT id FROM users LIMIT 1").Scan(&userID)
s.Require().NoError(err)
req := &model.Request{
UserID: userID,
RequestTxt: "Test request for supplier IDs",
}
err = requestRepo.Create(ctx, req)
s.Require().NoError(err)
suppliers := []*model.Supplier{
{Name: "Supplier A", Email: "a@test.com", Phone: "+7111"},
{Name: "Supplier B", Email: "b@test.com", Phone: "+7222"},
{Name: "Supplier C", Email: "c@test.com", Phone: "+7333"},
}
err = supplierRepo.BulkInsert(ctx, req.ID, suppliers)
s.NoError(err)
for i, sup := range suppliers {
s.NotZero(sup.ID, "Supplier %d should have non-zero ID after BulkInsert", i)
s.Equal(req.ID, sup.RequestID, "Supplier %d should have correct RequestID", i)
}
s.NotEqual(suppliers[0].ID, suppliers[1].ID, "Suppliers should have different IDs")
s.NotEqual(suppliers[1].ID, suppliers[2].ID, "Suppliers should have different IDs")
_ = supplierRepo.DeleteByRequestID(ctx, req.ID)
}
func (s *IntegrationSuite) TestRepository_TokenUsageCreate() { func (s *IntegrationSuite) TestRepository_TokenUsageCreate() {
tokenRepo := repository.NewTokenUsageRepository(s.pool) tokenRepo := repository.NewTokenUsageRepository(s.pool)
requestRepo := repository.NewRequestRepository(s.pool) requestRepo := repository.NewRequestRepository(s.pool)