Commit f97f7d7
committed
fix(V2): audit and fix CSV batch upload and XLSX import
Fixes race condition in csvtojson async subscribe by collecting rows
synchronously then processing sequentially in a transaction. Adds
merge-with-existing for UPDATE rows, org ownership verification, FK
existence checks, unknown column stripping, and snake_case header
normalization. Removes child record parsing from CSV path (CSV is
flat parent-only; XLSX handles multi-entity imports). Fixes
transformMetaUid regex to match multi-digit NEW-X placeholders.
Addresses CRITICAL-1 (race condition), CRITICAL-2 (no merge),
CRITICAL-3 (child parsing), HIGH-1 (no ownership check), HIGH-2
(bulkCreate duplicates), HIGH-3 (single-digit regex), MEDIUM-1b
(missing FK checks), and MEDIUM-2 (unknown column pollution).1 parent d3044c6 commit f97f7d7
10 files changed
Lines changed: 836 additions & 192 deletions
File tree
- docs
- src
- controllers/v2
- models/v2
- utils
- tests/v2/integration
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2416 | 2416 | | |
2417 | 2417 | | |
2418 | 2418 | | |
| 2419 | + | |
| 2420 | + | |
| 2421 | + | |
| 2422 | + | |
| 2423 | + | |
| 2424 | + | |
| 2425 | + | |
| 2426 | + | |
| 2427 | + | |
| 2428 | + | |
2419 | 2429 | | |
2420 | 2430 | | |
2421 | 2431 | | |
| |||
2434 | 2444 | | |
2435 | 2445 | | |
2436 | 2446 | | |
2437 | | - | |
| 2447 | + | |
2438 | 2448 | | |
2439 | 2449 | | |
2440 | | - | |
| 2450 | + | |
2441 | 2451 | | |
2442 | 2452 | | |
2443 | 2453 | | |
2444 | 2454 | | |
| 2455 | + | |
| 2456 | + | |
| 2457 | + | |
| 2458 | + | |
| 2459 | + | |
| 2460 | + | |
| 2461 | + | |
| 2462 | + | |
| 2463 | + | |
| 2464 | + | |
| 2465 | + | |
2445 | 2466 | | |
2446 | 2467 | | |
2447 | 2468 | | |
| |||
3689 | 3710 | | |
3690 | 3711 | | |
3691 | 3712 | | |
| 3713 | + | |
| 3714 | + | |
| 3715 | + | |
| 3716 | + | |
| 3717 | + | |
| 3718 | + | |
| 3719 | + | |
| 3720 | + | |
| 3721 | + | |
| 3722 | + | |
| 3723 | + | |
| 3724 | + | |
3692 | 3725 | | |
3693 | 3726 | | |
3694 | 3727 | | |
3695 | 3728 | | |
3696 | 3729 | | |
3697 | | - | |
| 3730 | + | |
3698 | 3731 | | |
3699 | 3732 | | |
3700 | | - | |
| 3733 | + | |
3701 | 3734 | | |
3702 | 3735 | | |
3703 | 3736 | | |
3704 | 3737 | | |
| 3738 | + | |
| 3739 | + | |
| 3740 | + | |
| 3741 | + | |
| 3742 | + | |
| 3743 | + | |
| 3744 | + | |
| 3745 | + | |
| 3746 | + | |
| 3747 | + | |
| 3748 | + | |
3705 | 3749 | | |
3706 | 3750 | | |
3707 | 3751 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
958 | 958 | | |
959 | 959 | | |
960 | 960 | | |
961 | | - | |
962 | | - | |
| 961 | + | |
963 | 962 | | |
964 | | - | |
| 963 | + | |
965 | 964 | | |
966 | 965 | | |
967 | 966 | | |
968 | | - | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
969 | 974 | | |
970 | 975 | | |
971 | 976 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
938 | 938 | | |
939 | 939 | | |
940 | 940 | | |
941 | | - | |
942 | | - | |
| 941 | + | |
943 | 942 | | |
944 | | - | |
| 943 | + | |
945 | 944 | | |
946 | 945 | | |
947 | 946 | | |
948 | | - | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
949 | 954 | | |
950 | 955 | | |
951 | 956 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
14 | 22 | | |
15 | 23 | | |
16 | 24 | | |
| |||
353 | 361 | | |
354 | 362 | | |
355 | 363 | | |
356 | | - | |
357 | | - | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
358 | 375 | | |
359 | | - | |
360 | | - | |
| 376 | + | |
361 | 377 | | |
362 | 378 | | |
363 | 379 | | |
364 | 380 | | |
365 | 381 | | |
366 | | - | |
| 382 | + | |
367 | 383 | | |
368 | | - | |
| 384 | + | |
369 | 385 | | |
370 | 386 | | |
371 | | - | |
372 | | - | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
373 | 403 | | |
374 | | - | |
375 | | - | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
376 | 417 | | |
377 | 418 | | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
382 | | - | |
383 | | - | |
384 | | - | |
385 | | - | |
386 | | - | |
387 | | - | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
388 | 423 | | |
389 | | - | |
390 | | - | |
391 | | - | |
392 | | - | |
393 | | - | |
394 | | - | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
395 | 427 | | |
| 428 | + | |
| 429 | + | |
396 | 430 | | |
397 | | - | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
| 431 | + | |
404 | 432 | | |
| 433 | + | |
405 | 434 | | |
406 | 435 | | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
416 | | - | |
417 | | - | |
418 | | - | |
419 | | - | |
420 | | - | |
421 | | - | |
422 | | - | |
423 | | - | |
424 | | - | |
425 | | - | |
426 | | - | |
427 | | - | |
428 | | - | |
429 | | - | |
430 | | - | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
431 | 448 | | |
432 | | - | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
433 | 474 | | |
| 475 | + | |
| 476 | + | |
434 | 477 | | |
435 | 478 | | |
436 | 479 | | |
437 | | - | |
438 | | - | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
439 | 483 | | |
440 | 484 | | |
441 | | - | |
| 485 | + | |
442 | 486 | | |
443 | 487 | | |
444 | 488 | | |
| |||
469 | 513 | | |
470 | 514 | | |
471 | 515 | | |
472 | | - | |
473 | | - | |
474 | | - | |
475 | | - | |
476 | | - | |
477 | | - | |
478 | | - | |
479 | | - | |
480 | | - | |
481 | | - | |
482 | | - | |
483 | | - | |
484 | | - | |
485 | | - | |
486 | | - | |
487 | | - | |
488 | | - | |
489 | | - | |
490 | | - | |
491 | 516 | | |
492 | 517 | | |
493 | 518 | | |
| |||
0 commit comments