add service
All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m41s
All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m41s
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user