From f39d611125ff5096009896e02d40324bde8a8eb9 Mon Sep 17 00:00:00 2001 From: nadavosa Date: Wed, 29 Apr 2026 12:08:13 +0200 Subject: [PATCH] hotfix: remove opportunity status_match column from migration Adding status_match to the opportunity table via raw SQL bypassed the TypeORM entity/DTO layer and used the wrong enum type (volunteer_status_match_enum instead of an opportunity-specific enum). Removed the ALTER TABLE ADD COLUMN and the opportunity status_match recalculation UPDATE from the data migration. This needs to be implemented properly through the entity and DTO layer. Co-Authored-By: Claude Sonnet 4.6 --- ...77383134500-add-missing-values-to-enums.ts | 3 --- .../1777384229791-load-businee-data.ts | 20 ------------------- 2 files changed, 23 deletions(-) diff --git a/src/data/migrations/1777383134500-add-missing-values-to-enums.ts b/src/data/migrations/1777383134500-add-missing-values-to-enums.ts index e3bdf35..75f0933 100644 --- a/src/data/migrations/1777383134500-add-missing-values-to-enums.ts +++ b/src/data/migrations/1777383134500-add-missing-values-to-enums.ts @@ -12,9 +12,6 @@ export class AddMissingValuesToEnums1777383134500 await queryRunner.query( `ALTER TYPE public.volunteer_status_match_enum ADD VALUE IF NOT EXISTS 'vol-past'`, ); - await queryRunner.query( - `ALTER TABLE public.opportunity ADD COLUMN IF NOT EXISTS "status_match" public.volunteer_status_match_enum NOT NULL DEFAULT 'vol-no-matches'`, - ); } public async down(_queryRunner: QueryRunner): Promise {} diff --git a/src/data/migrations/1777384229791-load-businee-data.ts b/src/data/migrations/1777384229791-load-businee-data.ts index 33de582..6722803 100644 --- a/src/data/migrations/1777384229791-load-businee-data.ts +++ b/src/data/migrations/1777384229791-load-businee-data.ts @@ -25041,26 +25041,6 @@ UPDATE public.opportunity agent_id = 4 WHERE id = 815; -- VOL-549 --- ============================================================ --- Recalculate opportunity.status_match (TypeORM hooks don't fire for direct SQL) -UPDATE public.opportunity o - SET status_match = ( - CASE - WHEN (SELECT COUNT(*) FROM public.opportunity_volunteer ov - WHERE ov.opportunity_id = o.id AND ov.status = 'opp-active') > 0 - AND (SELECT COUNT(*) FROM public.opportunity_volunteer ov - WHERE ov.opportunity_id = o.id AND ov.status = 'opp-active') - < o.number_volunteers THEN 'vol-past' - WHEN EXISTS (SELECT 1 FROM public.opportunity_volunteer ov - WHERE ov.opportunity_id = o.id AND ov.status = 'opp-matched') - THEN 'vol-matched' - WHEN EXISTS (SELECT 1 FROM public.opportunity_volunteer ov - WHERE ov.opportunity_id = o.id AND ov.status = 'opp-pending') - THEN 'vol-pending-match' - ELSE 'vol-no-matches' - END - )::public.volunteer_status_match_enum - WHERE o.id IN (1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 150, 151, 152, 153, 154, 155, 160, 161, 162, 163, 164, 165, 166, 167, 171, 172, 173, 175, 176, 179, 180, 181, 182, 183, 184, 185, 188, 189, 191, 192, 193, 194, 197, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 245, 246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 321, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 333, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 363, 364, 365, 366, 367, 368, 369, 370, 372, 373, 374, 375, 376, 378, 379, 380, 381, 383, 384, 385, 386, 387, 388, 392, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 408, 409, 410, 412, 413, 415, 416, 417, 418, 419, 420, 421, 422, 423, 425, 426, 427, 428, 430, 431, 433, 434, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 453, 455, 456, 457, 458, 460, 461, 462, 463, 465, 466, 467, 468, 469, 470, 471, 472, 473, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 496, 497, 498, 499, 501, 503, 504, 505, 506, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 519, 520, 521, 522, 523, 525, 526, 527, 528, 531, 532, 533, 535, 536, 537, 538, 539, 540, 542, 543, 544, 545, 546, 547, 548, 549, 550, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, 585, 586, 587, 588, 589, 590, 593, 594, 595, 598, 599, 600, 601, 602, 603, 606, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 652, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 727, 728, 729, 730, 732, 733, 734, 735, 736, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 758, 759, 760, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 774, 775, 776, 777, 778, 779, 780, 782, 783, 784, 787, 788, 789, 790, 791, 792, 794, 795, 796, 800, 804, 807, 808, 810, 813, 814, 815); `; export class LoadBusineeData1777384229791 implements MigrationInterface {