From 88f0c0c9f0c467c277d42517c08c65d1e085ea6f Mon Sep 17 00:00:00 2001 From: nvms Date: Tue, 11 Jun 2024 11:55:19 -0400 Subject: [PATCH 01/10] initial pass --- docs/logical_data_model.encoded | 2 +- docs/logical_data_model.puml | 2 +- ...0529152617-goalStatusChanges-historical.js | 191 ++++++++++++++++++ 3 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 src/migrations/20240529152617-goalStatusChanges-historical.js diff --git a/docs/logical_data_model.encoded b/docs/logical_data_model.encoded index 9e61fa88c5..44606b8277 100644 --- a/docs/logical_data_model.encoded +++ b/docs/logical_data_model.encoded @@ -1 +1 @@ -xLrjSzmsalxENy7IVaZY6czjaijLdMhlQcLPJbndoof9pjOcbL919CH1p05c0L2Eaij_lmB05m04IO3ao7Q2JzAGG7VpGQFHwCRBFnW7b5UxCadJpr9mJr2UxYcvBU6EfUyHtwO05oNCquoIzoozWv0dQShU8Rm75EpI4c787_Om9PHlYV4gAm5ZwMz9cgRfCq9pI4z9IMZwbw-__i-J__gRzlnwYx9t63AMVfMawUzIb5DH6x8ahUcSP1pT8_vm2JEqHn1pzbkIFabHdXwd27DOG9eUftyl88OKS9Z_Jv8M563-qYnmUVRYxFBi_FJiAZtwLhndHtz5UP8IleNq37F47qPgl6bB8LXNV9A2Lh8zeMFyJeo2RVsCGY7m2K-FKuvsa76msolinS_qLu9XUfnYylxpBqJvQf_xb_yzIMpy1FEJ_PwIUqYdGLp-VHM3TAJMMmRfus2Hvh24KwMJ51Ckwd3u2qzInW6lM7gSGbpjXj0y9MK9RWa5dFov41t0umKguMFWS8TAE59BYX62W-_t3tttjmIKBn0iyql8zWIp6I084jv0YCBj1nO4bDTmjoy1XrA82qfs-r7xvwvn6CXIMcDITwqVVnf3yH8oKj7iKG6aDS-HsgrOXu584PTDqPWS1PFuJ_wy6O7gngZ-Mv9Yi5Euo-U9v7H7nSEQf3-rl__VqwTZpJJSajCjI2Wg40RbHCiPRRNKSXG1lDPjuwma35vLR0znVagmw0hjOAE_kuI04TmCF2d4-NCWnoN194aHary6ouUp774eFkMMa182KUKEb4oMkUGSx45BH2X4DxB9bclVjGFTFQ3P5j3Fl_hccoyqdMdg3NJQDxS_GodGAQde7CFN4l1kpBP6rrAIzmY1MhWFEJQsKiyR9DU0wMCRDbi9vrlzDM3v1Er_7xdU8A2RVrwAFnnSK7AFSfWFZ0DJL1s3GR_AH5DVaptAFamxSy5wfBuIxODq0F_1qWU8_gSl7JR9BAw7dTG1-aR440nvlfmzphPVUAg4_WvIs8sjWyCag_O2g6iH2Mb8oVxMyjIwtSHGEjyAXZVe9sZpXatTsUch_prjNxzbC4zIaEU88u91UKwu22TbIXV4D1-xAhJsqcqR_KtYX2MSRjqICFvMOVZimM-w7n8OeB1018ysl2ZmIBtuIIgYKKZsn4wShn9Dm-kuNzt7pFvdDNFRwu2ASqqwvQ3CAZ4Dpg-CU4-ZBPtb420GUadAhf_di4Jta3wyXdnByfveUKK1Ln-MmmpjGFdvrvillt2fQpSrxllxEw4qiiZFZE1ReHwug41XOo4gbx00cL8PKnQdpcjSSRMxXVJDtGMW76LeB-AZNOCawHuKK204Qp744wEaBScUaeA2dMWprslQ6D_-YtzNa76f19Qb5V5g0nfMtUuG4xfZDPvymJaqaUI05f1VaBreSA7W3lRIHN2-uC2XV-BDFQAy0kNpMXbSMjhQUprUA5GftDBh5BojlX6cRCq06PqCIF4EwmlfOab5cKHZ1_RicepCyYo2ZVpte4JvYr74lg-BpBLwzHJRrDadeX_iGG4uV8DVGrf0OxhEQGKF5CpMGDxjAemogVAlIE4x-yoiUgEJQxFeHpJVx8dcyUMq6N16XyWc6NMeqBmebmCEEhiV_kr-0Pd9JhKeT6A4dfwaUp7OCyxUuBVxaW1d-Egm7UBi7cAkxE85Aebdh991ET2CjF2LAg5HRZ63z-FQP8iqArePalGyL7UpF-GSAD_i568EgUm37XqGMbJc88SDpYCKJ14V9TDcodRk7ZX2lMWXi8lKODlu3GAwjw5vXCBnyVxmqxUNbsVdrpVNBr-VNLsVlBvmsJRo7fk8kwSg0T0usFQTwJt9x0zh4VCUAZtxaXWEhz2lqFoQT_31qVnDk4V8CA0XPeOwkAyAun6Qlyui1slKAHZmnK9isgUsWg14-DqpaBrhzSj0EpX376J-FrWMcE2JPh9zgKVCv1lhoUACSMYEE0J2GyR4t23fFey9LgWtv1LFMverdieJEpF3uk4Lsg4IKCGVlgMaslkvNE7wRx6Pg6gLFb2O4_wIbLKEyvTtvuIVv3k47Oty-mXOqq3TXIRHvyrmriL56VVl07k9vUmS3EIoUz512omv29vk0IvMjmS7zG7X-ojtHk595nnh9arh-OBrAndQSKIox9WdANEtZ4OBk8OGpuPegdeEKk56b-QYQvZ-rbwAgA5hfckybtE0gWxkgdftulEDDD0MOGtBVHDoR4AkjTRNJsLGrObhbpbjO3WmkiHcw9Fpczr6uKvhmohK3PYBnoUHAdC2CpN4w-FwHELsVE-LSpNDT9CS8WdLbaC4jpcPPdAq1MohT_fQqdCpFAK_VaroT8TMQqIPrQkpBXCjFMflFPQ_prPs5Ggy01HY_kq7ZpqTtcUk9VaU0Jsfvp7Hww_AUq79xce7A6TR2Far1nSbmFhaPtnH7kNkrGnB5-j9vCzbTkyLmk_MtJlXtvH59qRmI1iMtbNozJvJUZFV1dnRg84wd4zjk8qDXCl2XG3Z2fGlAfmZNBmcc6zx9BCSkNfMtHYkLrsV66vBgGVG7T6IxwxsC4EWH8oVxG0gfmev2I4iSwPo79YKI2ziBGcgSzXJ8lMAEONIqzSZzb_as4z9xgm_wecBgU872UTDpRIDkVKVAA0d0nbkO-FmFuEiQXYc1_Aq_M8F_kojHA2VxKViehejKMQinDi22lD_8ccqpDrPBsLy_pdWm3Tshp82ByOJrI_RGi6W6q7wz3ZzxENpi_FhbozUdZt_xFZuIBhVbjGtgiwHFqeopuxlI9VMCBnT2ZD2yrDIgQKwTH6MRU4Ez1LR-rYFo9D_WbyXFOboU9ASlCSYatp2XVEkBrjAZzE_rJF-338sNC2_aUOs4D-_66qZ2_qr-rqExn16Ufn1vjiW1hSb7CY_t_7z5UGSuSAeOtLXeK5vDIDs8jJcDM3lsefxmFjGl0QeXDHSj74hicBSlKXA6xdjLLDpCvVjs0B5o2yNITX1ioVfp-JMiUBkYLY59e8ZYvqr2bbLydRX7QioeSsQHTGHmnnYW3Fe0nkdg2WWRLUPjgNqNcdHR7iduB0Wz463VCQg5ZdbrcDc_kF2bOBXhYgTI12CEA485t8x-LMrsm6AeFTGRKnLN6ErDgKw-kkHLkT8JGRk4Np_CdSJw8IxbEKQAasjew01HauGJuDAl_MDq7jkR0ECKK9sRsW1CFhLNlJwpUO_lFqjk2DgRSILMbVV8sCCR0WpJgjil0QL5g1PdZdjWKk4dWVDERi6VO7abChRBxnJvQSrfIRSg4fRxwXLMGYdgNoh2XfgA-eTTQFWo03TaqPb1nfgJVsZi3KHab8TE6-64IjOzp7eE65mUdgR4KgXrCVd4EIl48RB8nkr0djmRsD5-ZxFXPhy7MBYjvSlk5oLmrLGoVSmeecFQ8ll39bQbX-72lifMmuvf3k4WP7SCleZ1bHiRBZlDCsHPrjH-VJ6NT4lxklQeKAIuz_bvPGSecFCdBX_AfgyYWQkhNIsaNmqbRlY0EU0ve_dbB2QevVIDk9fYbfN_iISuKVKpJ-SMJoeFOo6S57RFAhTYDEGE0rnp5XNj7BsZFdmDavDB-hFyOv3BPxKVsBHB5Nk6ktW1n_fdpq4wqPJRbB-np3SMckis74iNNYiVlF7yNNqxrdRrUbX5JsTu9Rnso6ys22ksgfYtNQzlA1fiZ_QZCbUS6T5f3Hr9HNFYBwoJfrxopd8jZiJfi3KW6f0mqSCqBZ-0HOE7JJcmUjQkjva_F2sBYJei6gu076Ht3O_TKal-VWc0eYR4Lg_NbHKA1UPt5dwg-yDQHjxtWxlZsrtTlZoA4kmfOSi37pd8TTMTPy2V-5N7Ev3zbFWkivOqzL5Fgrz53qm-die27VjePYeAFTFzChOJV0O9xzvwvH-6hhwUJrdgKP6TdjXNfmZdtPwxEClNPrtgE4VPmdhZ9rb7yksdMjhpvxn_0DitEbZwhTDns-3ZRujPyxvdsliw5jmJqPeBpZqlf-EryopGcTl6xf3bF7JsY3wb7s9ByJk0hbwTRhqEU5NOfBX9qVzRLxwxocpAEejiYZiBR4ex2lmu5wgeSrJcYtfEhAkoIlDn3pEYvjtqlY5MBCXZv_o2r-46N6MaT41zagy_uZlABbG6tGk86K4OrWkTTPjUiOXoz0yy2Jq2tiRHUe5x89XxtGaTHZfijN5yEvEsVl9y0TqxdvIXiUbpB9_krxiARn3lpYEKhvpFMwwftlVKzqMhWr_XzYMEjzPwm9OriciReJQqrD7Dv8vtlmB0XgwUMpaQgqFPTh6DXhIqHE1AuYiPs97nsV7n-8toCJHilU0FY1Sw00KdhOJZnsnTgaEhpsZr9Z436rQM7ToktEVGapsi3s6s7nJ7xNxZEGFxNByvkGbvqFdliIAeX4y_2CA_jjzTW3XEQavMhQrf3UXJevHtzHg-mvoO1vDrppn2-3jq0uwrTBjPOYZMBnlH0WviVTZkEl0zuHZN-w8TNjipL5sWSNnTjshidIEPhQpq7s_yeiEu3lca6KKxPszUcNFid-ggU_Eof2zWQp7PTv1guVHupx3Ugy9maMNL_gpO-9zikkSurpNF6bqzl6XtSUZtLL6A9H7Q89ikwgL4s6XBoq_be3oA_jarDe7kh6zDIOawzqv4Do-YCEJ4lfjHJr4EiRdD8adwGuofgv2Q7Dpwe3LPYTlanbiz_5s7tOZYZR9U8-p6UQU56QTqteFA0BI7JJthdkx0O59eKCEYiDZtzlcdBcL_PeFd_aJBEhDqM_k8QKeXsltaQfZCL6bsQLzg3CQxq5PmNxcG6Vjex6oKbyL0xQmWsuBzEtmgSdXBVbzUmgVcWzy86l7oJleykMuQohXstpjkPe1U4m3i2KxU7dWAuIsJDvGGmTCc9Y-lIA5cWQk7wbnnxbAK7H9u_GuFRcyFFdNZpyruue4xqQMEXBd0eXFEAdubb0PGNQS7D1yfEkw7cTGQ4imF7SU06Mai3L9HBuQu7jvO0LY76MiMKD-8toAcvsuakI6r6OiIVzTWHBnXnl0M4N5Gf6R7B3jBG6qFH4BbAggze9JW332nOrQJyMqTqrsN9T9fiBbWqRnchjNbWPcbzxXWfZoFTsffHcBBERUKV73oVDwYkS1IZSV9BGNOFZXv0KgEQH-AVLgXvrpNBcSQlHsWHzENftO5tPvXC24RtwZbP3FTkKDOBr7jm-zHnsG4-E7AFkBP5DLIZNa8tqvGuUXvL5Z-Fw6alStvZI2bBdZQJrdks6eSBJ4AtD5Hftaf16cKPW6LeP4gFfGMQ6P254Veh5x629URhmSOVm8bHkg2D4eHCENnKUqHj2ATjqVgsYiml2omuuHh16m8awZECM-vmLJXCU2P-HQv0YG3P1rKt84I04qUijn1Ca5KWIe1r2SbJXWUVxybGSaUS27vTQ7YSl60SvlE2XwiMTHM8BOVjhWDwjzBZSeXtAVIdyjf7hlJAgfuz1ld9cN2NmcRfIEIkG2QNJZS8JC1La4o08eZl8EK4RkTOu0DG355C0KGd4kFmBE-7t64QS1d296BepSDnX7W1g0nYyOZZZPE8qTwn3Hij6Auvm7I14S1pWH51kKmRjc8pujFX6L7Yh3DvT6X5g4el8CGXDHiL0Pl0OrmjF14w4PX2R2Oi4ISXNfdmwPa2j7_tJmJDv36d4oSHguGJF2v8J9SJrZH6e4AVTTWX6oQSYYYatY5RNA1oN7fG0HgI6aegqAmYeQgKcW8aA32BdlceiecIWDNMGNSNBX59N90wGuq0L25VlT54uHe4601kuOYp2vOOeGMH35bVk144LuR7Y6RnoB0Ea0HM0iOARk2uie6IZ5zNjJ24LaR6JSznv5S0GupdkM8ZGIci5BbY8-6ZvHRonSuccXmyWKqT2uO8cJ1ZSmZhk48Z8DCX4K2nJxTgA8YaHbwhwZ29CRfeahaI9iRjWYH3P48tShHOGKGlshcI8o0fde_RXGSLp5585fW1c-oIbYP64KiN5WCtn_LCIemIY2Oe7Il-yeuY9mSLzx5B5HsDWNEVsfSKa-IqyO8ncIjfSbIIBdwUdHbqVfqwS__kMs1DcxpRu426_u5cNlC6Jilx_wwUbJMKJR0YpaQdzjv1MzYTfzvalCFlSYFKuByMYZ_dHlacJaQYEBcxX33UOMkz_Iz0WVfRtpijDZSNkN-MoJWa5cYUFcaW3-KrVgfCSMRr5autXcLbjTgZPKx2rGMoCPkW5Wja3stISzcTe2cw4NTSq3ojRqY539PBq3oZNSajEoFKQRgfdd3E5KHKkoUG8rURIU53hpfj0g78rRx5nictUhSJCjvjY7zagl9eExZsnIshrTZPUoWLFVAKkjnbFh5rECkwAhSH_kwJRpeNuTmhjTQ9SUfsmFCmHAn7ZxTDFTiwuzCyL8UfSpp1p9LTtZ-f9J-yr6Fdz1oQvNPv44lUE2XVTYFTiOteNWi8nbxyGdwJ5P3rTcwbuvc1xNXy9RBvpChTiJWfhPSJs5TDhCvvlU4sLE6fTXHTyZa_zDkXhXd3iMdS8gLerYYrz9xt3p01RE0_V5h4CytwW_zkjL6JgMm0-pTnHU98mZYIIib_wKrL8u9qNX8zsTd1dfuziokZrtKsTW-PIXd8QwccBXxbwXF0QIn5qho9_rN78vSMTgLJ1pFMzci8xJbmD71TSXr_NWOBtQk1woPEZmtdLdcdj9jD6URZAv0lS9VYvEeUIT4YgGcrURckKwZFfhmtliYj7YgqYXUtd3p3iFRmdFXWSpYIVBumiDvKrAg0YYWN8ehY0zIS0OAZ3C7OI2XHaQ0fKuxX4mbCUGQxZfEOZpQFUwbY9kTgnGehPcAM5DJLhH4ZfDttouUoPR35ojNWrQsM0s-fdpxPSm_Uaikj8-0Wfn7M3BjgZCvw5Xp49R7xtkmy7K-gjAnFWfdhp1SAF-ktvF57NvI9gAzoJf1NVzcGuT_YPSuu5N_P3nAlpDCniC_kQh0VwB0r9rFDmHXmgcFsZv58i1qnVAnQ9QpAIYAXoBr8RwlmPu3gds4E1cjhoGehrZG_asngEbj5b7KvCpr1ST31Ti-b43DfE-YUn61pZHaqN-PAr3UAqq4pBVrZp2wPkqDneFbbXdSuPO3glcSSefAWf8OVxiOTFzI3oEsPjbiEpZ3GsJrJiUQzD_sTPy717RG_9SWbf5ce5McbVt8N9B16er-QuZw02erktr-O-sMNXhBPQdFSTXG8VKouqErm6aS7AVuhgIYhOQmSPwp912h2J4M0Vnwnah2JBK4axM-f5WgpH1qH7qQOF5_0CylvsBQ-8yq6fj9xWZlHbqZLUKPDHIkMKPCLHBfPbi8biMiyBgahX4O1kdLCd8ILuB973Q2lFLG7zTKue179nyZJELrXgjHirrMt1LATo3PVFKWjqwvMRrV0esdlebLkRBv2S3FY3FBlbxRd5jCcbM-QHBNuUdlFL06QwVRTh_ke2P8s2yOkIPs0ydmy-Bv1cCAlNaIDPS7cHmwwB5qyk3HkB6sjgBMQ9E9yGtxjpuKdvTa53xVXafr3z9FuPaQVI9jCGUd36ekSpCzjMPTAgLzC8iYo8qZIMuw4LgbEMmdoTj96QDmD2c5o5ADA3d9sa5VkrActwMbitZCX1GrnWv0-hpU3KElavTUVEpw3a3rYtjf3uROhPbKjG43Tlqi1cqpUnSHrctvBFeTg3M11j4Goavnvw6AkaFCk4SjAE1DDBxxkaCceqJKec_ctHBTb0HIRh1UwtrqRJ-VtnLz7A-pYMzGymTQtYNI-33U1c_OMoBnMWEPT5D7lqC-XnUBbUnuzDt5TLUX6Nx62XHwtIiDy6qkzDGMgAqVHHChTr3M_V6UeU5e9YeWpHccmecgfkMmhN2Qtc2h5wRD9GYMyPqSabKiuPNNo6rEi_1bL9E6PobarffrjiImCK_Kni0WhaQ-bspq1HStxSRgEVsbcY9dtoqaRfllq_KCBN61W91lbd9rJvVID-UtkWyp6dDCZvomNh5jsBnS0aOVxlFnPOyaI-ZjMSLoi3b9ZSi-ZvoA7M_88o2ooVq4ihVjRn8SUilBvf3srxaqj4steJJTkMZQ-BzT7GezR5Mm2kWFZZjLom6PloXNCmXJf7MHxXGUjsP9sBfEeLgZJvhdmOJj0VqJJUipwBbC9eTsSKMqtNIGClXtdgHDDlB5-v3kQ_9zFT2p6BHLcc2dD-tz9kWHlDaOfyiFaf_rtWIpXqycp6oSV-O-Ha3cqtzIJjSOkQpBqkFdNbpixTjiDvY-LNOw6lb3yJ22xTrMPfU4WlPmxOCkIK4hONBTenc0M4Z4xqgwO7W-ZyHtvAgMGPjFkyzN5KU8wohHsZHkeoybDgvJM-kFcG-Um03TA8EZKh_PNNoWqcNTTaOqRBhBILLiUtvc1lpTSzVCz-xdIM7u0FiHafERtSS5SAr7N6kjIh5xC6n8sskSjgJXON4ROEbaM-tRdbJ6zqynzhGW3HELyFxgqH9P_J0lUzgBfBCVqlLN1O3Uul2E_VGVgBvf0VCQf_uIaJ3YLa1UdEL-7ppMwSvWhN75aVfJ6zvmbnwU7ZrmLBucrYocLkUAwYMVMsJBluMGeLpwy2iTEOAbRyXvJA_a-g1xBdVfeWqCUUvLDIt9Sa_8CwhNPdyFm00 \ No newline at end of file +xLrRSzqsadxdh-1g7Znn7KzDairMhMfcQsHPSbHhoof9pjGabL919CI3c0JE0A0K9Pl_lWM05m04IO3aaUs4Jz8XWUxcXqQZqOtBFnW7b9T57iNninZS4vJ6EqfkSrYm-07nRGnmbiCqJYXvOF4TX3oAO_O1uHsWe8XpX25_tC6OKBubngia1up5lqPn7CSl2KqXFIOveV6Vllxwlux--w_Qy-ijIZvWo5ZyLHJ7lqbHZaLjoAAuedEKS7IF-ECbJD0EGSpPhr7yF4PfV1WZp646QNmO_os365B0OVe_KPnHWFcPMU3ovFJaykJy-EGgFdWjthE3lw0qYWdVGdg2EUAF0pNUDQKGh2e-Zq4ZsOxG8Nv7Hi6cVaAX4FY8nuSnHmLa71GxXRtu6Vz2C8mFOqmU_lo5A5_kKl_olqMHZPzWVhJRKN8FwJY8yx-lP90Er7hF87qQBE8Kvd2iT1HZmaKT3d_cKSmuu2MB3sE8ow8FpMEIv-2MKC397mlH7ZnEKGwV0eSxbCE1MbAC41nylx_lkryJa9yYcAUNaEq8PXD042IyWH25cm_C2CYlOR7B0OTIY0jAYjsW_NFNs0zaCQqmgRhM3pyEeNW96IbfygG0qehdGEr6hFr0f8ZBfgXDZe99_2T_tWn0TMDK_pMACIWKxl9v93dTKV6m8kbFxM__z-B5K3Frj-Hu2nAACeH1Fj9oHblDjHnP0AzbspZ92ODN9Tj1d1uJBBf2CzZexouXO0JN0qyCSVeAo759C8bYnEINmVpn94KSYa-v9II7G5Iv0pcJPIuv1plG414AqOviikMQTyr0TmzeiWNqprzzyyqNcixKzNewxRlRdw0Kw9YKT8hXQmXuDsPJesqfoNk0G2NSnnmR6wcd3P9BmFIf3PkDXDEj_XAmV8RslujSPn3GpJ_FnHyEBYYvHobCUyQ1CQgEmQ1RPQIfhyaE9H-ddRbWFL1VYVPHEe3_OEa3HFVJvmwRP1BN_Kxg07qdOWY6F5zE7cURBpnMGdyBAMp7rjvXafKx0TIrY8JKf6H_QtXgtMvaA9rk1SCRz3EqUVscxkJupVyUDw_VCvX6CKXJn17183ydN8IJ4gKBOfgFNHKQU-csZVucSSGIZhTk3XX_hp1y-UWttGy9352O8O876ruKUA9U_3mMqIWaUs8hpbUHfk5LtA_gOsR_ivgvwNL0nRb6dNAG9wMO1gTNHhodrfRMSWWG2BqaUTlFKvYZUqWVtqA-9Mb7jBIaWAiFIs622f3_-UlDbr-urBMT6dVz_K8eZIpo4oFuLgW7pagGsLY8oZdCGA9KnfJ5gVCQLrmMjv2-kxi0bAC4xKHyj6sGADw130g4O2M6U6AKj2NPKP9HK8WsSxscjV7jllXt2HcNIc1PMX6lDg1XvMs1cD0Tg_7a2ywXYIG7D8FyWkn4Wmi5Tx2NBeBp1GSE_HDlxX7b9SXVLShWqjB6tklnGg5AuPPUf-1jzOqmPMC6oE1aG8gtNrz85qigoYWQ1TYnQp8moxC8rlBVWnobfuE8VLSLcMhrgYcsgRFFHJ_OWGnm-0w_XJI3ndITqnBkAPYjWLmK9KQ9LFat9FETVIPMlS79jLdq4vflTaJp-79Q3pY3GsITZDfNQ5wKIm47hTqF_tQ_WCnefveLEZ52Jy_ZdHZi6MVlyFjTJe0pVBNV3d5o3p5NTl42vSGpLicW76W6MlXAbT0eDvZ1-s5jiaMQ5AqCINhkgxlP7t8Eb6zs3367LFO1Zmu8BIfJaCC6vm4AfeXFacapPJjt3noXNhGGs4Mgjsty1W7Tsz0yGk7uU7_uyVlBovFpwvlhixSdLzT7RozSjeqyO1DnzrGb01e7swuplIE9_M4DOjv3fMTV4iFX5Ve5cb_p0JuwchyEzmWPUZJ4p507zrLXF4BprudbO0qw1Js-M8XD-znM4EG8VtW9aW-DVXbe1sU8Wyp_Hyi24tnKJxOlzOYPV6CzcPqn3iqHXq2upvYO6oJTvp712lM6lE9fSxF6OtbYPsPOFBn21Se1HVpnDINbpi_b2jT_Yyr8LQlqdiASyESaBrEOdjsT4twK5WWx6lct0R36WReBJQ9Fc-4iYuioxjy2TeRbx1pqvB8xqK4BB3a87cy1pXQt1tlr0U73bJkZyBmDZjMJfYc-e8pVEC9LTc2JvAbRaFz0Z9NmxyyIafS5ZjcMb7aQWpmd3p4ky_pPkClPDy9ujbDTrNCC2xV9D1KzntJ7Tb943Nmpc-EzsWEKLUnNrRiJdszaYRO8QwsmgoEITKIswXJLKnbpTUBQ9bPh6FQCBh4P-gG49xTHk4zRimhr4gRYyLbaqfp0Z7a0-h0_KhaP_ZlbN4qptYJxo54rvH31JSgcdZjj0TlgdRwIzDoCNkcFtv8KtQ756b4c_Qgap4XB3zfRZzNnavLTHGel08MOl_xeeQdzkzIL9DyXeEVyFEQ1tKLxfvGKLmMWd6qXvDSSNEG0wtEZuJLxbBiNEynTooUHFvV9lpS8VrXsQuL_KsQj6C4ZRLZqLydN-Kpf1xqE-BPG0xK_bzlmAci8vqKJ0SObo4zBd2ASlIMORpiaanIvUbRL6AvNRP_eRqkf1z0Ty9BlhdOmGI17Z9yK0ELZXPo449OfLJaEZ4ga5xPM35KfxZ6HEiMSGkdPxG7xBrBmnoHrrdVqV4tjIRdxAD6-iOcuCVN-7SNxP9p3RMmS_cUGLGt3T4-Ujbzemf-zbIVqi_s8NPItEKgCXNfRG67wJoIDbhbvwqo6_ry13dn3-ofXS3gSnpvh2WM3RiJmuyFusTcha_FhizEparVF3WyFfFjjINsZwXpueoJJyFYEj5aFmzkbC24qFIQbMibJ5M795XQWgzZQnte4flpp_mhfKPJ3S-Za0Oj4yn4Nphk-gYa-ZFzQpVWJo5X_0Vz6cjf0V7Sws4OM-alsknJU8OpqE8DCnq4CRdFOavw_uxiho3d2cL77wi92Wz9oGkn4gCrRm3uq5NU0Tw5u2r0EgRccurOapRXx3PKsSjkBggOcDfkn1OgHNwwXiCDjp-EVoArZGTvpiKXD14TcEsiKiZBdpReyLYP2cpMBg2E6ESG09z07DavHba7QB49jIkczqgBPz4x0OKReemRvX4KlSigjnypynuKh1SDTcJkH81XnGX7Ev6xpgx8e04NGUwWsfYgkiLgRKXtyvK2hSw0c0_S8FfobRWAjS9UoN4sbhdKGDC382U9nKEdtlW5yptrlW35AIF6EPW2ZN-mriTzi_jFRtu85KKidhjIo-muPOs13c75Q9iCrgBG0zUhDSGzS8lGgQCxPDkWfabCgRx_mJfKVrvIASAqgJRs3HcKX7AVoMXKqr5RKEsX7mO41kYEDoYlKrEhw1s5B9YIbAd1U3oDMiEvJq772uFZqDY6KGgcFho18to0CvqSsAWNsuDx4YlHje3Cr-Ll4n6ylNt2-AeUhe9BlSK0Jdz0MtnaoDIm_3HNsKxOKSaWBX86Ht3Bw8mPKx7kuRpNDaMTRKFdqnbtGB-xgshv2aiFVvUMKxADZJ9ouVowQl8W6Bgrqjf5yCfMxuW2dWAPFvvImYgENqjRYQOfQLVxCdE4drCtVdLdSgprS3U6ijdbIkx5EGzPfY6F6kg2LisVC-xTnQdfHVOvt76hsfFupYsQfSjUeW1zzf7_v6AmRTRbH-P_2S6kjiM37iNJXgVhDxyVNqRzdQLUdWzNgwGItZDy6uja6ST5M5Ik-g-K5TPFztcPCze8xAoAbgIifUKBqbNNgM5pEGR8jJ9W2KmEg0GqVCK3ZkkTRE7JGc0SlQ-awa_7zsxgGeCEYuGB4HNBR_DGvlUJJcmWWRaPe_NfHLg9KP78dwQ--gwHfx6aRm3-rpTlXowCimUQUmT3pdVjSMzL-2loPNt6u2zbFWQiwGqrN5Vcyzb5qmEZkeI3SjOTYfABSFz4fOpV1KnmCvwrJ-c7fwkVrbAKQ2IbsmhmuHpxjSDcdNxewxSp3tyyIrWaxopwLRJlNrfuzu_b7sBZJnTHlcuxV1XjzMywKuq6NsD4tungDq5wmxtq_BQ-9HubEtZPqXoZZnvL1z2bxXY_4xWAvUdMyz3dXLsAIuIT7zMrU-kyfioZgBR8ex2snAEmhSEzUghxDKvejQJkohiaBpSGyZfERTX3vXLYp8K-dyWjVX1bnbf310VPAlF-4hp2vK1jqBY1b16EOptNMRNh66SpGF0ybz0ix6qMg1Uo2OUVm97LMwRpLnV3kJjdxqV07TEv-KeR7fSooVxjUx2YyGpyxJbg-SpskkwTxtrFL5guDV_lObZhTMMi3MDR1hMw4ciDL1pUIETxy2m8QkdbiuEQjZsNQXZOQqi43Wqk8h6TYHyUpmqFn6oJYvDbxG1yHpdG0Ca_RYOUEmxXKPzkUK6fCOlesBImxkItSXnIJ7MnEAJRVL2VnlYJfOxCSlpwOoVdGkI-nf6W03_-8Wlzsdm8WF2KrH_EcblGcrC4owfiQRIyW1-R9TVKJlm1UWGheL4ktbo4ESV6-C27aGDzFuIe4tmEGVRaZrkwnDKVP6HR7stKlyzmvcjdEGllzoY_QW--OGfPGj7FsweKzo-wXfxuxAqFs1h8EbsddiEv7ZxiCgxqc26TjNkcFZedtmQzJJdjTyY3IoQUBjX-FYgk4K2XFs0J9Tb4h9y92Nrf-B07vL_R1gPKFT6DxQqn8rhcI8BXz4OT7EVJRYhgFT8pFQHBFum8ofcvAQ79pwlpLUYTldHbizl6s7tOZYjR9U8-p6QQU56OTuteFA0BI7JJthdkx0O59eNqEYlrZt_lwXBg5_PgFd_aJBAhDqU_k8QKeXKltaR9bCLAbtgMzhoCSxq5UmcxcG6Vjex6oKbSL0xQmWtOBz6t_eShXBVbTSmgVcWzy96l7oGVeykMuQohXstpDiPi1U8m3i2K5lDpp3KDR9Y-meJqcJ4pVtf1CJGENZzIuurmvoDgaSNmO7rrU7lthXn_hSKM2ToDB7OXp0SGd79LyIwYC83jE3gW_qdMRZpCej2KOdZiFW39Is9ea8byDyBqyi08nZX9Mho6_4Jx5JI5kBBaXbHcBud-N84VyyGOmLbAnKEGc1MnxIm1jJiG2kQgglU0K88nmTgFMKp7jNPqTrsMIgN3ve5Qy-cgMkO7PkLUy8APyJtTgQS8YYwbNM7n_zAgQudc0qiu72Uq46Bu_EaKvXzGlfLuMs3d7bSkf1a-2_VxepP5zdvT724puvZTQ2Vcio6y0wpowVUmyQe4S6Jz4sPybcx9KgY4VwSiPMWmjZnh3XnjA7cxCQGJ9KyVJQivsmr3cQ8atvegCAib9LvW6OUfP6R92rONA2isi47KX6hgcOSNBZPSZZBz2vOPgXMWGelwxv5Uq1j1QxRe_Lgkn2iFB3ZkkO0s0jU8qYDFQzxnWMk6nu1cuDNa5o0R8kaXv1KW1D7W9yWgI2wGLe0v0wwp40SkhLsyy84a3FYorFapSHGvmUiD1reazYy8InERJUhzPxNEvGIcK-rIwQo7LUsTIJHs7VkFCl8pWCtBXzAf4Bf06DmwlaBaWMm6o05f7UGSe0zS-hm3L0AqfW364rhdy03Z3rnslEFNWj6BamiXzmV4AK0tGy0N3AqusJaF7EgnesMYjuvm7I2iu3d1MK6nGUk-QNV5fy5bHwQ3IVtFfYb23qAeylT2ig5Yez5w3kiBJmhD2qmlD2ei5IyXLf7yuP4Ak7Ft3mJDw3-cAaubJpmsQAqnEc1pNCwv83I3blajmXMmSibN5Hl5QjSe79SUb02jIVKYjjYe8gzL8ZGAr8jIBaFkkkHKb4wM-Y-nMd5muhSha0T8wq0L2jVQxCPnMW7e1whbZR8N93TCAaGNHkd8_4A8L7XkU_Xl7Le1qW5PWB636xWjRKJ9GMjVlZI6q8cCZuxxtQ0L7WEEyPsc5HaBJUydIYe-6pwet5YxhQQ7zo6IheN71iauQtC0uxX9QaQcHMK6nGB5l9rfHaQYCtNUqmkI6QUHAf1KsDsmhH3P40tShhGWfXBfNCwt826HMxyU5YkCgfXMO6fZ-cvnMZ2oCLcmSsFJV7xLYL6EqWcA1qhtlQCL5uEA-zcZ5Hc5ZN-JqXyObUXOVCKOI96qlYw98pjFZWoyFuXSlVlZJRGwI3vjT3X3Uy2rAFc38sD-_-l752rb4sm8iv6f-RUGLlP7QVUPBp3xt8ZwCC_5ee_wqRw9eu6eZYvkuGmsc5hjVu_W07yITyxBZGt5xb_bi4uDUPf7Zvf80_cDNwiI75czHPEDuPbPRNAecLEmjK5CZwhi1OB90zjqd7PcQ0fk-5rNDFSfMzuXGoMIzFShLtvBZiZr5cwgPvmJXL4LBica2rNcqZXGwyxhG8XoDM-nSREjtYt4pBURGXtPABoQ3kuziOjg-NOoNie5ZtobBBSPJwnTZZDkYYt7lx-asyxv-7SAxMMWN7yPi1nC4SiHuytJJthEkFJF5Y3gNCqmSoLNTm-gIK_lDHZu_fQJer9abGUUuOE6zMCysXdSXECnZsJdnINfCriE5cRfN3iQ7rQ7mrWidS-lsXA1cTbnF8Pqsy_ccyqIPazfbMD3tIEH_ewv6EEUMHQkmYbMjsE9Nr3dSF825yy1zCUiGppVgZ_rwKOQE9V3zx1s5PmdZI289wwK_PPKKpabH-4Xt9sT6-lWsZsx7tTGPM3vbAAU-hgPOkBjNA8-U977R2l9dDPUSJzoPMXNCNC_h6QpZzEN0KS5ro7KrE5YlDgw7BEexl7VPcUPE4gsrfvrCBi1zX9-BKoXvfuGAvFhLfcAv3AFksl0Eksom-29Iw5vUF_FMmvl3i-R1JEBH_FX2JNaJ4og2Q23lYoj8Jn8mXZ8CKmUXO67wXa0bZdi43ENHvnfkEWxYDDgThgM8cnqhbAYjMKfOKvCMj8HEqpSTxex95WDNerUzLZQOZNxcVFCbJ7ywYQwqZu12N0NOaYtAqsbe6BFGnaUl-d0mjUwg4Z5-YYVlCDoe_wuVYA8k7qbJyK2YJd3NdsdVuM_2DUvvrGqPByBVFBF1u6--wk4_Eo1LnSCTSQXW-hsMJx7eCNsXN2ogsKGggiAXI6se_ok0fv1g3W6kPyipATexDfHlOpoQIvkrD3KvGttHtd31fXirO1FfcyXkT80ZFLdaJzOwXDTACo7pRSKZdBv9UwFnO95rDcU8vR1g7iQSeYo35AOl7pVjZyZZcBr91ii-tj0mMPtZiJRTbqtDfn6nEIJF9QXLf1vefNbr7o8tHw16a-zQWWw0AjrUdlzWcuMtrcnvcdCSUdH8lTpeSEr12YVtCQuBgMYZ4Moen_Gfn49237KGlvwna21zBU5ahHy9jaWJP2r1dpQOpJ_0yojSN2FdWLPBEy4jwKslQxoW98EMoYtBWA6QAyre4zcoc1KMbyGb0jiufOe6JlAQ8O7JLfYlUlhhabBquE3aQvofjDHeDMYkcuABIk4UBEkd5kpMAJUBvrEmyTGliJ9T9ZyPy1vvjidVSujhdKcpoaTj-ZeyvQq7od3rRDFyrmRC707Z1IFFn7uu6dwU9KzlLAaZHxJayY23Mnij7byUD10trjPUJ19rF26-SUV6v_9hWuJQzyj8eVv9-Z4aSwDFf27sw8n1JMLcjg_Ef5Mjg1DccHMXgIt1HITIeoo7_Jng8Z5B18OsdGXHf04zFKahy6jMsdIpj6mQbvw0kiR86L2Vngjsy7NgofkVHCyPi6veHzNP49Cjaw8cQDYcXqsWRMRdMigw9Pz4jmMr8bWZ6ah9EVRKL4bta0dde1qDf97UjKydqAoTa5BytSHRKa1596e7xwNMHzFg_-5LqVFvEfVqzZ5thE6TBu4Futdy-h7DPgFPbqKtUNGpw5DukLp5ba_NLLHx4URjOw14hTEntWJJRaz3QOZIvb4mjMOFRTKRgnqMWcAa3jAOR2gOg6vQ2jSAh_a9icfjKb-AR1xJqILHzHfUVONKuZnxLqevPN2MZYgbMMvB01V_Z6q02EPgw7V5GbDmVTzke9xRMw8bVlBHHkg-_JvImzGI6mW4-NebL_Dy9drxUgFpCASry_Z81Uibtuh5mpbW_Fqk5LloHBwCLfvLA0ENcropwFh8eTJzWZ0ABf_GIoX_r_8YnQsxl6WARNkHIqlRU1DEsvMFheXtqz6Xr8TQ0I-0Uk-qNx7ecV67SZ67E4LQ7-52wRLddeYbwnIgDVgiUHfCq1xGD-smFecMmsYsP6TRJDT90ms7U-j5L6yldxaFvRuYqzqBCOb5KwKESdxNqA-36lMJaNso-23-JUD9E7VmhCV8slrZvcVqR3Rr9-rmYPdFlYmzTkRDpTwsmJgBvHTXew-LtnCBBzoMPMbwIIna3ziyvEOGj1Oksp6Q6OIDJFIYf7k2w_z4V4lAUXcq-RppS55vZB2k7g55opBoKchdDhsf-f3ux04Cq8agD2hzbyN9zoPTbcLZHCkkjvIKsRRZOsxCrnr_pNplTfOSWlUm6oWvljrnK0ZNTiIfrYeNimV7ZhIfocbF5cOIjmsMHhxPkkLDRN3p76j20z8uNVNlhn8bdT43zxwhgKWo_orLKrdqx2qAxznz-ucca-ungrtY2n4D9sO5wCrLujFDRvNc2DOUMnobCvtb2LFfuVxL1tFXhsF9Pcvvgg1QzhL9klXR21NEhGApqfdBLFw6vFFyJge7igT-co9InvodKb7V5aN_W3WjYppwVm00 \ No newline at end of file diff --git a/docs/logical_data_model.puml b/docs/logical_data_model.puml index 782b77a08d..f197e6df22 100644 --- a/docs/logical_data_model.puml +++ b/docs/logical_data_model.puml @@ -357,10 +357,10 @@ class GoalStatusChanges{ * newStatus : varchar(255) * reason : text * updatedAt : timestamp with time zone : now() - * userName : varchar(255) * userRoles : varchar(255)[] context : text oldStatus : varchar(255) +!issue='column should allow null' userName : varchar(255) } class GoalTemplateFieldPrompts{ diff --git a/src/migrations/20240529152617-goalStatusChanges-historical.js b/src/migrations/20240529152617-goalStatusChanges-historical.js new file mode 100644 index 0000000000..b07b8513d9 --- /dev/null +++ b/src/migrations/20240529152617-goalStatusChanges-historical.js @@ -0,0 +1,191 @@ +/* eslint-disable no-tabs */ +const { prepMigration } = require('../lib/migration'); + +module.exports = { + up: async (queryInterface, Sequelize) => queryInterface.sequelize.transaction( + async (transaction) => { + await prepMigration(queryInterface, transaction, __filename); + // Change the userName column of GoalStatusChanges to allow null. + await queryInterface.changeColumn('GoalStatusChanges', 'userName', { + type: Sequelize.STRING, + allowNull: true, + }, { transaction }); + + await queryInterface.sequelize.query(/* sql */` +select create_timeseries_from_audit_log('Users'); +select create_timeseries_from_audit_log('UserRoles'); + +WITH + reason_lookup AS ( + SELECT * + FROM + (VALUES + ('Not Started', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), + ('Draft', 'Not Started', 'submitReport', 'UPDATE', 'Activity Report submission', NULL), + (NULL, 'Draft', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), + ('Not Started', 'In Progress', NULL, 'UPDATE', 'Objective moved to In Progress', NULL), + (NULL, 'Not Started', NULL, 'INSERT', NULL, NULL), + (NULL, 'Draft', 'saveReport', 'INSERT', 'Activity Report created', NULL), + (NULL, 'In Progress', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), + ('Not Started', 'Draft', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + (NULL, 'Draft', NULL, 'INSERT', NULL, NULL), + ('Draft', 'Not Started', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + (NULL, 'In Progress', NULL, 'INSERT', NULL, NULL), + ('Closed', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + (NULL, 'Not Started', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), + ('Draft', 'Not Started', NULL, 'UPDATE', NULL, NULL), + ('In Progress', 'Draft', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + (NULL, 'In Progress', 'saveReport', 'INSERT', 'User change', NULL), + ('Not Started', 'In Progress', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + ('Draft', 'In Progress', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + ('In Progress', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + ('In Progress', 'Not Started', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + ('In Progress', 'Not Started', 'saveReport', 'UPDATE', 'User change', NULL), + ('Not Started', 'In Progress', 'saveReport', 'UPDATE', 'User change', NULL), + ('Not Started', 'Draft', 'saveReport', 'UPDATE', 'User change', NULL), + (NULL, 'Not Started', 'saveReport', 'INSERT', 'User change', NULL), + ('Draft', 'In Progress', 'saveReport', 'UPDATE', 'User change', NULL), + ('In Progress', 'Closed', NULL, 'UPDATE', NULL, NULL), + ('In Progress', 'Draft', 'saveReport', 'UPDATE', 'User change', NULL), + (NULL, 'Draft', 'createGoals', 'INSERT', 'Goal creation', NULL), + ('Not Started', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), + ('Draft', 'Not Started', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('Draft', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), + ('Draft', NULL, 'createGoalsForReport', 'DELETE', 'Activity Report created', NULL), + ('Closed', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), + ('Draft', 'Not Started', 'saveReport', 'UPDATE', 'User change', NULL), + ('Closed', 'In Progress', 'mergeGoalHandler', 'UPDATE', NULL, NULL), + ('Draft', NULL, 'saveReport', 'DELETE', 'User change', NULL), + ('Draft', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), + (NULL, 'In Progress', 'mergeGoalHandler', 'INSERT', NULL, NULL), + ('Not Started', 'Closed', NULL, 'UPDATE', 'Migration', NULL), + ('In Progress', 'Closed', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + ('In Progress', 'Closed', 'saveReport', 'UPDATE', 'User change', NULL), + ('In Progress', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), + (NULL, 'Closed', 'saveReport', 'INSERT', 'User change', NULL), + (NULL, 'Closed', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), + ('Closed', 'In Progress', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + (NULL, 'Closed', NULL, 'INSERT', 'Migration', NULL), + ('In Progress', 'Not Started', NULL, 'UPDATE', NULL, NULL), + ('Not Started', NULL, 'saveReport', 'DELETE', 'User change', NULL), + ('Closed', 'In Progress', 'saveReport', 'UPDATE', 'User change', NULL), + (NULL, 'Draft', 'updateHandler', 'INSERT', NULL, NULL), + (NULL, 'In Progress', 'RUN MIGRATIONS', 'INSERT', 'Migration', NULL), + (NULL, 'Closed', 'mergeGoalHandler', 'INSERT', NULL, NULL), + ('In Progress', NULL, 'createGoalsForReport', 'DELETE', 'Activity Report created', NULL), + ('Not Started', 'Suspended', NULL, 'UPDATE', 'Migration', NULL), + ('In Progress', NULL, 'saveReport', 'DELETE', 'User change', NULL), + ('In Progress', 'Closed', 'changeGoalStatus', 'UPDATE', NULL, NULL), + ('Not Started', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + (NULL, 'Not Started', 'createGoalsFromAdmin', 'INSERT', NULL, NULL), + ('Not Started', NULL, NULL, 'DELETE', NULL, NULL), + ('Not Started', NULL, 'createGoalsForReport', 'DELETE', 'Activity Report created', NULL), + ('Draft', 'In Progress', 'updateHandler', 'UPDATE', NULL, NULL), + ('Not Started', 'In Progress', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), + ('Suspended', 'In Progress', 'changeGoalStatus', 'UPDATE', NULL, NULL), + ('Closed', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), + ('Draft', 'In Progress', NULL, 'UPDATE', NULL, NULL), + ('Closed', 'In Progress', NULL, 'UPDATE', NULL, NULL), + (NULL, 'Draft', 'RUN MIGRATIONS', 'UPDATE', NULL, NULL), + ('Suspended', 'Closed', NULL, 'UPDATE', NULL, NULL), + ('In Progress', 'Suspended', NULL, 'UPDATE', 'Migration', NULL), + ('Not Started', 'In Progress', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('Draft', NULL, NULL, 'DELETE', NULL, NULL), + ('Suspended', 'Closed', 'changeGoalStatus', 'UPDATE', NULL, NULL), + (NULL, 'Not Started', 'RUN MIGRATIONS', 'UPDATE', NULL, NULL), + ('Not Started', 'In Progress', 'changeGoalStatus', 'UPDATE', NULL, NULL), + (NULL, 'In Progress', 'updateHandler', 'INSERT', NULL, NULL), + ('Closed', 'In Progress', 'RUN MIGRATIONS', 'UPDATE', 'Migration', NULL), + ('Suspended', 'In Progress', NULL, 'UPDATE', NULL, NULL), + ('Suspended', 'Not Started', 'changeGoalStatus', 'UPDATE', NULL, NULL), + ('In Progress', NULL, NULL, 'DELETE', NULL, NULL), + ('Suspended', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + (NULL, 'Suspended', NULL, 'INSERT', 'Migration', NULL), + ('Closed', NULL, 'saveReport', 'DELETE', 'User change', NULL), + (NULL, 'Not Started', 'mergeGoalHandler', 'INSERT', NULL, NULL), + ('Draft', 'In Progress', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), + (NULL, 'Completed', NULL, 'INSERT', 'Migration', NULL), + (NULL, 'Suspended', 'mergeGoalHandler', 'INSERT', NULL, NULL), + (NULL, 'Ceased/Suspended', NULL, 'INSERT', 'Migration', NULL), + ('Suspended', 'Not Started', NULL, 'UPDATE', NULL, NULL), + ('Not Started', 'In Progress', 'submitReport', 'UPDATE', NULL, NULL), + ('Draft', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + ('Closed', 'In Progress', 'unlockReport', 'UPDATE', NULL, NULL), + ('Suspended', 'In Progress', 'mergeGoalHandler', 'UPDATE', NULL, NULL), + ('Suspended', 'Draft', 'saveReport', 'UPDATE', 'User change', NULL), + ('Suspended', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), + ('Suspended', 'Draft', 'createGoalsForReport', 'UPDATE', NULL, NULL), + ('Closed', 'Not Started', NULL, 'UPDATE', NULL, NULL), + ('Not Started', 'Draft', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('In Progress', 'Closed', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), + (NULL, 'Draft', NULL, 'UPDATE', NULL, NULL), + ('Not Started', 'In Progress', 'mergeGoalHandler', 'UPDATE', NULL, NULL), + ('In Progress', 'Suspended', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), + ('In Progress', 'Not Started', 'RUN MIGRATIONS', 'UPDATE', 'Migration', NULL), + ('Draft', NULL, 'deleteGoal', 'DELETE', NULL, NULL), + ('In Progress', 'Draft', NULL, 'UPDATE', NULL, NULL), + ('Closed', NULL, 'createGoalsForReport', 'DELETE', NULL, NULL), + ('In Progress', 'Draft', 'createGoals', 'UPDATE', 'Goal creation', NULL), + (NULL, 'In Progress', NULL, 'UPDATE', NULL, NULL), + ('Suspended', 'In Progress', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('Draft', 'In Progress', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('Not Started', 'Draft', NULL, 'UPDATE', NULL, NULL), + ('Suspended', 'In Progress', 'createGoalsForReport', 'UPDATE', NULL, NULL) + ) AS tmp_data("oldStatus", "newStatus", descriptor, dml_type, reason, context) + ), + status_changes_query AS ( + SELECT + zg.data_id AS "goalId", + zg.dml_as AS "userId", + u.name AS "userName", + ARRAY_AGG(DISTINCT r.name) FILTER (WHERE r.name IS NOT NULL) AS "userRoles", + zg.old_row_data ->> 'status' AS "oldStatus", + zg.new_row_data ->> 'status' AS "newStatus", + COALESCE((ARRAY_AGG(TRIM(NULLIF(zg.new_row_data ->> 'closeSuspendReason', ''))))[1], rl.reason) AS "reason", + COALESCE((ARRAY_AGG(TRIM(NULLIF(zg.new_row_data ->> 'closeSuspendContext', ''))))[1], rl.context) AS "context", + zg.dml_timestamp AS "createdAt", + zg.dml_timestamp AS "updatedAt" + FROM + "ZALGoals" zg + LEFT JOIN "ZADescriptor" zd ON zg.descriptor_id = zd.id + LEFT JOIN "Users_timeseries" u ON zg."dml_as" = u.data_id AND zg.dml_timestamp BETWEEN u.timeband_start AND u.timeband_end + LEFT JOIN "UserRoles_timeseries" ur ON zg."dml_as" = ur."userId" AND zg.dml_timestamp BETWEEN ur.timeband_start AND ur.timeband_end + LEFT JOIN "Roles" r ON ur."roleId" = r.id + LEFT JOIN reason_lookup rl + ON (zg.old_row_data ->> 'status' = rl."oldStatus") + AND (zg.new_row_data ->> 'status' = rl."newStatus") + AND (zd.descriptor = rl.descriptor) + AND (zg.dml_type::text = rl.dml_type) + WHERE + (NULLIF(TRIM(zg.old_row_data ->> 'status'), '') IS NOT NULL + OR NULLIF(TRIM(zg.new_row_data ->> 'status'), '') IS NOT NULL) + GROUP BY + zg.data_id, + zg.dml_as, + u.name, + zg.dml_timestamp, + rl.reason, + rl.context, + zg.old_row_data ->> 'status', + zg.new_row_data ->> 'status' + ) +INSERT INTO "GoalStatusChanges" + ("goalId", "userId", "userName", "userRoles", "oldStatus", "newStatus", "reason", "context", "createdAt", "updatedAt") +SELECT + "goalId", "userId", "userName", "userRoles", "oldStatus", "newStatus", "reason", "context", "createdAt", "updatedAt" +FROM + status_changes_query; + `, { transaction }); + }, + ), + + down: async (queryInterface, Sequelize) => queryInterface.sequelize.transaction( + async () => { + // Change the userName column of GoalStatusChanges to not allow null. + await queryInterface.changeColumn('GoalStatusChanges', 'userName', { + type: Sequelize.STRING, + allowNull: false, + }); + }, + ), +}; From 14023537bc978da06759e46760b923c552ccb379 Mon Sep 17 00:00:00 2001 From: nvms Date: Tue, 11 Jun 2024 15:49:48 -0400 Subject: [PATCH 02/10] update ldm, update model, change mig date --- docs/logical_data_model.encoded | 2 +- docs/logical_data_model.puml | 2 +- ...orical.js => 20240611185509-goalStatusChanges-historical.js} | 0 src/models/goalStatusChange.js | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename src/migrations/{20240529152617-goalStatusChanges-historical.js => 20240611185509-goalStatusChanges-historical.js} (100%) diff --git a/docs/logical_data_model.encoded b/docs/logical_data_model.encoded index 44606b8277..e658c0d1ab 100644 --- a/docs/logical_data_model.encoded +++ b/docs/logical_data_model.encoded @@ -1 +1 @@ -xLrRSzqsadxdh-1g7Znn7KzDairMhMfcQsHPSbHhoof9pjGabL919CI3c0JE0A0K9Pl_lWM05m04IO3aaUs4Jz8XWUxcXqQZqOtBFnW7b9T57iNninZS4vJ6EqfkSrYm-07nRGnmbiCqJYXvOF4TX3oAO_O1uHsWe8XpX25_tC6OKBubngia1up5lqPn7CSl2KqXFIOveV6Vllxwlux--w_Qy-ijIZvWo5ZyLHJ7lqbHZaLjoAAuedEKS7IF-ECbJD0EGSpPhr7yF4PfV1WZp646QNmO_os365B0OVe_KPnHWFcPMU3ovFJaykJy-EGgFdWjthE3lw0qYWdVGdg2EUAF0pNUDQKGh2e-Zq4ZsOxG8Nv7Hi6cVaAX4FY8nuSnHmLa71GxXRtu6Vz2C8mFOqmU_lo5A5_kKl_olqMHZPzWVhJRKN8FwJY8yx-lP90Er7hF87qQBE8Kvd2iT1HZmaKT3d_cKSmuu2MB3sE8ow8FpMEIv-2MKC397mlH7ZnEKGwV0eSxbCE1MbAC41nylx_lkryJa9yYcAUNaEq8PXD042IyWH25cm_C2CYlOR7B0OTIY0jAYjsW_NFNs0zaCQqmgRhM3pyEeNW96IbfygG0qehdGEr6hFr0f8ZBfgXDZe99_2T_tWn0TMDK_pMACIWKxl9v93dTKV6m8kbFxM__z-B5K3Frj-Hu2nAACeH1Fj9oHblDjHnP0AzbspZ92ODN9Tj1d1uJBBf2CzZexouXO0JN0qyCSVeAo759C8bYnEINmVpn94KSYa-v9II7G5Iv0pcJPIuv1plG414AqOviikMQTyr0TmzeiWNqprzzyyqNcixKzNewxRlRdw0Kw9YKT8hXQmXuDsPJesqfoNk0G2NSnnmR6wcd3P9BmFIf3PkDXDEj_XAmV8RslujSPn3GpJ_FnHyEBYYvHobCUyQ1CQgEmQ1RPQIfhyaE9H-ddRbWFL1VYVPHEe3_OEa3HFVJvmwRP1BN_Kxg07qdOWY6F5zE7cURBpnMGdyBAMp7rjvXafKx0TIrY8JKf6H_QtXgtMvaA9rk1SCRz3EqUVscxkJupVyUDw_VCvX6CKXJn17183ydN8IJ4gKBOfgFNHKQU-csZVucSSGIZhTk3XX_hp1y-UWttGy9352O8O876ruKUA9U_3mMqIWaUs8hpbUHfk5LtA_gOsR_ivgvwNL0nRb6dNAG9wMO1gTNHhodrfRMSWWG2BqaUTlFKvYZUqWVtqA-9Mb7jBIaWAiFIs622f3_-UlDbr-urBMT6dVz_K8eZIpo4oFuLgW7pagGsLY8oZdCGA9KnfJ5gVCQLrmMjv2-kxi0bAC4xKHyj6sGADw130g4O2M6U6AKj2NPKP9HK8WsSxscjV7jllXt2HcNIc1PMX6lDg1XvMs1cD0Tg_7a2ywXYIG7D8FyWkn4Wmi5Tx2NBeBp1GSE_HDlxX7b9SXVLShWqjB6tklnGg5AuPPUf-1jzOqmPMC6oE1aG8gtNrz85qigoYWQ1TYnQp8moxC8rlBVWnobfuE8VLSLcMhrgYcsgRFFHJ_OWGnm-0w_XJI3ndITqnBkAPYjWLmK9KQ9LFat9FETVIPMlS79jLdq4vflTaJp-79Q3pY3GsITZDfNQ5wKIm47hTqF_tQ_WCnefveLEZ52Jy_ZdHZi6MVlyFjTJe0pVBNV3d5o3p5NTl42vSGpLicW76W6MlXAbT0eDvZ1-s5jiaMQ5AqCINhkgxlP7t8Eb6zs3367LFO1Zmu8BIfJaCC6vm4AfeXFacapPJjt3noXNhGGs4Mgjsty1W7Tsz0yGk7uU7_uyVlBovFpwvlhixSdLzT7RozSjeqyO1DnzrGb01e7swuplIE9_M4DOjv3fMTV4iFX5Ve5cb_p0JuwchyEzmWPUZJ4p507zrLXF4BprudbO0qw1Js-M8XD-znM4EG8VtW9aW-DVXbe1sU8Wyp_Hyi24tnKJxOlzOYPV6CzcPqn3iqHXq2upvYO6oJTvp712lM6lE9fSxF6OtbYPsPOFBn21Se1HVpnDINbpi_b2jT_Yyr8LQlqdiASyESaBrEOdjsT4twK5WWx6lct0R36WReBJQ9Fc-4iYuioxjy2TeRbx1pqvB8xqK4BB3a87cy1pXQt1tlr0U73bJkZyBmDZjMJfYc-e8pVEC9LTc2JvAbRaFz0Z9NmxyyIafS5ZjcMb7aQWpmd3p4ky_pPkClPDy9ujbDTrNCC2xV9D1KzntJ7Tb943Nmpc-EzsWEKLUnNrRiJdszaYRO8QwsmgoEITKIswXJLKnbpTUBQ9bPh6FQCBh4P-gG49xTHk4zRimhr4gRYyLbaqfp0Z7a0-h0_KhaP_ZlbN4qptYJxo54rvH31JSgcdZjj0TlgdRwIzDoCNkcFtv8KtQ756b4c_Qgap4XB3zfRZzNnavLTHGel08MOl_xeeQdzkzIL9DyXeEVyFEQ1tKLxfvGKLmMWd6qXvDSSNEG0wtEZuJLxbBiNEynTooUHFvV9lpS8VrXsQuL_KsQj6C4ZRLZqLydN-Kpf1xqE-BPG0xK_bzlmAci8vqKJ0SObo4zBd2ASlIMORpiaanIvUbRL6AvNRP_eRqkf1z0Ty9BlhdOmGI17Z9yK0ELZXPo449OfLJaEZ4ga5xPM35KfxZ6HEiMSGkdPxG7xBrBmnoHrrdVqV4tjIRdxAD6-iOcuCVN-7SNxP9p3RMmS_cUGLGt3T4-Ujbzemf-zbIVqi_s8NPItEKgCXNfRG67wJoIDbhbvwqo6_ry13dn3-ofXS3gSnpvh2WM3RiJmuyFusTcha_FhizEparVF3WyFfFjjINsZwXpueoJJyFYEj5aFmzkbC24qFIQbMibJ5M795XQWgzZQnte4flpp_mhfKPJ3S-Za0Oj4yn4Nphk-gYa-ZFzQpVWJo5X_0Vz6cjf0V7Sws4OM-alsknJU8OpqE8DCnq4CRdFOavw_uxiho3d2cL77wi92Wz9oGkn4gCrRm3uq5NU0Tw5u2r0EgRccurOapRXx3PKsSjkBggOcDfkn1OgHNwwXiCDjp-EVoArZGTvpiKXD14TcEsiKiZBdpReyLYP2cpMBg2E6ESG09z07DavHba7QB49jIkczqgBPz4x0OKReemRvX4KlSigjnypynuKh1SDTcJkH81XnGX7Ev6xpgx8e04NGUwWsfYgkiLgRKXtyvK2hSw0c0_S8FfobRWAjS9UoN4sbhdKGDC382U9nKEdtlW5yptrlW35AIF6EPW2ZN-mriTzi_jFRtu85KKidhjIo-muPOs13c75Q9iCrgBG0zUhDSGzS8lGgQCxPDkWfabCgRx_mJfKVrvIASAqgJRs3HcKX7AVoMXKqr5RKEsX7mO41kYEDoYlKrEhw1s5B9YIbAd1U3oDMiEvJq772uFZqDY6KGgcFho18to0CvqSsAWNsuDx4YlHje3Cr-Ll4n6ylNt2-AeUhe9BlSK0Jdz0MtnaoDIm_3HNsKxOKSaWBX86Ht3Bw8mPKx7kuRpNDaMTRKFdqnbtGB-xgshv2aiFVvUMKxADZJ9ouVowQl8W6Bgrqjf5yCfMxuW2dWAPFvvImYgENqjRYQOfQLVxCdE4drCtVdLdSgprS3U6ijdbIkx5EGzPfY6F6kg2LisVC-xTnQdfHVOvt76hsfFupYsQfSjUeW1zzf7_v6AmRTRbH-P_2S6kjiM37iNJXgVhDxyVNqRzdQLUdWzNgwGItZDy6uja6ST5M5Ik-g-K5TPFztcPCze8xAoAbgIifUKBqbNNgM5pEGR8jJ9W2KmEg0GqVCK3ZkkTRE7JGc0SlQ-awa_7zsxgGeCEYuGB4HNBR_DGvlUJJcmWWRaPe_NfHLg9KP78dwQ--gwHfx6aRm3-rpTlXowCimUQUmT3pdVjSMzL-2loPNt6u2zbFWQiwGqrN5Vcyzb5qmEZkeI3SjOTYfABSFz4fOpV1KnmCvwrJ-c7fwkVrbAKQ2IbsmhmuHpxjSDcdNxewxSp3tyyIrWaxopwLRJlNrfuzu_b7sBZJnTHlcuxV1XjzMywKuq6NsD4tungDq5wmxtq_BQ-9HubEtZPqXoZZnvL1z2bxXY_4xWAvUdMyz3dXLsAIuIT7zMrU-kyfioZgBR8ex2snAEmhSEzUghxDKvejQJkohiaBpSGyZfERTX3vXLYp8K-dyWjVX1bnbf310VPAlF-4hp2vK1jqBY1b16EOptNMRNh66SpGF0ybz0ix6qMg1Uo2OUVm97LMwRpLnV3kJjdxqV07TEv-KeR7fSooVxjUx2YyGpyxJbg-SpskkwTxtrFL5guDV_lObZhTMMi3MDR1hMw4ciDL1pUIETxy2m8QkdbiuEQjZsNQXZOQqi43Wqk8h6TYHyUpmqFn6oJYvDbxG1yHpdG0Ca_RYOUEmxXKPzkUK6fCOlesBImxkItSXnIJ7MnEAJRVL2VnlYJfOxCSlpwOoVdGkI-nf6W03_-8Wlzsdm8WF2KrH_EcblGcrC4owfiQRIyW1-R9TVKJlm1UWGheL4ktbo4ESV6-C27aGDzFuIe4tmEGVRaZrkwnDKVP6HR7stKlyzmvcjdEGllzoY_QW--OGfPGj7FsweKzo-wXfxuxAqFs1h8EbsddiEv7ZxiCgxqc26TjNkcFZedtmQzJJdjTyY3IoQUBjX-FYgk4K2XFs0J9Tb4h9y92Nrf-B07vL_R1gPKFT6DxQqn8rhcI8BXz4OT7EVJRYhgFT8pFQHBFum8ofcvAQ79pwlpLUYTldHbizl6s7tOZYjR9U8-p6QQU56OTuteFA0BI7JJthdkx0O59eNqEYlrZt_lwXBg5_PgFd_aJBAhDqU_k8QKeXKltaR9bCLAbtgMzhoCSxq5UmcxcG6Vjex6oKbSL0xQmWtOBz6t_eShXBVbTSmgVcWzy96l7oGVeykMuQohXstpDiPi1U8m3i2K5lDpp3KDR9Y-meJqcJ4pVtf1CJGENZzIuurmvoDgaSNmO7rrU7lthXn_hSKM2ToDB7OXp0SGd79LyIwYC83jE3gW_qdMRZpCej2KOdZiFW39Is9ea8byDyBqyi08nZX9Mho6_4Jx5JI5kBBaXbHcBud-N84VyyGOmLbAnKEGc1MnxIm1jJiG2kQgglU0K88nmTgFMKp7jNPqTrsMIgN3ve5Qy-cgMkO7PkLUy8APyJtTgQS8YYwbNM7n_zAgQudc0qiu72Uq46Bu_EaKvXzGlfLuMs3d7bSkf1a-2_VxepP5zdvT724puvZTQ2Vcio6y0wpowVUmyQe4S6Jz4sPybcx9KgY4VwSiPMWmjZnh3XnjA7cxCQGJ9KyVJQivsmr3cQ8atvegCAib9LvW6OUfP6R92rONA2isi47KX6hgcOSNBZPSZZBz2vOPgXMWGelwxv5Uq1j1QxRe_Lgkn2iFB3ZkkO0s0jU8qYDFQzxnWMk6nu1cuDNa5o0R8kaXv1KW1D7W9yWgI2wGLe0v0wwp40SkhLsyy84a3FYorFapSHGvmUiD1reazYy8InERJUhzPxNEvGIcK-rIwQo7LUsTIJHs7VkFCl8pWCtBXzAf4Bf06DmwlaBaWMm6o05f7UGSe0zS-hm3L0AqfW364rhdy03Z3rnslEFNWj6BamiXzmV4AK0tGy0N3AqusJaF7EgnesMYjuvm7I2iu3d1MK6nGUk-QNV5fy5bHwQ3IVtFfYb23qAeylT2ig5Yez5w3kiBJmhD2qmlD2ei5IyXLf7yuP4Ak7Ft3mJDw3-cAaubJpmsQAqnEc1pNCwv83I3blajmXMmSibN5Hl5QjSe79SUb02jIVKYjjYe8gzL8ZGAr8jIBaFkkkHKb4wM-Y-nMd5muhSha0T8wq0L2jVQxCPnMW7e1whbZR8N93TCAaGNHkd8_4A8L7XkU_Xl7Le1qW5PWB636xWjRKJ9GMjVlZI6q8cCZuxxtQ0L7WEEyPsc5HaBJUydIYe-6pwet5YxhQQ7zo6IheN71iauQtC0uxX9QaQcHMK6nGB5l9rfHaQYCtNUqmkI6QUHAf1KsDsmhH3P40tShhGWfXBfNCwt826HMxyU5YkCgfXMO6fZ-cvnMZ2oCLcmSsFJV7xLYL6EqWcA1qhtlQCL5uEA-zcZ5Hc5ZN-JqXyObUXOVCKOI96qlYw98pjFZWoyFuXSlVlZJRGwI3vjT3X3Uy2rAFc38sD-_-l752rb4sm8iv6f-RUGLlP7QVUPBp3xt8ZwCC_5ee_wqRw9eu6eZYvkuGmsc5hjVu_W07yITyxBZGt5xb_bi4uDUPf7Zvf80_cDNwiI75czHPEDuPbPRNAecLEmjK5CZwhi1OB90zjqd7PcQ0fk-5rNDFSfMzuXGoMIzFShLtvBZiZr5cwgPvmJXL4LBica2rNcqZXGwyxhG8XoDM-nSREjtYt4pBURGXtPABoQ3kuziOjg-NOoNie5ZtobBBSPJwnTZZDkYYt7lx-asyxv-7SAxMMWN7yPi1nC4SiHuytJJthEkFJF5Y3gNCqmSoLNTm-gIK_lDHZu_fQJer9abGUUuOE6zMCysXdSXECnZsJdnINfCriE5cRfN3iQ7rQ7mrWidS-lsXA1cTbnF8Pqsy_ccyqIPazfbMD3tIEH_ewv6EEUMHQkmYbMjsE9Nr3dSF825yy1zCUiGppVgZ_rwKOQE9V3zx1s5PmdZI289wwK_PPKKpabH-4Xt9sT6-lWsZsx7tTGPM3vbAAU-hgPOkBjNA8-U977R2l9dDPUSJzoPMXNCNC_h6QpZzEN0KS5ro7KrE5YlDgw7BEexl7VPcUPE4gsrfvrCBi1zX9-BKoXvfuGAvFhLfcAv3AFksl0Eksom-29Iw5vUF_FMmvl3i-R1JEBH_FX2JNaJ4og2Q23lYoj8Jn8mXZ8CKmUXO67wXa0bZdi43ENHvnfkEWxYDDgThgM8cnqhbAYjMKfOKvCMj8HEqpSTxex95WDNerUzLZQOZNxcVFCbJ7ywYQwqZu12N0NOaYtAqsbe6BFGnaUl-d0mjUwg4Z5-YYVlCDoe_wuVYA8k7qbJyK2YJd3NdsdVuM_2DUvvrGqPByBVFBF1u6--wk4_Eo1LnSCTSQXW-hsMJx7eCNsXN2ogsKGggiAXI6se_ok0fv1g3W6kPyipATexDfHlOpoQIvkrD3KvGttHtd31fXirO1FfcyXkT80ZFLdaJzOwXDTACo7pRSKZdBv9UwFnO95rDcU8vR1g7iQSeYo35AOl7pVjZyZZcBr91ii-tj0mMPtZiJRTbqtDfn6nEIJF9QXLf1vefNbr7o8tHw16a-zQWWw0AjrUdlzWcuMtrcnvcdCSUdH8lTpeSEr12YVtCQuBgMYZ4Moen_Gfn49237KGlvwna21zBU5ahHy9jaWJP2r1dpQOpJ_0yojSN2FdWLPBEy4jwKslQxoW98EMoYtBWA6QAyre4zcoc1KMbyGb0jiufOe6JlAQ8O7JLfYlUlhhabBquE3aQvofjDHeDMYkcuABIk4UBEkd5kpMAJUBvrEmyTGliJ9T9ZyPy1vvjidVSujhdKcpoaTj-ZeyvQq7od3rRDFyrmRC707Z1IFFn7uu6dwU9KzlLAaZHxJayY23Mnij7byUD10trjPUJ19rF26-SUV6v_9hWuJQzyj8eVv9-Z4aSwDFf27sw8n1JMLcjg_Ef5Mjg1DccHMXgIt1HITIeoo7_Jng8Z5B18OsdGXHf04zFKahy6jMsdIpj6mQbvw0kiR86L2Vngjsy7NgofkVHCyPi6veHzNP49Cjaw8cQDYcXqsWRMRdMigw9Pz4jmMr8bWZ6ah9EVRKL4bta0dde1qDf97UjKydqAoTa5BytSHRKa1596e7xwNMHzFg_-5LqVFvEfVqzZ5thE6TBu4Futdy-h7DPgFPbqKtUNGpw5DukLp5ba_NLLHx4URjOw14hTEntWJJRaz3QOZIvb4mjMOFRTKRgnqMWcAa3jAOR2gOg6vQ2jSAh_a9icfjKb-AR1xJqILHzHfUVONKuZnxLqevPN2MZYgbMMvB01V_Z6q02EPgw7V5GbDmVTzke9xRMw8bVlBHHkg-_JvImzGI6mW4-NebL_Dy9drxUgFpCASry_Z81Uibtuh5mpbW_Fqk5LloHBwCLfvLA0ENcropwFh8eTJzWZ0ABf_GIoX_r_8YnQsxl6WARNkHIqlRU1DEsvMFheXtqz6Xr8TQ0I-0Uk-qNx7ecV67SZ67E4LQ7-52wRLddeYbwnIgDVgiUHfCq1xGD-smFecMmsYsP6TRJDT90ms7U-j5L6yldxaFvRuYqzqBCOb5KwKESdxNqA-36lMJaNso-23-JUD9E7VmhCV8slrZvcVqR3Rr9-rmYPdFlYmzTkRDpTwsmJgBvHTXew-LtnCBBzoMPMbwIIna3ziyvEOGj1Oksp6Q6OIDJFIYf7k2w_z4V4lAUXcq-RppS55vZB2k7g55opBoKchdDhsf-f3ux04Cq8agD2hzbyN9zoPTbcLZHCkkjvIKsRRZOsxCrnr_pNplTfOSWlUm6oWvljrnK0ZNTiIfrYeNimV7ZhIfocbF5cOIjmsMHhxPkkLDRN3p76j20z8uNVNlhn8bdT43zxwhgKWo_orLKrdqx2qAxznz-ucca-ungrtY2n4D9sO5wCrLujFDRvNc2DOUMnobCvtb2LFfuVxL1tFXhsF9Pcvvgg1QzhL9klXR21NEhGApqfdBLFw6vFFyJge7igT-co9InvodKb7V5aN_W3WjYppwVm00 \ No newline at end of file +xLrjSzmsalxENy7IVaZY6czjaijLdMhlQcLPJbndoof9pjOcbL919CH1p05c0L2Eaij_lmB05m04IO3ao7Q2JzAGG7VpGQFHwCRBFnW7b5UxCadJpr9mJr2UxYcvBU6EfUyHtwO05oNCquoIzoozWv0dQShU8Rm75EpI4c787_Om9PHlYV4gAm5ZwMz9cgRfCq9pI4z9IMZwbw-__i-J__gRzlnwYx9t63AMVfMawUzIb5DH6x8ahUcSP1pT8_vm2JEqHn1pzbkIFabHdXwd27DOG9eUftyl88OKS9Z_Jv8M563-qYnmUVRYxFBi_FJiAZtwLhndHtz5UP8IleNq37F47qPgl6bB8LXNV9A2Lh8zeMFyJeo2RVsCGY7m2K-FKuvsa76msolinS_qLu9XUfnYylxpBqJvQf_xb_yzIMpy1FEJ_PwIUqYdGLp-VHM3TAJMMmRfus2Hvh24KwMJ51Ckwd3u2qzInW6lM7gSGbpjXj0y9MK9RWa5dFov41t0umKguMFWS8TAE59BYX62W-_t3tttjmIKBn0iyql8zWIp6I084jv0YCBj1nO4bDTmjoy1XrA82qfs-r7xvwvn6CXIMcDITwqVVnf3yH8oKj7iKG6aDS-HsgrOXu584PTDqPWS1PFuJ_wy6O7gngZ-Mv9Yi5Euo-U9v7H7nSEQf3-rl__VqwTZpJJSajCjI2Wg40RbHCiPRRNKSXG1lDPjuwma35vLR0znVagmw0hjOAE_kuI04TmCF2d4-NCWnoN194aHary6ouUp774eFkMMa182KUKEb4oMkUGSx45BH2X4DxB9bclVjGFTFQ3P5j3Fl_hccoyqdMdg3NJQDxS_GodGAQde7CFN4l1kpBP6rrAIzmY1MhWFEJQsKiyR9DU0wMCRDbi9vrlzDM3v1Er_7xdU8A2RVrwAFnnSK7AFSfWFZ0DJL1s3GR_AH5DVaptAFamxSy5wfBuIxODq0F_1qWU8_gSl7JR9BAw7dTG1-aR440nvlfmzphPVUAg4_WvIs8sjWyCag_O2g6iH2Mb8oVxMyjIwtSHGEjyAXZVe9sZpXatTsUch_prjNxzbC4zIaEU88u91UKwu22TbIXV4D1-xAhJsqcqR_KtYX2MSRjqICFvMOVZimM-w7n8OeB1018ysl2ZmIBtuIIgYKKZsn4wShn9Dm-kuNzt7pFvdDNFRwu2ASqqwvQ3CAZ4Dpg-CU4-ZBPtb420GUadAhf_di4Jta3wyXdnByfveUKK1Ln-MmmpjGFdvrvillt2fQpSrxllxEw4qiiZFZE1ReHwug41XOo4gbx00cL8PKnQdpcjSSRMxXVJDtGMW76LeB-AZNOCawHuKK204Qp744wEaBScUaeA2dMWprslQ6D_-YtzNa76f19Qb5V5g0nfMtUuG4xfZDPvymJaqaUI05f1VaBreSA7W3lRIHN2-uC2XV-BDFQAy0kNpMXbSMjhQUprUA5GftDBh5BojlX6cRCq06PqCIF4EwmlfOab5cKHZ1_RicepCyYo2ZVpte4JvYr74lg-BpBLwzHJRrDadeX_iGG4uV8DVGrf0OxhEQGKF5CpMGDxjAemogVAlIE4x-yoiUgEJQxFeHpJVx8dcyUMq6N16XyWc6NMeqBmebmCEEhiV_kr-0Pd9JhKeT6A4dfwaUp7OCyxUuBVxaW1d-Egm7UBi7cAkxE85Aebdh991ET2CjF2LAg5HRZ63z-FQP8iqArePalGyL7UpF-GSAD_i568EgUm37XqGMbJc88SDpYCKJ14V9TDcodRk7ZX2lMWXi8lKODlu3GAwjw5vXCBnyVxmqxUNbsVdrpVNBr-VNLsVlBvmsJRo7fk8kwSg0T0usFQTwJt9x0zh4VCUAZtxaXWEhz2lqFoQT_31qVnDk4V8CA0XPeOwkAyAun6Qlyui1slKAHZmnK9isgUsWg14-DqpaBrhzSj0EpX376J-FrWMcE2JPh9zgKVCv1lhoUACSMYEE0J2GyR4t23fFey9LgWtv1LFMverdieJEpF3uk4Lsg4IKCGVlgMaslkvNE7wRx6Pg6gLFb2O4_wIbLKEyvTtvuIVv3k47Oty-mXOqq3TXIRHvyrmriL56VVl07k9vUmS3EIoUz512omv29vk0IvMjmS7zG7X-ojtHk595nnh9arpV44Plt64g-p09Ydp0K4cFSgX0SIp6PggdaDKkCcbkUWOfhUrbo9gs9h96k_57A2gGxkgtftuV2C9j4LO0tdV11oRW6kjy_LJ6L9rujhbJHiO3emkiHdwPFncjr6uozgm2dK2vkBnIIJAdC1C3V3wg3vHkHtTU-LSJJFT98T8GRNb4C5jHgQP6cq1s-gTlfRqt0nEwOzVanpTeTKQKURqwfpBH4kFsbkFnU-pbLq50Yy0XPX_-y4ZJuVtc6j9laT0J-bvJFFwQ_9UKBAxsW7AsHP2Vit1HGcmFlKPNv97kNijmzAbUXBvSvdRUuNmktLtJlWtPT694JpIXWLtbNozpvHkphS1tnPge0xdKHjEOmFXic0XmBW2vOiAvmWNhmdcsnx9B4UkdbKtXkjLroU6srBg0NJ7i-IxgptC42WHusSxWCgfGav22CkCgHm79YNI2riBWkeCzfH8lM9EeVJazOZz5ndsKv8xwpjwlgRsfDf_a63Ur3pRc5d_WS9vCepXDZOE_pF8gePXUY1Fso_ouC_UIWFwsNx4BghR4cN6Ehmje33_9v96ozoRzL96zvy33dmZzoeVy68yJVsoBHGCkX6YJu_Jpru-Fpk_VldYvTdppuwFZwJxRKbze-eS-QCai-puZdH93SFRfJ0ZD3ybbLgeKnTXsHRkG5-njO_rY3lvf_SLqfCeXwV8oNiiyiWdN3Zl-gAbz3ZzMptZpo1ZmmNy6sbk0_7zYz4sij1Viz_by0vXfCSPPBODOd1Rme7i-ntVNq7E4IwCEbON5XgKLpDY9q9jNWFshgsu1xmFnMk0IaZD9Hkt8YV6tKkaj97RNZCrDs_PZYrGZFnoYOGTJNkI_ank7UljdeWrQ28uijXPev1L9M-NtR4g4zgiMKGTCSmX1ZY3Fh1nYee2qdQDQLjAxvKMpRPt0WuBGXyqo6UiQP5JRZrcvZykN2aOxghIYGJ1Y1EAS24tarzLknsW27eFrSPKnJLMQrEgexyUQNMEr6JW7i7tBtCtWKwuIrckeTBKEWeQOEG4yJIez5lV-BpdjZR062LazuOM0ADVxIMltsp-mzlVWZkYLaPSgLNrFJB6m8OmuxJAncjGQG6QnPdJ7hX4w7dGdBDhq1T8Jgcy_S8xLNvQKsh2ZQgqzOvQbOLmcigtgg2XjgBUKJSAZWpGFMbKsg2XrjG_2biH8IdLWVDc6B62TH-3ZXC6fwUt6Q4KIdry3a7-2c6uFB9HAx07zpPMfE_oNAZ9to4cVdlvWijLELm5bNmF8vhuYBRupf2fPVbngB2VikMGGxf361Z9BQC_Oa35jeRxJjCSUROLbKzlt1Nzuhwk7IeaEVvTNax98Jh6p8dxfwB9gsZWsafd6yb7Kxah3d0EQFvuJWchENefRIEUfgXrvK_C6Nv4tVp3cSM3siDe21UrpQFQZJWDYTCGnunrHIjdpvWFR-FKzAB-7EyurE99_ISMpLBbhj4EVl2H_jb3i6uqvIRbVmp3hRN6YXt7qeN7wZT_75z7_vwrNPqULj7J2MuPl_t1YmtYggqg5dJNomkQ9lkZpPZi1NTMH4fJLrBnZEWhwzIfjvo3RBipOGfC3QW6D7p408th7r_Xq45Z7hokfUjDnWzlwqA23gk62n0NoMtpKvVqaezl8e2u6Q7rwqL5XNAHoPsbl_gcaRQnv-tl_jZsPeSlZx84Mth4mi1t7d9jLVSfy1T-nU4-P3y5hkkCDLrTvDFQHz43ex-7Wd3N7eg9YdB_HA-CtGIFSUwRjqxfPw6hdzTpbcfaPBSNviKvycbdnpx-qjLvHnh-SPQmpjXPzh5isxcszkmPpp_0nfq-fdxRTFmssEZRSkQS_hd6Zhu5jsI4ze93x_lfUCqyANJsjg4xH1a_hGsYJzcN-4BiBf2hLwTBdnD-9IOPVdBKt-Qb_vuoYwBU8el2tXABmhu23-wb6jeyfTcIhYFhchpIJCpZjBXvvunVY3KRyl0fl_15c15d6HaTOA_4-u_uXf8BjK7d0b96C8RbKcVTfcSSiGpDuqv2lx2tKQHUm2uOziv6KaUHBbjT3E_kbBsV37z0v-udPNXSoYpxj-l5di8xz8lZ8EKxr-EcUxhtFTLjuThmTuXjgVETjIw0PPtBwaQeFJjrT2EPuys_8A2XcyT6BjRwKAPjRACX7JqFk8B8UYPsT7nsV2n-WqmSB7iFw0F2XGv0uMaxyTXn69VgwDepIer9pD2cXNKdjplt6SHa3zj3YCqtzK6xpqZ-q2x7RyvTSZvqxakiA1h1mp-YuB_TPmSGdfEQesLRIteJwjmOzKsjjkyW1-R1TCqJlm3U3ksWKotTNeOueyNxFeIGyte_XfiEVCytzkMEMBV7rXnb5rWSRzUzAaldQ6Ox2zttAx_e0BvZ3bb6qTxPgrVsBFjdclhkh0pP6yXwNEOTiteOFUuphFUQ85nqUQK_EoRUvxhEESnrpND6PnyUsdqysbrbX49vW2R8jgjQEH4M-jBoOmaelxBFHQrze1lRMsD2ijwD0y7jYpWyAQ7VLjH3f6DyJfDuakuWO-eYX3OtfuvNRNRoDfd1TXzlzs4tecYJZFSucs7kIM7MAQttW28WtK5pxxgt6n2O53hae3Wyzhrj3g1RsQ_vy9a_mQBU7Ftc7bAAShXs7waw5XDLcbtQXpgXyHwK5Und3dJMFXehA_LLCM0BE-YsGDyEdvaStfBVjwVmgVd01x9sdBo3Bb-EkwOIlitNdgePWCSq05koWvS7la1eo-JzD7J0X8dfsojIg6dW-f4QTvoh14MND4wFqvFBovD__VXJCwv8y6vagIDnBe3uX9EARmcL4MJ7oG7DHxekwt46XRO4mtFd0L162bkJHEIh0RwN1rOWnb76cZNaDyAdkDc92qbkI6t6alJV5IWHVxW1Z5LKB1IvoG7RtX90snEnGAcgQYyu1GWZNDoezLHCUzTantMPP2fSFcWKhxbvPMbWTkaDBeWftzETMfgno6Bk3HK_d3olftWUe7JpGK9x0OOVJbwWaaFgbrAlTjWvnvNBgKPFWltXvDM9VLsNHmXC-EOtMWdvR5VU0DPxTFlGUzG1EJ5-YBA_I3PLfLH3FjANCtGOMXurXkzlA7b_OquZI9axdjPpjXk62aTBl39NPDH9JXfX6eLfO6L8XAeFbHMQYH3r8HgxXI7YvSRB4SQFKBcXYX2DGZHyLNn4QmIjQDVziOh6AWmlE-mOmHe1A-8qYbFiUrumHNWiU4OkHOu0sG1PzoH7W1H0etSSHv1S84M0UW35MOa3bkVFNtb0aWTyM6vzcBXg7E3yXeEY5tiMXIM8xQSDVhFQvtA3SYZtgVJNGghtpgIQEWxznfbvcS1duZxfg4Gka4Ot3aV8N915W2o0uYZl06NaLkS8K0DGJ05C8HJdyYFWZDzc774Qm2bYvCB8VNzn1AW1QFo2uOYJZTFOiGuHBHkjECvvW1J1SO0JGR516RnhDkBJuXDHwQ4oV7DfHAX5A2hF83GH5GkLmMjG8pmTF16QGMWYB1Oi8LUH_kcG2Rboz4y7p-Gzf14d4wU16pGZJ4wO7DSpHgH6a7BV9HWXcuOigjWaNb6hV51oN0eGaHf2Ajgg8AoYaPe4AY8qY93xhhc8aedIq4Ls4ISNJb6PF42A0rqWLB7VJU4K0He4QE2EiGYJ6wO8aGLHNBaV2564nuPd-CQn290EK0J60cRglh28ae5INBytXL14naR6VUzH14U0uxndAK8ZeHcyP2dYe-4JzSR29PuMEenC4GsD2vOuQN03uxXBA2BJ81D1iK2nRoUAg4XKfkuxYZ2vOPgu4Yd2veOjGcH3D7AtKaH88TI_cYaY8v29teyB5STLJ16O1fZXcvmYHXP64Hi7DiFtHqMC6emYA1Oe_VkE8Yu25_UrHn4RXOrzaTEV6fVai_I4CP8XQNjPaYHodfuUVNcKFdtwurzkIv2zs-nBWF26Rr7s3aF6_lkhdvu-bKMqBS12hlRNHbxHcwZTPxx4x7ClqkEq48yswa_t9ab6hZQok8axr61kiVijJO_mKTexBpiz5hTtcSysAHXabZXkBWdWFtMbJdfiyHP5DevdPhNLfMf3nTu2jJMIeHi0PWjatttIawaji1bwKTSye6nDZmYLJDOxe5p3BJajssEqgPfvpX1ELRGacoTGaqVhIQ4pRmgjmj6unSx5jdct6ZVJOevzQA_qQZAu-yWcfTtRrNWf6pZrdRBKQZorVZ75k2kw6lVXdcup7-hN8RpRXNRfSShsC4EWH8otJpVTFUlQCrECf7SvmyoHNDKzhYyvjTzivFCNbEnwTHP9q3ikM7WlrhEDuLq83ijOzavyaXwJzN1bfkwLW-bnVIYyzSB9tBez8QYP7TTJIAVDVBxfFL7cf74PLlGzCldVfAiHphbZqIciOjKejlYLz0ut3s3XF71Vp3h4yutwOxzUbQ5Z2VmmUqVXHS8uaaZ2UkbFMIs5Sr8KFjBToPcHFhujezjpDtK6bayPoccegoaMxkuLocCWITorWlnPpoMN4tUcLWKpr_Dc1kiuVJbmL70TSbqF3jQhZUiXIuOExrrtfhcNH1ljwIQJAt2VuEVY54hUAQ42kNcrgLckmwY_Dhp7hXWjleeKkfStpBppy9RmR7WmatYoFBxGKDwaX8eW6YY7uWhIamICeGB3t44eM9YX8L29unu1GtaCkOQRdeCuZtQlQodYPiSA9MfhbXBMrAGLBQ7JzCs7ksUonS3LwjMWbGrcevyvttu9qv_EeYlj8w0Grm6sR8lAV1uQnYoqzT7hFXnChR-gH8oVuiaR33Vgl-ltH56NZwIfU4-INd3Nd-dGuM_2DHvurGyPhyBVFBF1u6--6k2_E21LnyCTSQXW-eEMJx4OC7sXN2ognKmggiAnI6se_sk0vv1g3m5kPiiBATexDfHlOpnQIfjrD3KvGttHmN31fXyrO3FfcyXkT80JFLdaJzOwXDTACo7pRSqZdBv9UwFnO8brDcU8vR1g7gUSegA05ERF7ZRTZyJZcBrP1ii-tj0mMRtZiJRzbstDnn6nFIJF9QXLf1befNbr7oAtHA1Ma-ywWWw0QjrUd_zecuMtrc9vsdCS1dH8lTpeS1r02YVtAQuhgMYh4Moinmmfn4f2Z7KGlvwnaY13BU5ahHy9jaeJ51r1dpPOp3_0yzkvk2RE0wtMTe8xqfj1rtX5IKOjbLkM4KErL9h99h9bCIkiBebB1BPnIfMCdEIrG0AdhJ1V3VJNDQKOmC79rpXJQQtHQjHSjmLNbS8zM3PFBTYjKsvMpwTWuwbVOcM-J7uou0Fox9A_vnRN9fDcbK-wz7LuobiFbE7wsQRzhmkOEGB6AqQUYVrmCloyI9x1g59FZcJDvK46jovQFBqyQ2HkhAszc2NgT49yuywDB-NN1GcrxvUHGlsJz6D8baQVI4limHc3cilCR5-TIQTQII_CiYX2qrY2YrwaHbaE-tdIHcBM20njUX6YH0DwVf9MuDUkjEbdQTayBWC1TOsHCw0-ZrVZuElKbJS_YvupODtIJkgp8MPR9aLDqB1D3vj1sypETPHrIpwBRWTgJR11D9IIS-nfg9B-81FEGJiQI2EzxvxEeDau8PNukqctP0SLaQGRlDTQ7qth_yTNHI_dwrpIEyJSiOPtkGG-Z9Vn6yQsM8pcK1RTvD7FeC_XvN8LEpvzLr7jHLYsZu4IjKx7UXDCkpiDfILAsqV1rDezj7Llh7TO28g9EaXZjgbWehffALmhl9OdoEgrIKCficLC9vT4DMjuzHLIg_CSN2dbbC5PEgcLPhqj0LpyCxK189YheTyr2qt1zNsxWNfkRucM-Cb76wdxzlj43LDhR20Gv9kLNEtpXVJjwOtEmvpMBECZ5wnNV2iM3vU0yRVxN6p94_aoMdjMeGnSRdB3ekyZXrBt2y8ek7n2Bw7yNSkB5BV-yg8vjEr5BXrjuqquRLS-kYRUJqU7KXzh1Rm2weFJViLYOCOVoiKSuXHfVOGBfTUTUIAMhbEerkYpzcamGNj0ttJ3-YnQ3gFPaLriCLqd3RGSxgqNIREzVE4-bFkQJ7yln2mMRPKcoFbzIxy9QZHF9lR9ugFqTuqduTp1inaZ6_UFcPyniDdKdxJ39MO--xBqs9atDtlR1kijbb-5ZRvM_a0il71RbwNf9R6GFMpBa5j2q5guRCTe5X0sCj6haXu8hlyJyIsfccNGvlFUmrNbCSAwUeGMhSl8IwcTs_JcwaFcimSmG2VgqAZqNrOdFvXqMPUD4Isxtb9I5TkUZxanN_VyDVEzsrbo23x0RgJaz7R7KI5Ssn7dMgjIp1uSEzBcAgSzMLX8t3PO6lbswvOtjT7DSwmD3KZZT3MylqgKT4OFtFkkvYB9_BTKpMKniBSel7CFxIUQJth0hFQ9hqGqd9WLe3TNYSytltMQ8rXxR76KplIM9yobXuTN7oo5luabcxdbkO9gsTSswU9l8LGujmxCIcUkKFaRKYxpEwaUo9xxROf84tEUIqLzMvBy0-AysfN9_mC0 \ No newline at end of file diff --git a/docs/logical_data_model.puml b/docs/logical_data_model.puml index f197e6df22..005d4cade1 100644 --- a/docs/logical_data_model.puml +++ b/docs/logical_data_model.puml @@ -360,7 +360,7 @@ class GoalStatusChanges{ * userRoles : varchar(255)[] context : text oldStatus : varchar(255) -!issue='column should allow null' userName : varchar(255) + userName : varchar(255) } class GoalTemplateFieldPrompts{ diff --git a/src/migrations/20240529152617-goalStatusChanges-historical.js b/src/migrations/20240611185509-goalStatusChanges-historical.js similarity index 100% rename from src/migrations/20240529152617-goalStatusChanges-historical.js rename to src/migrations/20240611185509-goalStatusChanges-historical.js diff --git a/src/models/goalStatusChange.js b/src/models/goalStatusChange.js index 4660ff4906..d5d998b647 100644 --- a/src/models/goalStatusChange.js +++ b/src/models/goalStatusChange.js @@ -44,7 +44,7 @@ export default (sequelize, DataTypes) => { }, userName: { type: DataTypes.STRING, - allowNull: false, + allowNull: true, }, userRoles: { type: DataTypes.ARRAY(DataTypes.STRING), From 0be561adbc114846c4f1524442c21672280688e0 Mon Sep 17 00:00:00 2001 From: nvms Date: Fri, 28 Jun 2024 10:49:50 -0400 Subject: [PATCH 03/10] replace tabs with spaces --- ...0611185509-goalStatusChanges-historical.js | 234 +++++++++--------- 1 file changed, 117 insertions(+), 117 deletions(-) diff --git a/src/migrations/20240611185509-goalStatusChanges-historical.js b/src/migrations/20240611185509-goalStatusChanges-historical.js index b07b8513d9..972990e2bd 100644 --- a/src/migrations/20240611185509-goalStatusChanges-historical.js +++ b/src/migrations/20240611185509-goalStatusChanges-historical.js @@ -16,123 +16,123 @@ select create_timeseries_from_audit_log('Users'); select create_timeseries_from_audit_log('UserRoles'); WITH - reason_lookup AS ( - SELECT * - FROM - (VALUES - ('Not Started', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), - ('Draft', 'Not Started', 'submitReport', 'UPDATE', 'Activity Report submission', NULL), - (NULL, 'Draft', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), - ('Not Started', 'In Progress', NULL, 'UPDATE', 'Objective moved to In Progress', NULL), - (NULL, 'Not Started', NULL, 'INSERT', NULL, NULL), - (NULL, 'Draft', 'saveReport', 'INSERT', 'Activity Report created', NULL), - (NULL, 'In Progress', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), - ('Not Started', 'Draft', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), - (NULL, 'Draft', NULL, 'INSERT', NULL, NULL), - ('Draft', 'Not Started', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), - (NULL, 'In Progress', NULL, 'INSERT', NULL, NULL), - ('Closed', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), - (NULL, 'Not Started', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), - ('Draft', 'Not Started', NULL, 'UPDATE', NULL, NULL), - ('In Progress', 'Draft', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), - (NULL, 'In Progress', 'saveReport', 'INSERT', 'User change', NULL), - ('Not Started', 'In Progress', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), - ('Draft', 'In Progress', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), - ('In Progress', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), - ('In Progress', 'Not Started', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), - ('In Progress', 'Not Started', 'saveReport', 'UPDATE', 'User change', NULL), - ('Not Started', 'In Progress', 'saveReport', 'UPDATE', 'User change', NULL), - ('Not Started', 'Draft', 'saveReport', 'UPDATE', 'User change', NULL), - (NULL, 'Not Started', 'saveReport', 'INSERT', 'User change', NULL), - ('Draft', 'In Progress', 'saveReport', 'UPDATE', 'User change', NULL), - ('In Progress', 'Closed', NULL, 'UPDATE', NULL, NULL), - ('In Progress', 'Draft', 'saveReport', 'UPDATE', 'User change', NULL), - (NULL, 'Draft', 'createGoals', 'INSERT', 'Goal creation', NULL), - ('Not Started', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), - ('Draft', 'Not Started', 'createGoals', 'UPDATE', 'Goal creation', NULL), - ('Draft', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), - ('Draft', NULL, 'createGoalsForReport', 'DELETE', 'Activity Report created', NULL), - ('Closed', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), - ('Draft', 'Not Started', 'saveReport', 'UPDATE', 'User change', NULL), - ('Closed', 'In Progress', 'mergeGoalHandler', 'UPDATE', NULL, NULL), - ('Draft', NULL, 'saveReport', 'DELETE', 'User change', NULL), - ('Draft', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), - (NULL, 'In Progress', 'mergeGoalHandler', 'INSERT', NULL, NULL), - ('Not Started', 'Closed', NULL, 'UPDATE', 'Migration', NULL), - ('In Progress', 'Closed', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), - ('In Progress', 'Closed', 'saveReport', 'UPDATE', 'User change', NULL), - ('In Progress', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), - (NULL, 'Closed', 'saveReport', 'INSERT', 'User change', NULL), - (NULL, 'Closed', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), - ('Closed', 'In Progress', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), - (NULL, 'Closed', NULL, 'INSERT', 'Migration', NULL), - ('In Progress', 'Not Started', NULL, 'UPDATE', NULL, NULL), - ('Not Started', NULL, 'saveReport', 'DELETE', 'User change', NULL), - ('Closed', 'In Progress', 'saveReport', 'UPDATE', 'User change', NULL), - (NULL, 'Draft', 'updateHandler', 'INSERT', NULL, NULL), - (NULL, 'In Progress', 'RUN MIGRATIONS', 'INSERT', 'Migration', NULL), - (NULL, 'Closed', 'mergeGoalHandler', 'INSERT', NULL, NULL), - ('In Progress', NULL, 'createGoalsForReport', 'DELETE', 'Activity Report created', NULL), - ('Not Started', 'Suspended', NULL, 'UPDATE', 'Migration', NULL), - ('In Progress', NULL, 'saveReport', 'DELETE', 'User change', NULL), - ('In Progress', 'Closed', 'changeGoalStatus', 'UPDATE', NULL, NULL), - ('Not Started', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), - (NULL, 'Not Started', 'createGoalsFromAdmin', 'INSERT', NULL, NULL), - ('Not Started', NULL, NULL, 'DELETE', NULL, NULL), - ('Not Started', NULL, 'createGoalsForReport', 'DELETE', 'Activity Report created', NULL), - ('Draft', 'In Progress', 'updateHandler', 'UPDATE', NULL, NULL), - ('Not Started', 'In Progress', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), - ('Suspended', 'In Progress', 'changeGoalStatus', 'UPDATE', NULL, NULL), - ('Closed', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), - ('Draft', 'In Progress', NULL, 'UPDATE', NULL, NULL), - ('Closed', 'In Progress', NULL, 'UPDATE', NULL, NULL), - (NULL, 'Draft', 'RUN MIGRATIONS', 'UPDATE', NULL, NULL), - ('Suspended', 'Closed', NULL, 'UPDATE', NULL, NULL), - ('In Progress', 'Suspended', NULL, 'UPDATE', 'Migration', NULL), - ('Not Started', 'In Progress', 'createGoals', 'UPDATE', 'Goal creation', NULL), - ('Draft', NULL, NULL, 'DELETE', NULL, NULL), - ('Suspended', 'Closed', 'changeGoalStatus', 'UPDATE', NULL, NULL), - (NULL, 'Not Started', 'RUN MIGRATIONS', 'UPDATE', NULL, NULL), - ('Not Started', 'In Progress', 'changeGoalStatus', 'UPDATE', NULL, NULL), - (NULL, 'In Progress', 'updateHandler', 'INSERT', NULL, NULL), - ('Closed', 'In Progress', 'RUN MIGRATIONS', 'UPDATE', 'Migration', NULL), - ('Suspended', 'In Progress', NULL, 'UPDATE', NULL, NULL), - ('Suspended', 'Not Started', 'changeGoalStatus', 'UPDATE', NULL, NULL), - ('In Progress', NULL, NULL, 'DELETE', NULL, NULL), - ('Suspended', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), - (NULL, 'Suspended', NULL, 'INSERT', 'Migration', NULL), - ('Closed', NULL, 'saveReport', 'DELETE', 'User change', NULL), - (NULL, 'Not Started', 'mergeGoalHandler', 'INSERT', NULL, NULL), - ('Draft', 'In Progress', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), - (NULL, 'Completed', NULL, 'INSERT', 'Migration', NULL), - (NULL, 'Suspended', 'mergeGoalHandler', 'INSERT', NULL, NULL), - (NULL, 'Ceased/Suspended', NULL, 'INSERT', 'Migration', NULL), - ('Suspended', 'Not Started', NULL, 'UPDATE', NULL, NULL), - ('Not Started', 'In Progress', 'submitReport', 'UPDATE', NULL, NULL), - ('Draft', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), - ('Closed', 'In Progress', 'unlockReport', 'UPDATE', NULL, NULL), - ('Suspended', 'In Progress', 'mergeGoalHandler', 'UPDATE', NULL, NULL), - ('Suspended', 'Draft', 'saveReport', 'UPDATE', 'User change', NULL), - ('Suspended', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), - ('Suspended', 'Draft', 'createGoalsForReport', 'UPDATE', NULL, NULL), - ('Closed', 'Not Started', NULL, 'UPDATE', NULL, NULL), - ('Not Started', 'Draft', 'createGoals', 'UPDATE', 'Goal creation', NULL), - ('In Progress', 'Closed', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), - (NULL, 'Draft', NULL, 'UPDATE', NULL, NULL), - ('Not Started', 'In Progress', 'mergeGoalHandler', 'UPDATE', NULL, NULL), - ('In Progress', 'Suspended', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), - ('In Progress', 'Not Started', 'RUN MIGRATIONS', 'UPDATE', 'Migration', NULL), - ('Draft', NULL, 'deleteGoal', 'DELETE', NULL, NULL), - ('In Progress', 'Draft', NULL, 'UPDATE', NULL, NULL), - ('Closed', NULL, 'createGoalsForReport', 'DELETE', NULL, NULL), - ('In Progress', 'Draft', 'createGoals', 'UPDATE', 'Goal creation', NULL), - (NULL, 'In Progress', NULL, 'UPDATE', NULL, NULL), - ('Suspended', 'In Progress', 'createGoals', 'UPDATE', 'Goal creation', NULL), - ('Draft', 'In Progress', 'createGoals', 'UPDATE', 'Goal creation', NULL), - ('Not Started', 'Draft', NULL, 'UPDATE', NULL, NULL), - ('Suspended', 'In Progress', 'createGoalsForReport', 'UPDATE', NULL, NULL) - ) AS tmp_data("oldStatus", "newStatus", descriptor, dml_type, reason, context) - ), + reason_lookup AS ( + SELECT * + FROM + (VALUES + ('Not Started', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), + ('Draft', 'Not Started', 'submitReport', 'UPDATE', 'Activity Report submission', NULL), + (NULL, 'Draft', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), + ('Not Started', 'In Progress', NULL, 'UPDATE', 'Objective moved to In Progress', NULL), + (NULL, 'Not Started', NULL, 'INSERT', NULL, NULL), + (NULL, 'Draft', 'saveReport', 'INSERT', 'Activity Report created', NULL), + (NULL, 'In Progress', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), + ('Not Started', 'Draft', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + (NULL, 'Draft', NULL, 'INSERT', NULL, NULL), + ('Draft', 'Not Started', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + (NULL, 'In Progress', NULL, 'INSERT', NULL, NULL), + ('Closed', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + (NULL, 'Not Started', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), + ('Draft', 'Not Started', NULL, 'UPDATE', NULL, NULL), + ('In Progress', 'Draft', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + (NULL, 'In Progress', 'saveReport', 'INSERT', 'User change', NULL), + ('Not Started', 'In Progress', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + ('Draft', 'In Progress', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + ('In Progress', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + ('In Progress', 'Not Started', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + ('In Progress', 'Not Started', 'saveReport', 'UPDATE', 'User change', NULL), + ('Not Started', 'In Progress', 'saveReport', 'UPDATE', 'User change', NULL), + ('Not Started', 'Draft', 'saveReport', 'UPDATE', 'User change', NULL), + (NULL, 'Not Started', 'saveReport', 'INSERT', 'User change', NULL), + ('Draft', 'In Progress', 'saveReport', 'UPDATE', 'User change', NULL), + ('In Progress', 'Closed', NULL, 'UPDATE', NULL, NULL), + ('In Progress', 'Draft', 'saveReport', 'UPDATE', 'User change', NULL), + (NULL, 'Draft', 'createGoals', 'INSERT', 'Goal creation', NULL), + ('Not Started', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), + ('Draft', 'Not Started', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('Draft', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), + ('Draft', NULL, 'createGoalsForReport', 'DELETE', 'Activity Report created', NULL), + ('Closed', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), + ('Draft', 'Not Started', 'saveReport', 'UPDATE', 'User change', NULL), + ('Closed', 'In Progress', 'mergeGoalHandler', 'UPDATE', NULL, NULL), + ('Draft', NULL, 'saveReport', 'DELETE', 'User change', NULL), + ('Draft', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), + (NULL, 'In Progress', 'mergeGoalHandler', 'INSERT', NULL, NULL), + ('Not Started', 'Closed', NULL, 'UPDATE', 'Migration', NULL), + ('In Progress', 'Closed', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + ('In Progress', 'Closed', 'saveReport', 'UPDATE', 'User change', NULL), + ('In Progress', NULL, 'RUN MIGRATIONS', 'DELETE', 'Migration', NULL), + (NULL, 'Closed', 'saveReport', 'INSERT', 'User change', NULL), + (NULL, 'Closed', 'createGoalsForReport', 'INSERT', 'Activity Report created', NULL), + ('Closed', 'In Progress', 'createGoalsForReport', 'UPDATE', 'Activity Report created', NULL), + (NULL, 'Closed', NULL, 'INSERT', 'Migration', NULL), + ('In Progress', 'Not Started', NULL, 'UPDATE', NULL, NULL), + ('Not Started', NULL, 'saveReport', 'DELETE', 'User change', NULL), + ('Closed', 'In Progress', 'saveReport', 'UPDATE', 'User change', NULL), + (NULL, 'Draft', 'updateHandler', 'INSERT', NULL, NULL), + (NULL, 'In Progress', 'RUN MIGRATIONS', 'INSERT', 'Migration', NULL), + (NULL, 'Closed', 'mergeGoalHandler', 'INSERT', NULL, NULL), + ('In Progress', NULL, 'createGoalsForReport', 'DELETE', 'Activity Report created', NULL), + ('Not Started', 'Suspended', NULL, 'UPDATE', 'Migration', NULL), + ('In Progress', NULL, 'saveReport', 'DELETE', 'User change', NULL), + ('In Progress', 'Closed', 'changeGoalStatus', 'UPDATE', NULL, NULL), + ('Not Started', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + (NULL, 'Not Started', 'createGoalsFromAdmin', 'INSERT', NULL, NULL), + ('Not Started', NULL, NULL, 'DELETE', NULL, NULL), + ('Not Started', NULL, 'createGoalsForReport', 'DELETE', 'Activity Report created', NULL), + ('Draft', 'In Progress', 'updateHandler', 'UPDATE', NULL, NULL), + ('Not Started', 'In Progress', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), + ('Suspended', 'In Progress', 'changeGoalStatus', 'UPDATE', NULL, NULL), + ('Closed', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), + ('Draft', 'In Progress', NULL, 'UPDATE', NULL, NULL), + ('Closed', 'In Progress', NULL, 'UPDATE', NULL, NULL), + (NULL, 'Draft', 'RUN MIGRATIONS', 'UPDATE', NULL, NULL), + ('Suspended', 'Closed', NULL, 'UPDATE', NULL, NULL), + ('In Progress', 'Suspended', NULL, 'UPDATE', 'Migration', NULL), + ('Not Started', 'In Progress', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('Draft', NULL, NULL, 'DELETE', NULL, NULL), + ('Suspended', 'Closed', 'changeGoalStatus', 'UPDATE', NULL, NULL), + (NULL, 'Not Started', 'RUN MIGRATIONS', 'UPDATE', NULL, NULL), + ('Not Started', 'In Progress', 'changeGoalStatus', 'UPDATE', NULL, NULL), + (NULL, 'In Progress', 'updateHandler', 'INSERT', NULL, NULL), + ('Closed', 'In Progress', 'RUN MIGRATIONS', 'UPDATE', 'Migration', NULL), + ('Suspended', 'In Progress', NULL, 'UPDATE', NULL, NULL), + ('Suspended', 'Not Started', 'changeGoalStatus', 'UPDATE', NULL, NULL), + ('In Progress', NULL, NULL, 'DELETE', NULL, NULL), + ('Suspended', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + (NULL, 'Suspended', NULL, 'INSERT', 'Migration', NULL), + ('Closed', NULL, 'saveReport', 'DELETE', 'User change', NULL), + (NULL, 'Not Started', 'mergeGoalHandler', 'INSERT', NULL, NULL), + ('Draft', 'In Progress', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), + (NULL, 'Completed', NULL, 'INSERT', 'Migration', NULL), + (NULL, 'Suspended', 'mergeGoalHandler', 'INSERT', NULL, NULL), + (NULL, 'Ceased/Suspended', NULL, 'INSERT', 'Migration', NULL), + ('Suspended', 'Not Started', NULL, 'UPDATE', NULL, NULL), + ('Not Started', 'In Progress', 'submitReport', 'UPDATE', NULL, NULL), + ('Draft', NULL, 'dup_goals_Delete_Goals', 'DELETE', 'Migration', NULL), + ('Closed', 'In Progress', 'unlockReport', 'UPDATE', NULL, NULL), + ('Suspended', 'In Progress', 'mergeGoalHandler', 'UPDATE', NULL, NULL), + ('Suspended', 'Draft', 'saveReport', 'UPDATE', 'User change', NULL), + ('Suspended', 'In Progress', 'reviewReport', 'UPDATE', 'Activity Report reviewed', NULL), + ('Suspended', 'Draft', 'createGoalsForReport', 'UPDATE', NULL, NULL), + ('Closed', 'Not Started', NULL, 'UPDATE', NULL, NULL), + ('Not Started', 'Draft', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('In Progress', 'Closed', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), + (NULL, 'Draft', NULL, 'UPDATE', NULL, NULL), + ('Not Started', 'In Progress', 'mergeGoalHandler', 'UPDATE', NULL, NULL), + ('In Progress', 'Suspended', 'dup_goals_Update_Goals', 'UPDATE', 'Migration', NULL), + ('In Progress', 'Not Started', 'RUN MIGRATIONS', 'UPDATE', 'Migration', NULL), + ('Draft', NULL, 'deleteGoal', 'DELETE', NULL, NULL), + ('In Progress', 'Draft', NULL, 'UPDATE', NULL, NULL), + ('Closed', NULL, 'createGoalsForReport', 'DELETE', NULL, NULL), + ('In Progress', 'Draft', 'createGoals', 'UPDATE', 'Goal creation', NULL), + (NULL, 'In Progress', NULL, 'UPDATE', NULL, NULL), + ('Suspended', 'In Progress', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('Draft', 'In Progress', 'createGoals', 'UPDATE', 'Goal creation', NULL), + ('Not Started', 'Draft', NULL, 'UPDATE', NULL, NULL), + ('Suspended', 'In Progress', 'createGoalsForReport', 'UPDATE', NULL, NULL) + ) AS tmp_data("oldStatus", "newStatus", descriptor, dml_type, reason, context) + ), status_changes_query AS ( SELECT zg.data_id AS "goalId", From 0803f09193cea93b33cce6244696cd59ad725b55 Mon Sep 17 00:00:00 2001 From: nvms Date: Fri, 28 Jun 2024 10:52:11 -0400 Subject: [PATCH 04/10] Garrett's change to prevent re-insertion of existing records. --- ...20240611185509-goalStatusChanges-historical.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/migrations/20240611185509-goalStatusChanges-historical.js b/src/migrations/20240611185509-goalStatusChanges-historical.js index 972990e2bd..cfc126accc 100644 --- a/src/migrations/20240611185509-goalStatusChanges-historical.js +++ b/src/migrations/20240611185509-goalStatusChanges-historical.js @@ -170,11 +170,16 @@ WITH zg.new_row_data ->> 'status' ) INSERT INTO "GoalStatusChanges" - ("goalId", "userId", "userName", "userRoles", "oldStatus", "newStatus", "reason", "context", "createdAt", "updatedAt") -SELECT - "goalId", "userId", "userName", "userRoles", "oldStatus", "newStatus", "reason", "context", "createdAt", "updatedAt" -FROM - status_changes_query; + ("goalId", "userId", "userName", "userRoles", "oldStatus", "newStatus", "reason", "context", "createdAt", "updatedAt") + SELECT + scq."goalId", scq."userId", scq."userName", scq."userRoles", scq."oldStatus", scq."newStatus", scq."reason", scq."context", scq."createdAt", scq."updatedAt" + FROM status_changes_query scq + LEFT JOIN "GoalStatusChanges" gsc + ON gsc."goalId" = scq."goalId" + AND gsc."oldStatus" = scq."oldStatus" + AND gsc."newStatus" = scq."newStatus" + AND gsc."createdAt" BETWEEN scq."createdAt" - interval '30 seconds' AND scq."createdAt" + interval '30 seconds' + WHERE gsc.id IS NULL; `, { transaction }); }, ), From 5015cc6a39dca93aac94542bef2b202adcadad98 Mon Sep 17 00:00:00 2001 From: nvms Date: Fri, 28 Jun 2024 11:40:15 -0400 Subject: [PATCH 05/10] mv migration --- ...storical.js => 20240628145950-goalStatusChanges-historical.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/migrations/{20240611185509-goalStatusChanges-historical.js => 20240628145950-goalStatusChanges-historical.js} (100%) diff --git a/src/migrations/20240611185509-goalStatusChanges-historical.js b/src/migrations/20240628145950-goalStatusChanges-historical.js similarity index 100% rename from src/migrations/20240611185509-goalStatusChanges-historical.js rename to src/migrations/20240628145950-goalStatusChanges-historical.js From b5f03047780899e13b6019abb9a64d93e0bcf4ab Mon Sep 17 00:00:00 2001 From: nvms Date: Mon, 8 Jul 2024 11:29:20 -0400 Subject: [PATCH 06/10] userRoles is nullable now --- docs/logical_data_model.encoded | 6 +----- docs/logical_data_model.puml | 2 +- .../20240628145950-goalStatusChanges-historical.js | 4 ++++ src/models/goalStatusChange.js | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/logical_data_model.encoded b/docs/logical_data_model.encoded index 860a3a685f..a2668be651 100644 --- a/docs/logical_data_model.encoded +++ b/docs/logical_data_model.encoded @@ -1,5 +1 @@ -<<<<<<< jp/2795/GSC-migration -xLrjSzmsalxENy7IVaZY6czjaijLdMhlQcLPJbndoof9pjOcbL919CH1p05c0L2Eaij_lmB05m04IO3ao7Q2JzAGG7VpGQFHwCRBFnW7b5UxCadJpr9mJr2UxYcvBU6EfUyHtwO05oNCquoIzoozWv0dQShU8Rm75EpI4c787_Om9PHlYV4gAm5ZwMz9cgRfCq9pI4z9IMZwbw-__i-J__gRzlnwYx9t63AMVfMawUzIb5DH6x8ahUcSP1pT8_vm2JEqHn1pzbkIFabHdXwd27DOG9eUftyl88OKS9Z_Jv8M563-qYnmUVRYxFBi_FJiAZtwLhndHtz5UP8IleNq37F47qPgl6bB8LXNV9A2Lh8zeMFyJeo2RVsCGY7m2K-FKuvsa76msolinS_qLu9XUfnYylxpBqJvQf_xb_yzIMpy1FEJ_PwIUqYdGLp-VHM3TAJMMmRfus2Hvh24KwMJ51Ckwd3u2qzInW6lM7gSGbpjXj0y9MK9RWa5dFov41t0umKguMFWS8TAE59BYX62W-_t3tttjmIKBn0iyql8zWIp6I084jv0YCBj1nO4bDTmjoy1XrA82qfs-r7xvwvn6CXIMcDITwqVVnf3yH8oKj7iKG6aDS-HsgrOXu584PTDqPWS1PFuJ_wy6O7gngZ-Mv9Yi5Euo-U9v7H7nSEQf3-rl__VqwTZpJJSajCjI2Wg40RbHCiPRRNKSXG1lDPjuwma35vLR0znVagmw0hjOAE_kuI04TmCF2d4-NCWnoN194aHary6ouUp774eFkMMa182KUKEb4oMkUGSx45BH2X4DxB9bclVjGFTFQ3P5j3Fl_hccoyqdMdg3NJQDxS_GodGAQde7CFN4l1kpBP6rrAIzmY1MhWFEJQsKiyR9DU0wMCRDbi9vrlzDM3v1Er_7xdU8A2RVrwAFnnSK7AFSfWFZ0DJL1s3GR_AH5DVaptAFamxSy5wfBuIxODq0F_1qWU8_gSl7JR9BAw7dTG1-aR440nvlfmzphPVUAg4_WvIs8sjWyCag_O2g6iH2Mb8oVxMyjIwtSHGEjyAXZVe9sZpXatTsUch_prjNxzbC4zIaEU88u91UKwu22TbIXV4D1-xAhJsqcqR_KtYX2MSRjqICFvMOVZimM-w7n8OeB1018ysl2ZmIBtuIIgYKKZsn4wShn9Dm-kuNzt7pFvdDNFRwu2ASqqwvQ3CAZ4Dpg-CU4-ZBPtb420GUadAhf_di4Jta3wyXdnByfveUKK1Ln-MmmpjGFdvrvillt2fQpSrxllxEw4qiiZFZE1ReHwug41XOo4gbx00cL8PKnQdpcjSSRMxXVJDtGMW76LeB-AZNOCawHuKK204Qp744wEaBScUaeA2dMWprslQ6D_-YtzNa76f19Qb5V5g0nfMtUuG4xfZDPvymJaqaUI05f1VaBreSA7W3lRIHN2-uC2XV-BDFQAy0kNpMXbSMjhQUprUA5GftDBh5BojlX6cRCq06PqCIF4EwmlfOab5cKHZ1_RicepCyYo2ZVpte4JvYr74lg-BpBLwzHJRrDadeX_iGG4uV8DVGrf0OxhEQGKF5CpMGDxjAemogVAlIE4x-yoiUgEJQxFeHpJVx8dcyUMq6N16XyWc6NMeqBmebmCEEhiV_kr-0Pd9JhKeT6A4dfwaUp7OCyxUuBVxaW1d-Egm7UBi7cAkxE85Aebdh991ET2CjF2LAg5HRZ63z-FQP8iqArePalGyL7UpF-GSAD_i568EgUm37XqGMbJc88SDpYCKJ14V9TDcodRk7ZX2lMWXi8lKODlu3GAwjw5vXCBnyVxmqxUNbsVdrpVNBr-VNLsVlBvmsJRo7fk8kwSg0T0usFQTwJt9x0zh4VCUAZtxaXWEhz2lqFoQT_31qVnDk4V8CA0XPeOwkAyAun6Qlyui1slKAHZmnK9isgUsWg14-DqpaBrhzSj0EpX376J-FrWMcE2JPh9zgKVCv1lhoUACSMYEE0J2GyR4t23fFey9LgWtv1LFMverdieJEpF3uk4Lsg4IKCGVlgMaslkvNE7wRx6Pg6gLFb2O4_wIbLKEyvTtvuIVv3k47Oty-mXOqq3TXIRHvyrmriL56VVl07k9vUmS3EIoUz512omv29vk0IvMjmS7zG7X-ojtHk595nnh9arpV44Plt64g-p09Ydp0K4cFSgX0SIp6PggdaDKkCcbkUWOfhUrbo9gs9h96k_57A2gGxkgtftuV2C9j4LO0tdV11oRW6kjy_LJ6L9rujhbJHiO3emkiHdwPFncjr6uozgm2dK2vkBnIIJAdC1C3V3wg3vHkHtTU-LSJJFT98T8GRNb4C5jHgQP6cq1s-gTlfRqt0nEwOzVanpTeTKQKURqwfpBH4kFsbkFnU-pbLq50Yy0XPX_-y4ZJuVtc6j9laT0J-bvJFFwQ_9UKBAxsW7AsHP2Vit1HGcmFlKPNv97kNijmzAbUXBvSvdRUuNmktLtJlWtPT694JpIXWLtbNozpvHkphS1tnPge0xdKHjEOmFXic0XmBW2vOiAvmWNhmdcsnx9B4UkdbKtXkjLroU6srBg0NJ7i-IxgptC42WHusSxWCgfGav22CkCgHm79YNI2riBWkeCzfH8lM9EeVJazOZz5ndsKv8xwpjwlgRsfDf_a63Ur3pRc5d_WS9vCepXDZOE_pF8gePXUY1Fso_ouC_UIWFwsNx4BghR4cN6Ehmje33_9v96ozoRzL96zvy33dmZzoeVy68yJVsoBHGCkX6YJu_Jpru-Fpk_VldYvTdppuwFZwJxRKbze-eS-QCai-puZdH93SFRfJ0ZD3ybbLgeKnTXsHRkG5-njO_rY3lvf_SLqfCeXwV8oNiiyiWdN3Zl-gAbz3ZzMptZpo1ZmmNy6sbk0_7zYz4sij1Viz_by0vXfCSPPBODOd1Rme7i-ntVNq7E4IwCEbON5XgKLpDY9q9jNWFshgsu1xmFnMk0IaZD9Hkt8YV6tKkaj97RNZCrDs_PZYrGZFnoYOGTJNkI_ank7UljdeWrQ28uijXPev1L9M-NtR4g4zgiMKGTCSmX1ZY3Fh1nYee2qdQDQLjAxvKMpRPt0WuBGXyqo6UiQP5JRZrcvZykN2aOxghIYGJ1Y1EAS24tarzLknsW27eFrSPKnJLMQrEgexyUQNMEr6JW7i7tBtCtWKwuIrckeTBKEWeQOEG4yJIez5lV-BpdjZR062LazuOM0ADVxIMltsp-mzlVWZkYLaPSgLNrFJB6m8OmuxJAncjGQG6QnPdJ7hX4w7dGdBDhq1T8Jgcy_S8xLNvQKsh2ZQgqzOvQbOLmcigtgg2XjgBUKJSAZWpGFMbKsg2XrjG_2biH8IdLWVDc6B62TH-3ZXC6fwUt6Q4KIdry3a7-2c6uFB9HAx07zpPMfE_oNAZ9to4cVdlvWijLELm5bNmF8vhuYBRupf2fPVbngB2VikMGGxf361Z9BQC_Oa35jeRxJjCSUROLbKzlt1Nzuhwk7IeaEVvTNax98Jh6p8dxfwB9gsZWsafd6yb7Kxah3d0EQFvuJWchENefRIEUfgXrvK_C6Nv4tVp3cSM3siDe21UrpQFQZJWDYTCGnunrHIjdpvWFR-FKzAB-7EyurE99_ISMpLBbhj4EVl2H_jb3i6uqvIRbVmp3hRN6YXt7qeN7wZT_75z7_vwrNPqULj7J2MuPl_t1YmtYggqg5dJNomkQ9lkZpPZi1NTMH4fJLrBnZEWhwzIfjvo3RBipOGfC3QW6D7p408th7r_Xq45Z7hokfUjDnWzlwqA23gk62n0NoMtpKvVqaezl8e2u6Q7rwqL5XNAHoPsbl_gcaRQnv-tl_jZsPeSlZx84Mth4mi1t7d9jLVSfy1T-nU4-P3y5hkkCDLrTvDFQHz43ex-7Wd3N7eg9YdB_HA-CtGIFSUwRjqxfPw6hdzTpbcfaPBSNviKvycbdnpx-qjLvHnh-SPQmpjXPzh5isxcszkmPpp_0nfq-fdxRTFmssEZRSkQS_hd6Zhu5jsI4ze93x_lfUCqyANJsjg4xH1a_hGsYJzcN-4BiBf2hLwTBdnD-9IOPVdBKt-Qb_vuoYwBU8el2tXABmhu23-wb6jeyfTcIhYFhchpIJCpZjBXvvunVY3KRyl0fl_15c15d6HaTOA_4-u_uXf8BjK7d0b96C8RbKcVTfcSSiGpDuqv2lx2tKQHUm2uOziv6KaUHBbjT3E_kbBsV37z0v-udPNXSoYpxj-l5di8xz8lZ8EKxr-EcUxhtFTLjuThmTuXjgVETjIw0PPtBwaQeFJjrT2EPuys_8A2XcyT6BjRwKAPjRACX7JqFk8B8UYPsT7nsV2n-WqmSB7iFw0F2XGv0uMaxyTXn69VgwDepIer9pD2cXNKdjplt6SHa3zj3YCqtzK6xpqZ-q2x7RyvTSZvqxakiA1h1mp-YuB_TPmSGdfEQesLRIteJwjmOzKsjjkyW1-R1TCqJlm3U3ksWKotTNeOueyNxFeIGyte_XfiEVCytzkMEMBV7rXnb5rWSRzUzAaldQ6Ox2zttAx_e0BvZ3bb6qTxPgrVsBFjdclhkh0pP6yXwNEOTiteOFUuphFUQ85nqUQK_EoRUvxhEESnrpND6PnyUsdqysbrbX49vW2R8jgjQEH4M-jBoOmaelxBFHQrze1lRMsD2ijwD0y7jYpWyAQ7VLjH3f6DyJfDuakuWO-eYX3OtfuvNRNRoDfd1TXzlzs4tecYJZFSucs7kIM7MAQttW28WtK5pxxgt6n2O53hae3Wyzhrj3g1RsQ_vy9a_mQBU7Ftc7bAAShXs7waw5XDLcbtQXpgXyHwK5Und3dJMFXehA_LLCM0BE-YsGDyEdvaStfBVjwVmgVd01x9sdBo3Bb-EkwOIlitNdgePWCSq05koWvS7la1eo-JzD7J0X8dfsojIg6dW-f4QTvoh14MND4wFqvFBovD__VXJCwv8y6vagIDnBe3uX9EARmcL4MJ7oG7DHxekwt46XRO4mtFd0L162bkJHEIh0RwN1rOWnb76cZNaDyAdkDc92qbkI6t6alJV5IWHVxW1Z5LKB1IvoG7RtX90snEnGAcgQYyu1GWZNDoezLHCUzTantMPP2fSFcWKhxbvPMbWTkaDBeWftzETMfgno6Bk3HK_d3olftWUe7JpGK9x0OOVJbwWaaFgbrAlTjWvnvNBgKPFWltXvDM9VLsNHmXC-EOtMWdvR5VU0DPxTFlGUzG1EJ5-YBA_I3PLfLH3FjANCtGOMXurXkzlA7b_OquZI9axdjPpjXk62aTBl39NPDH9JXfX6eLfO6L8XAeFbHMQYH3r8HgxXI7YvSRB4SQFKBcXYX2DGZHyLNn4QmIjQDVziOh6AWmlE-mOmHe1A-8qYbFiUrumHNWiU4OkHOu0sG1PzoH7W1H0etSSHv1S84M0UW35MOa3bkVFNtb0aWTyM6vzcBXg7E3yXeEY5tiMXIM8xQSDVhFQvtA3SYZtgVJNGghtpgIQEWxznfbvcS1duZxfg4Gka4Ot3aV8N915W2o0uYZl06NaLkS8K0DGJ05C8HJdyYFWZDzc774Qm2bYvCB8VNzn1AW1QFo2uOYJZTFOiGuHBHkjECvvW1J1SO0JGR516RnhDkBJuXDHwQ4oV7DfHAX5A2hF83GH5GkLmMjG8pmTF16QGMWYB1Oi8LUH_kcG2Rboz4y7p-Gzf14d4wU16pGZJ4wO7DSpHgH6a7BV9HWXcuOigjWaNb6hV51oN0eGaHf2Ajgg8AoYaPe4AY8qY93xhhc8aedIq4Ls4ISNJb6PF42A0rqWLB7VJU4K0He4QE2EiGYJ6wO8aGLHNBaV2564nuPd-CQn290EK0J60cRglh28ae5INBytXL14naR6VUzH14U0uxndAK8ZeHcyP2dYe-4JzSR29PuMEenC4GsD2vOuQN03uxXBA2BJ81D1iK2nRoUAg4XKfkuxYZ2vOPgu4Yd2veOjGcH3D7AtKaH88TI_cYaY8v29teyB5STLJ16O1fZXcvmYHXP64Hi7DiFtHqMC6emYA1Oe_VkE8Yu25_UrHn4RXOrzaTEV6fVai_I4CP8XQNjPaYHodfuUVNcKFdtwurzkIv2zs-nBWF26Rr7s3aF6_lkhdvu-bKMqBS12hlRNHbxHcwZTPxx4x7ClqkEq48yswa_t9ab6hZQok8axr61kiVijJO_mKTexBpiz5hTtcSysAHXabZXkBWdWFtMbJdfiyHP5DevdPhNLfMf3nTu2jJMIeHi0PWjatttIawaji1bwKTSye6nDZmYLJDOxe5p3BJajssEqgPfvpX1ELRGacoTGaqVhIQ4pRmgjmj6unSx5jdct6ZVJOevzQA_qQZAu-yWcfTtRrNWf6pZrdRBKQZorVZ75k2kw6lVXdcup7-hN8RpRXNRfSShsC4EWH8otJpVTFUlQCrECf7SvmyoHNDKzhYyvjTzivFCNbEnwTHP9q3ikM7WlrhEDuLq83ijOzavyaXwJzN1bfkwLW-bnVIYyzSB9tBez8QYP7TTJIAVDVBxfFL7cf74PLlGzCldVfAiHphbZqIciOjKejlYLz0ut3s3XF71Vp3h4yutwOxzUbQ5Z2VmmUqVXHS8uaaZ2UkbFMIs5Sr8KFjBToPcHFhujezjpDtK6bayPoccegoaMxkuLocCWITorWlnPpoMN4tUcLWKpr_Dc1kiuVJbmL70TSbqF3jQhZUiXIuOExrrtfhcNH1ljwIQJAt2VuEVY54hUAQ42kNcrgLckmwY_Dhp7hXWjleeKkfStpBppy9RmR7WmatYoFBxGKDwaX8eW6YY7uWhIamICeGB3t44eM9YX8L29unu1GtaCkOQRdeCuZtQlQodYPiSA9MfhbXBMrAGLBQ7JzCs7ksUonS3LwjMWbGrcevyvttu9qv_EeYlj8w0Grm6sR8lAV1uQnYoqzT7hFXnChR-gH8oVuiaR33Vgl-ltH56NZwIfU4-INd3Nd-dGuM_2DHvurGyPhyBVFBF1u6--6k2_E21LnyCTSQXW-eEMJx4OC7sXN2ognKmggiAnI6se_sk0vv1g3m5kPiiBATexDfHlOpnQIfjrD3KvGttHmN31fXyrO3FfcyXkT80JFLdaJzOwXDTACo7pRSqZdBv9UwFnO8brDcU8vR1g7gUSegA05ERF7ZRTZyJZcBrP1ii-tj0mMRtZiJRzbstDnn6nFIJF9QXLf1befNbr7oAtHA1Ma-ywWWw0QjrUd_zecuMtrc9vsdCS1dH8lTpeS1r02YVtAQuhgMYh4Moinmmfn4f2Z7KGlvwnaY13BU5ahHy9jaeJ51r1dpPOp3_0yzkvk2RE0wtMTe8xqfj1rtX5IKOjbLkM4KErL9h99h9bCIkiBebB1BPnIfMCdEIrG0AdhJ1V3VJNDQKOmC79rpXJQQtHQjHSjmLNbS8zM3PFBTYjKsvMpwTWuwbVOcM-J7uou0Fox9A_vnRN9fDcbK-wz7LuobiFbE7wsQRzhmkOEGB6AqQUYVrmCloyI9x1g59FZcJDvK46jovQFBqyQ2HkhAszc2NgT49yuywDB-NN1GcrxvUHGlsJz6D8baQVI4limHc3cilCR5-TIQTQII_CiYX2qrY2YrwaHbaE-tdIHcBM20njUX6YH0DwVf9MuDUkjEbdQTayBWC1TOsHCw0-ZrVZuElKbJS_YvupODtIJkgp8MPR9aLDqB1D3vj1sypETPHrIpwBRWTgJR11D9IIS-nfg9B-81FEGJiQI2EzxvxEeDau8PNukqctP0SLaQGRlDTQ7qth_yTNHI_dwrpIEyJSiOPtkGG-Z9Vn6yQsM8pcK1RTvD7FeC_XvN8LEpvzLr7jHLYsZu4IjKx7UXDCkpiDfILAsqV1rDezj7Llh7TO28g9EaXZjgbWehffALmhl9OdoEgrIKCficLC9vT4DMjuzHLIg_CSN2dbbC5PEgcLPhqj0LpyCxK189YheTyr2qt1zNsxWNfkRucM-Cb76wdxzlj43LDhR20Gv9kLNEtpXVJjwOtEmvpMBECZ5wnNV2iM3vU0yRVxN6p94_aoMdjMeGnSRdB3ekyZXrBt2y8ek7n2Bw7yNSkB5BV-yg8vjEr5BXrjuqquRLS-kYRUJqU7KXzh1Rm2weFJViLYOCOVoiKSuXHfVOGBfTUTUIAMhbEerkYpzcamGNj0ttJ3-YnQ3gFPaLriCLqd3RGSxgqNIREzVE4-bFkQJ7yln2mMRPKcoFbzIxy9QZHF9lR9ugFqTuqduTp1inaZ6_UFcPyniDdKdxJ39MO--xBqs9atDtlR1kijbb-5ZRvM_a0il71RbwNf9R6GFMpBa5j2q5guRCTe5X0sCj6haXu8hlyJyIsfccNGvlFUmrNbCSAwUeGMhSl8IwcTs_JcwaFcimSmG2VgqAZqNrOdFvXqMPUD4Isxtb9I5TkUZxanN_VyDVEzsrbo23x0RgJaz7R7KI5Ssn7dMgjIp1uSEzBcAgSzMLX8t3PO6lbswvOtjT7DSwmD3KZZT3MylqgKT4OFtFkkvYB9_BTKpMKniBSel7CFxIUQJth0hFQ9hqGqd9WLe3TNYSytltMQ8rXxR76KplIM9yobXuTN7oo5luabcxdbkO9gsTSswU9l8LGujmxCIcUkKFaRKYxpEwaUo9xxROf84tEUIqLzMvBy0-AysfN9_mC0 -======= -xLrjSzmsalxENy7IVaZY6czjaijLdMhlQcLPJbndoof9pjOcbL919CH1p05c0L2Eaij_lmB05m04IO3ao7Q2JzAGG7VpGQFHwCRBFnW7b5UxCadJpr9mJr2UxYcvBU6EfUyHtwO05oNCquoIzoozWv0dQShU8Rm75EpI4c787_Om9PHlYV4gAm5ZwMz9cgRfCq9pI4z9IMZwbw-__i-J__gRzlnwYx9t63AMVfMawUzIb5DH6x8ahUcSP1pT8_vm2JEqHn1pzbkIFabHdXwd27DOG9eUftyl88OKS9Z_Jv8M563-qYnmUVRYxFBi_FJiAZtwLhndHtz5UP8IleNq37F47qPgl6bB8LXNV9A2Lh8zeMFyJeo2RVsCGY7m2K-FKuvsa76msolinS_qLu9XUfnYylxpBqJvQf_xb_yzIMpy1FEJ_PwIUqYdGLp-VHM3TAJMMmRfus2Hvh24KwMJ51Ckwd3u2qzInW6lM7gSGbpjXj0y9MK9RWa5dFov41t0umKguMFWS8TAE59BYX62W-_t3tttjmIKBn0iyql8zWIp6I084jv0YCBj1nO4bDTmjoy1XrA82qfs-r7xvwvn6CXIMcDITwqVVnf3yH8oKj7iKG6aDS-HsgrOXu584PTDqPWS1PFuJ_wy6O7gngZ-Mv9Yi5Euo-U9v7H7nSEQf3-rl__VqwTZpJJSajCjI2Wg40RbHCiPRRNKSXG1lDPjuwma35vLR0znVagmw0hjOAE_kuI04TmCF2d4-NCWnoN194aHary6ouUp774eFkMMa182KUKEb4oMkUGSx45BH2X4DxB9bclVjGFTFQ3P5j3Fl_hccoyqdMdg3NJQDxS_GodGAQde7CFN4l1kpBP6rrAIzmY1MhWFEJQsKiyR9DU0wMCRDbi9vrlzDM3v1Er_7xdU8A2RVrwAFnnSK7AFSfWFZ0DJL1s3GR_AH5DVaptAFamxSy5wfBuIxODq0F_1qWU8_gSl7JR9BAw7dTG1-aR440nvlfmzphPVUAg4_WvIs8sjWyCag_O2g6iH2Mb8oVxMyjIwtSHGEjyAXZVe9sZpXatTsUch_prjNxzbC4zIaEU88u91UKwu22TbIXV4D1-xAhJsqcqR_KtYX2MSRjqICFvMOVZimM-w7n8OeB1018ysl2ZmIBtuIIgYKKZsn4wShn9Dm-kuNzt7pFvdDNFRwu2ASqqwvQ3CAZ4Dpg-CU4-ZBPtb420GUadAhf_di4Jta3wyXdnByfveUKK1Ln-MmmpjGFdvrvillt2fQpSrxllxEw4qiiZFZE1ReHwug41XOo4gbx00cL8PKnQdpcjSSRMxXVJDtGMW76LeB-AZNOCawHuKK204Qp744wEaBScUaeA2dMWprslQ6D_-YtzNa76f19Qb5V5g0nfMtUuG4xfZDPvymJaqaUI05f1VaBreSA7W3lRIHN2-uC2XV-BDFQAy0kNpMXbSMjhQUprUA5GftDBh5BojlX6cRCq06PqCIF4EwmlfOab5cKHZ1_RicepCyYo2ZVpte4JvYr74lg-BpBLwzHJRrDadeX_iGG4uV8DVGrf0OxhEQGKF5CpMGDxjAemogVAlIE4x-yoiUgEJQxFeHpJVx8dcyUMq6N16XyWc6NMeqBmebmCEEhiV_kr-0Pd9JhKeT6A4dfwaUp7OCyxUuBVxaW1d-Egm7UBi7cAkxE85Aebdh991ET2CjF2LAg5HRZ63z-FQP8iqArePalGyL7UpF-GSAD_i568EgUm37XqGMbJc88SDpYCKJ14V9TDcodRk7ZX2lMWXi8lKODlu3GAwjw5vXCBnyVxmqxUNbsVdrpVNBr-VNLsVlBvmsJRo7fk8kwSg0T0usFQTwJt9x0zh4VCUAZtxaXWEhz2lqFoQT_31qVnDk4V8CA0XPeOwkAyAun6Qlyui1slKAHZmnK9isgUsWg14-DqpaBrhzSj0EpX376J-FrWMcE2JPh9zgKVCv1lhoUACSMYEE0J2GyR4t23fFey9LgWtv1LFMverdieJEpF3uk4Lsg4IKCGVlgMaslkvNE7wRx6Pg6gLFb2O4_wIbLKEyvTtvuIVv3k47Oty-mXOqq3TXIRHvyrmriL56VVl07k9vUmS3EIoUz512omv29vk0IvMjmS7zG7X-ojtHk595nnh9arh-OBrAndQSKIox9WdANEtZ4OBk8OGpuPegdeEKk56b-QYQvZ-rbwAgA5hfckybtE0gWxkgdftulEDDD0MOGtBVHDoR4AkjTRNJsLGrObhbpbjO3WmkiHcw9Fpczr6uKvhmohK3PYBnoUHAdC2CpN4w-FwHELsVE-LSpNDT9CS8WdLbaC4jpcPPdAq1MohT_fQqdCpFAK_VaroT8TMQqIPrQkpBXCjFMflFPQ_prPs5Ggy01HY_kq7ZpqTtcUk9VaU0Jsfvp7Hww_AUq79xce7A6TR2Far1nSbmFhaPtnH7kNkrGnB5-j9vCzbTkyLmk_MtJlXtvH59qRmI1iMtbNozJvJUZFV1dnRg84wd4zjk8qDXCl2XG3Z2fGlAfmZNBmcc6zx9BCSkNfMtHYkLrsV66vBgGVG7T6IxwxsC4EWH8oVxG0gfmev2I4iSwPo79YKI2ziBGcgSzXJ8lMAEONIqzSZzb_as4z9xgm_wecBgU872UTDpRIDkVKVAA0d0nbkO-FmFuEiQXYc1_Aq_M8F_kojHA2VxKViehejKMQinDi22lD_8ccqpDrPBsLy_pdWm3Tshp82ByOJrI_RGi6W6q7wz3ZzxENpi_FhbozUdZt_xFZuIBhVbjGtgiwHFqeopuxlI9VMCBnT2ZD2yrDIgQKwTH6MRU4Ez1LR-rYFo9D_WbyXFOboU9ASlCSYatp2XVEkBrjAZzE_rJF-338sNC2_aUOs4D-_66qZ2_qr-rqExn16Ufn1vjiW1hSb7CY_t_7z5UGSuSAeOtLXeK5vDIDs8jJcDM3lsefxmFjGl0QeXDHSj74hicBSlKXA6xdjLLDpCvVjs0B5o2yNITX1ioVfp-JMiUBkYLY59e8ZYvqr2bbLydRX7QioeSsQHTGHmnnYW3Fe0nkdg2WWRLUPjgNqNcdHR7iduB0Wz463VCQg5ZdbrcDc_kF2bOBXhYgTI12CEA485t8x-LMrsm6AeFTGRKnLN6ErDgKw-kkHLkT8JGRk4Np_CdSJw8IxbEKQAasjew01HauGJuDAl_MDq7jkR0ECKK9sRsW1CFhLNlJwpUO_lFqjk2DgRSILMbVV8sCCR0WpJgjil0QL5g1PdZdjWKk4dWVDERi6VO7abChRBxnJvQSrfIRSg4fRxwXLMGYdgNoh2XfgA-eTTQFWo03TaqPb1nfgJVsZi3KHab8TE6-64IjOzp7eE65mUdgR4KgXrCVd4EIl48RB8nkr0djmRsD5-ZxFXPhy7MBYjvSlk5oLmrLGoVSmeecFQ8ll39bQbX-72lifMmuvf3k4WP7SCleZ1bHiRBZlDCsHPrjH-VJ6NT4lxklQeKAIuz_bvPGSecFCdBX_AfgyYWQkhNIsaNmqbRlY0EU0ve_dbB2QevVIDk9fYbfN_iISuKVKpJ-SMJoeFOo6S57RFAhTYDEGE0rnp5XNj7BsZFdmDavDB-hFyOv3BPxKVsBHB5Nk6ktW1n_fdpq4wqPJRbB-np3SMckis74iNNYiVlF7yNNqxrdRrUbX5JsTu9Rnso6ys22ksgfYtNQzlA1fiZ_QZCbUS6T5f3Hr9HNFYBwoJfrxopd8jZiJfi3KW6f0mqSCqBZ-0HOE7JJcmUjQkjva_F2sBYJei6gu076Ht3O_TKal-VWc0eYR4Lg_NbHKA1UPt5dwg-yDQHjxtWxlZsrtTlZoA4kmfOSi37pd8TTMTPy2V-5N7Ev3zbFWkivOqzL5Fgrz53qm-die27VjePYeAFTFzChOJV0O9xzvwvH-6hhwUJrdgKP6TdjXNfmZdtPwxEClNPrtgE4VPmdhZ9rb7yksdMjhpvxn_0DitEbZwhTDns-3ZRujPyxvdsliw5jmJqPeBpZqlf-EryopGcTl6xf3bF7JsY3wb7s9ByJk0hbwTRhqEU5NOfBX9qVzRLxwxocpAEejiYZiBR4ex2lmu5wgeSrJcYtfEhAkoIlDn3pEYvjtqlY5MBCXZv_o2r-46N6MaT41zagy_uZlABbG6tGk86K4OrWkTTPjUiOXoz0yy2Jq2tiRHUe5x89XxtGaTHZfijN5yEvEsVl9y0TqxdvIXiUbpB9_krxiARn3lpYEKhvpFMwwftlVKzqMhWr_XzYMEjzPwm9OriciReJQqrD7Dv8vtlmB0XgwUMpaQgqFPTh6DXhIqHE1AuYiPs97nsV7n-8toCJHilU0FY1Sw00KdhOJZnsnTgaEhpsZr9Z436rQM7ToktEVGapsi3s6s7nJ7xNxZEGFxNByvkGbvqFdliIAeX4y_2CA_jjzTW3XEQavMhQrf3UXJevHtzHg-mvoO1vDrppn2-3jq0uwrTBjPOYZMBnlH0WviVTZkEl0zuHZN-w8TNjipL5sWSNnTjshidIEPhQpq7s_yeiEu3lca6KKxPszUcNFid-ggU_Eof2zWQp7PTv1guVHupx3Ugy9maMNL_gpO-9zikkSurpNF6bqzl6XtSUZtLL6A9H7Q89ikwgL4s6XBoq_be3oA_jarDe7kh6zDIOawzqv4Do-YCEJ4lfjHJr4EiRdD8adwGuofgv2Q7Dpwe3LPYTlanbiz_5s7tOZYZR9U8-p6UQU56QTqteFA0BI7JJthdkx0O59eKCEYiDZtzlcdBcL_PeFd_aJBEhDqM_k8QKeXsltaQfZCL6bsQLzg3CQxq5PmNxcG6Vjex6oKbyL0xQmWsuBzEtmgSdXBVbzUmgVcWzy86l7oJleykMuQohXstpjkPe1U4m3i2KxU7dWAuIsJDvGGmTCc9Y-lIA5cWQk7wbnnxbAK7H9u_GuFRcyFFdNZpyruue4xqQMEXBd0eXFEAdubb0PGNQS7D1yfEkw7cTGQ4imF7SU06Mai3L9HBuQu7jvO0LY76MiMKD-8toAcvsuakI6r6OiIVzTWHBnXnl0M4N5Gf6R7B3jBG6qFH4BbAggze9JW332nOrQJyMqTqrsN9T9fiBbWqRnchjNbWPcbzxXWfZoFTsffHcBBERUKV73oVDwYkS1IZSV9BGNOFZXv0KgEQH-AVLgXvrpNBcSQlHsWHzENftO5tPvXC24RtwZbP3FTkKDOBr7jm-zHnsG4-E7AFkBP5DLIZNa8tqvGuUXvL5Z-Fw6alStvZI2bBdZQJrdks6eSBJ4AtD5Hftaf16cKPW6LeP4gFfGMQ6P254Veh5x629URhmSOVm8bHkg2D4eHCENnKUqHj2ATjqVgsYiml2omuuHh16m8awZECM-vmLJXCU2P-HQv0YG3P1rKt84I04qUijn1Ca5KWIe1r2SbJXWUVxybGSaUS27vTQ7YSl60SvlE2XwiMTHM8BOVjhWDwjzBZSeXtAVIdyjf7hlJAgfuz1ld9cN2NmcRfIEIkG2QNJZS8JC1La4o08eZl8EK4RkTOu0DG355C0KGd4kFmBE-7t64QS1d296BepSDnX7W1g0nYyOZZZPE8qTwn3Hij6Auvm7I14S1pWH51kKmRjc8pujFX6L7Yh3DvT6X5g4el8CGXDHiL0Pl0OrmjF14w4PX2R2Oi4ISXNfdmwPa2j7_tJmJDv36d4oSHguGJF2v8J9SJrZH6e4AVTTWX6oQSYYYatY5RNA1oN7fG0HgI6aegqAmYeQgKcW8aA32BdlceiecIWDNMGNSNBX59N90wGuq0L25VlT54uHe4601kuOYp2vOOeGMH35bVk144LuR7Y6RnoB0Ea0HM0iOARk2uie6IZ5zNjJ24LaR6JSznv5S0GupdkM8ZGIci5BbY8-6ZvHRonSuccXmyWKqT2uO8cJ1ZSmZhk48Z8DCX4K2nJxTgA8YaHbwhwZ29CRfeahaI9iRjWYH3P48tShHOGKGlshcI8o0fde_RXGSLp5585fW1c-oIbYP64KiN5WCtn_LCIemIY2Oe7Il-yeuY9mSLzx5B5HsDWNEVsfSKa-IqyO8ncIjfSbIIBdwUdHbqVfqwS__kMs1DcxpRu426_u5cNlC6Jilx_wwUbJMKJR0YpaQdzjv1MzYTfzvalCFlSYFKuByMYZ_dHlacJaQYEBcxX33UOMkz_Iz0WVfRtpijDZSNkN-MoJWa5cYUFcaW3-KrVgfCSMRr5autXcLbjTgZPKx2rGMoCPkW5Wja3stISzcTe2cw4NTSq3ojRqY539PBq3oZNSajEoFKQRgfdd3E5KHKkoUG8rURIU53hpfj0g78rRx5nictUhSJCjvjY7zagl9eExZsnIshrTZPUoWLFVAKkjnbFh5rECkwAhSH_kwJRpeNuTmhjTQ9SUfsmFCmHAn7ZxTDFTiwuzCyL8UfSpp1p9LTtZ-f9J-yr6Fdz1oQvNPv44lUE2XVTYFTiOteNWi8nbxyGdwJ5P3rTcwbuvc1xNXy9RBvpChTiJWfhPSJs5TDhCvvlU4sLE6fTXHTyZa_zDkXhXd3iMdS8gLerYYrz9xt3p01RE0_V5h4CytwW_zkjL6JgMm0-pTnHU98mZYIIib_wKrL8u9qNX8zsTd1dfuziokZrtKsTW-PIXd8QwccBXxbwXF0QIn5qho9_rN78vSMTgLJ1pFMzci8xJbmD71TSXr_NWOBtQk1woPEZmtdLdcdj9jD6URZAv0lS9VYvEeUIT4YgGcrURckKwZFfhmtliYj7YgqYXUtd3p3iFRmdFXWSpYIVBumiDvKrAg0YYWN8ehY0zIS0OAZ3C7OI2XHaQ0fKuxX4mbCUGQxZfEOZpQFUwbY9kTgnGehPcAM5DJLhH4ZfDttouUoPR35ojNWrQsM0s-fdpxPSm_Uaikj8-0Wfn7M3BjgZCvw5Xp49R7xtkmy7K-gjAnFWfdhp1SAF-ktvF57NvI9gAzoJf1NVzcGuT_YPSuu5N_P3nAlpDCniC_kQh0VwB0r9rFDmHXmgcFsZv58i1qnVAnQ9QpAIYAXoBr8RwlmPu3gds4E1cjhoGehrZG_asngEbj5b7KvCpr1ST31Ti-b43DfE-YUn61pZHaqN-PAr3UAqq4pBVrZp2wPkqDneFbbXdSuPO3glcSSefAWf8OVxiOTFzI3oEsPjbiEpZ3GsJrJiUQzD_sTPy717RG_9SWbf5ce5McbVt8N9B16er-QuZw02erktr-O-sMNXhBPQdFSTXG8VKouqErm6aS7AVuhgIYhOQmSPwp912h2J4M0Vnwnah2JBK4axM-f5WgpH1qH7qQOF5_0CylvsBQ-8yq6fj9xWZlHbqZLUKPDHIkMKPCLHBfPbi8biMiyBgahX4O1kdLCd8ILuB973Q2lFLG7zTKue179nyZJELrXgjHirrMt1LATo3PVFKWjqwvMRrV0esdlebLkRBv2S3FY3FBlbxRd5jCcbM-QHBNuUdlFL06QwVRTh_ke2P8s2yOkIPs0ydmy-Bv1cCAlNaIDPS7cHmwwB5qyk3HkB6sjgBMQ9E9yGtxjpuKdvTa53xVXafr3z9FuPaQVI9jCGUd36ekSpCzjMPTAgLzC8iYo8qZIMuw4LgbEMmdoTj96QDmD2c5o5ADA3d9sa5VkrActwMbitZCX1GrnWv0-hpU3KElavTUVEpwBa3rlL3VLrIKXyJCTj8AQ453TiAiHcqpKHTHratwhFeTlZM11jmGoavXw66AkcFD-4Sj5E2DDBxxkaCceq_Kec_ctHBTb0HIRfnVAsbqhJ-Vto1z7A-pjMzGymTotcNI-33U1c_OMoBnMWE9THD7lra-XnUBg-nuzFt6jMsX6LR6YXHItQiDy6qkuDHMgAqVHHChTrEM_V6UhE5e9YeCpLccmecgfkMmhNOQtckh5wcD9GjMyPqSdLKivnNNoorEi_1HLDE6PobarffrjiTmCK_Kti1WhaQ-bspq1HSty8RgEVsxcY9dtoqaRfllq_KCBN6NW91lbdKrJvVID-UwUWyp1dECZvoxNh5js8TSGaOVxlFnUuyaJgZjMSLoi3bCJSi-kvoA7M_U8o2ooSA4yhVjT98SUklD9f3srxlqj4steJJTgMcQ-Bzp7GezR5Mm2kWFXW1K2m69l-XNCmXJf7MHxXGUjtn9s8LEuLgkJvhdmOJj0VqJJUipwBbC9eTsSKMqtNeGClXtdgHD3lD5sv9kQ_9zBT5p6BHLcdYdT-tz9luHlDaOiiiFaf_rtWIpXqycp6oSV-O-Ha3-qxzIJjSOkQpHKiFetbpitTmiDww-LNOwClc3yJ22xTrMPfU4WlPphOCkIK4hJNCTenc0M4ZARqgwO4u-pyHtvAgMH5jFkyzN5KU8yAh1slHkeoybDgvOs-kFcG-sm43TAAEaah_PNNoW_cNTTaOqRBhBILLiUtvc1lpTSzVCz-xdIM7u0FiHafExtmS5SArCt6kjIh5xC6nEMskSjgJXON4ROEbaMztSNbJ6zr7nzhGW3HELyDRhKH9P_J0lGLhBfBCVtVLN1O3suoMsZupzB-ITrNecmhcsGLxLVTy6rdd8eARs1P7DMnlES5SUdXujS1I-9k0hvaBdYkebYrjCoF-tLZ5NElegVIu2fLa8UKovv3gqUQvtwQ8D87XkLJKjoN9Fo3EgrsP_3y0 ->>>>>>> main +xLrjSzmsalxENy7IVaZY6czjaijLdMhlQcLPJbndoof9pjOcbL919CH1p05c0L2Eaij_lmB05m04IO3ao7Q2JzAGG7VpGQFHwCRBFnW7b5UxCadJpr9mJr2UxYcvBU6EfUyHtwO05oNCquoIzoozWv0dQShU8Rm75EpI4c787_Om9PHlYV4gAm5ZwMz9cgRfCq9pI4z9IMZwbw-__i-J__gRzlnwYx9t63AMVfMawUzIb5DH6x8ahUcSP1pT8_vm2JEqHn1pzbkIFabHdXwd27DOG9eUftyl88OKS9Z_Jv8M563-qYnmUVRYxFBi_FJiAZtwLhndHtz5UP8IleNq37F47qPgl6bB8LXNV9A2Lh8zeMFyJeo2RVsCGY7m2K-FKuvsa76msolinS_qLu9XUfnYylxpBqJvQf_xb_yzIMpy1FEJ_PwIUqYdGLp-VHM3TAJMMmRfus2Hvh24KwMJ51Ckwd3u2qzInW6lM7gSGbpjXj0y9MK9RWa5dFov41t0umKguMFWS8TAE59BYX62W-_t3tttjmIKBn0iyql8zWIp6I084jv0YCBj1nO4bDTmjoy1XrA82qfs-r7xvwvn6CXIMcDITwqVVnf3yH8oKj7iKG6aDS-HsgrOXu584PTDqPWS1PFuJ_wy6O7gngZ-Mv9Yi5Euo-U9v7H7nSEQf3-rl__VqwTZpJJSajCjI2Wg40RbHCiPRRNKSXG1lDPjuwma35vLR0znVagmw0hjOAE_kuI04TmCF2d4-NCWnoN194aHary6ouUp774eFkMMa182KUKEb4oMkUGSx45BH2X4DxB9bclVjGFTFQ3P5j3Fl_hccoyqdMdg3NJQDxS_GodGAQde7CFN4l1kpBP6rrAIzmY1MhWFEJQsKiyR9DU0wMCRDbi9vrlzDM3v1Er_7xdU8A2RVrwAFnnSK7AFSfWFZ0DJL1s3GR_AH5DVaptAFamxSy5wfBuIxODq0F_1qWU8_gSl7JR9BAw7dTG1-aR440nvlfmzphPVUAg4_WvIs8sjWyCag_O2g6iH2Mb8oVxMyjIwtSHGEjyAXZVe9sZpXatTsUch_prjNxzbC4zIaEU88u91UKwu22TbIXV4D1-xAhJsqcqR_KtYX2MSRjqICFvMOVZimM-w7n8OeB1018ysl2ZmIBtuIIgYKKZsn4wShn9Dm-kuNzt7pFvdDNFRwu2ASqqwvQ3CAZ4Dpg-CU4-ZBPtb420GUadAhf_di4Jta3wyXdnByfveUKK1Ln-MmmpjGFdvrvillt2fQpSrxllxEw4qiiZFZE1ReHwug41XOo4gbx00cL8PKnQdpcjSSRMxXVJDtGMW76LeB-AZNOCawHuKK204Qp744wEaBScUaeA2dMWprslQ6D_-YtzNa76f19Qb5V5g0nfMtUuG4xfZDPvymJaqaUI05f1VaBreSA7W3lRIHN2-uC2XV-BDFQAy0kNpMXbSMjhQUprUA5GftDBh5BojlX6cRCq06PqCIF4EwmlfOab5cKHZ1_RicepCyYo2ZVpte4JvYr74lg-BpBLwzHJRrDadeX_iGG4uV8DVGrf0OxhEQGKF5CpMGDxjAemogVAlIE4x-yoiUgEJQxFeHpJVx8dcyUMq6N16XyWc6NMeqBmebmCEEhiV_kr-0Pd9JhKeT6A4dfwaUp7OCyxUuBVxaW1d-Egm7UBi7cAkxE85Aebdh991ET2CjF2LAg5HRZ63z-FQP8iqArePalGyL7UpF-GSAD_i568EgUm37XqGMbJc88SDpYCKJ14V9TDcodRk7ZX2lMWXi8lKODlu3GAwjw5vXCBnyVxmqxUNbsVdrpVNBr-VNLsVlBvmsJRo7fk8kwSg0T0usFQTwJt9x0zh4VCUAZtxaXWEhz2lqFoQT_31qVnDk4V8CA0XPeOwkAyAun6Qlyui1slKAHZmnK9isgUsWg14-DqpaBrhzSj0EpX376J-FrWMcE2JPh9zgKVCv1lhoUACSMYEE0J2GyR4t23fFey9LgWtv1LFMverdieJEpF3uk4Lsg4IKCGVlgMaslkvNE7wRx6Pg6gLFb2O4_wIbLKEyvTtvuIVv3k47Oty-mXOqq3TXIRHvyrmriL56VVl07k9vUmS3EIoUz512omv29vk0IvMjmS7zG7X-ojtHk595nnh9arXGvKTkYHbFi1go6UKBsG0g1_lCj1t3H-UZT1KzHoWmWqkpKMtC7sjlHHHGzPCrNWlvG1L7TXLzUx4vnife2t2MWFict1Z4swjDRv-AWEgJboxh6a3mu7H9JP3dtpVx3OATrWRLg4km5myFeaqcHEOgU5T7zCdAhTZUw-Sgsccc-GG2QYs72AupSSq4wCjO5kzqzUIdfkXAVtnQvAZExHQ8ygCNfrncMZfmVcxdzCqNzbL6F02K8ZvjnyyxdHuVxcMv7i4z8IUnoIlloBl1IMxgnsWd6qXvDSSN9G0wnEVyGLvbBjNCYnTg2UHFvUPlLS8lrjttuH_KnQT6C4ZRLXeLydN-qpf0dqRy6sX1kfm_hJXCZOGBWiL0emhKBweS8vmyPfWlksHp7BawbbrOxXUTNrYk2sb7a1tD4k-kzh3384ICNws0wYSAkGaXB3CbyfnO58YlR2r7AZENq-9r2lc54fFNO_OVv5VFoMvixwZvsjgJwhz1mdbJSsoZNdr7oYO9uCORcFZy3-3h6eOfWVojFtY3lxihIIWd-r7xAAwBL5chCBR0WhpVo9fjCoTMIzbRFyvuC0tRg-o0I_6azGlsqB1e1i1-lGu_UpbyxFpwvSlNfuz_-pu-4YwtvRKDwhEaJzACiUExqYNqZ2yNGepGlDJKgbbEdKHbctX3lGLM_jOZwYJVt9V8Js9SdY2dBp78ejymeNphYzPIe_JlzKp_WmoDbp0lv7cDX3VlnXj8mlzDVjT3kyGHdgSGURQ80Qt9Hp8lT_n_HNa7E72g6DrOQ51UJKZTYBKvZLWxzgAUy3xKBm6g8JKNB1nAp9YtBr0IXkvxHLJSxEMxTW2nSWl5qZOIx-Uf3-JMyTgkoTY1Pe8ZYnsrYXaLSdRHNUioeGsQnPHHmnpY07Ee0zidAAYWBHTOTgMqdkbHRFjdO33Wj073V8PArhab5kFcVcF2rSAXhkgT291CEA48bp8hUHNrMu7A8BUGxKnLN6DrTgKwkYlHrgT8pKPk4Vm_SlSJQ0JxbAMQwWqjOw21XWvGJmDAltMDphlkQaDC4O9sRsX1S3eLtl1wpUR__3sj-2Eg7KHLsfDVO-CCR0Xp3Yjil4QL5g0Pcdcj0Sk4NeUDEVi6lG5abCgRx_mJfMVrfIQSACgRRsZLcKXdARohIfegAseTzIDWYC3T4yQbL9eg3NrZyBMGqXATU2y6KQiODt7eEE4mUdfRKOeXL8VdqEGlq8OBezir0himRsD5UbxF1TgydU8YTzUlk1oLGvNGINVmuWcFg8jlZDaQbb-72hifsmvv93k40P6SileZnXGiQdXljCqHvvjHUNJ6tT5lxYlQuSAIOv_bvTJSeYECNFY_gbeyYeQkBRIsKRoqLJkYWES0ve_dbF2QevUIjk8fobgNVaJSuOVKJV_S6RneFOm6i95RVEeTYDEG-8qn35ZNT7AsJFcmziuDRseFySx3hLuKl-9HRDKkMkqWnzyf7_s4AmRJRb9-H_3S6kjiMB7iNJXiVhD7yVNqRzdRLUdXrNqT89Rnczty6A3k6ghYiNUzVA2fid-Q3CcUy6T5P7Ir9LKF2FwoZfrvYtd8DlkJ9W2KmEg0GqVCK3Z-eTNE7JGc0UlQ-bwa_73sxgGeCEguGB4HNBR_DGblUJZcmWWRaPe_NfHKQ5SP79dwQ--eQHjx7cxkp-sdTdXowCimPOUi33mdOTSMzLz2lo5Nt6u3zbFWUiwOqrN5_cqzb7qmEZleI3SjOTYegBSFz4hOpV1OvpwvgrJ-adewkVrdAKQ6TdjXNbnZdpQoR6FltHrte66Vvmbh3DsbdqistQkhJrxnlCFi76dZwdVDXs_3JRwjfmvPt-kiQDlmHqPeRtWqFj-j6soyyu9dRrjw0vHnazhW-XJzYM-4BiBvEhLwTBdX5-9IOQV7FMtUUc_fyoYgBV8eh2tnAAmhy23Uwc6DazfjgJhoBechpGJypWhRjufunTYpOOyUielV15cn5b6HWVOA_7-8xwVv49jqBc0b16CORdKMRVf6GSiG_Emaz0lx6qKgHUm2uQzav7KGQJBLXV3kpjbxoV37z2v-qaP7fSoo_xjUh6dy0xzuZX6-SxrkEcUxdrFTLkuDlmTOblgV6Uj2s1PfxAw4MfFJXtTIEPuyoy8QEZciP5hjJwKQHlRQ4X7JmEk8BAUYHqTdnqVYzyW4yVAtWFwW72X0r1usauyThpQfJguzenIOn8pj6bXtSdjpdq2CTd3zWXYyqrzpEupaZ-qo_6RKvUS3vtx4YkAHl3mZoZuR_VP0OJdfEPesTQIteGwDKPzKwljEyY1UInTyyGlWBT3E-XKIxUN8GvOyRuD8UIqte_XdWFVqurzkIFMxR4rHza55iVRTQ_AqZcQsSv2z_tABpg0xvX3bb6qT_RgbJtB_ecclZihG_O6iXwNUOUi7aQF-mphlIO85rrUwS-EYVUfhdEESbtpbD7PHuTs7uzsLncXK1wV2RBjgbPEX8M-jFnO0iglx5DHQn_enlRMc92iTzz0SFiY3azAwBSLzH3f69_J99waEyYOkWQXpSsfmrMRdRnDPh3Tnzjzs8qesYJZFSvcc7jIc7L6wpsW24XtqDoxxkq612Q53Zae3ezzRvlJurRsQpvyva-mg3T7lxc7bA8Shjr7gex5H9Lcb_QXpcUy1sK5-va3dRMFnifAVLKCsC8EkYtGjyCd9eUtvFVjANngFl21h1qdxw3Bb-EkgOHlyxLdQWRWCGt0bkpWvO6l3zeoUJiD7J1XOlhsYXHg6hX-fCOTvof1qIMDq-FqvFBov5y__jICAnAy6rdgI9mB83xXfE9RGcK4sN5oGFEHhgjwd46XBS7mt7a0b972rYGH-Mg0x-M15OXnbB5c3VcDy2bkTk8waXjIcx4a_NS5IiGVRW1Z5HKBHMvomBQt1D3sH2nGgghQ2qu1mWWNDsez5TFUDTbnNIQP2fSF6iLhxbrP6fXTUdyBOihtTAUMPYooc7i_nGydp-ifdWSetNoGq5w0uOUJ5wZaaFgbrAiTTivnvNAgqPi5VZXvTM9VrkKH0XE--OrMGZxRbJU0zHxTFlGUTK1EZ1-Yx2-IJLKfrP2FzEKC7OQMHutX-njAtj-OqmXIvewdzPpjXg72qHAlp1KPTPAJHfX6OHfO6HAXwaDbXMOYH7s8nkvWY7YvyNA4yIDKRgWYHACG3LyK7z4QGIlQTN-ieh4AmyiEEqQmHi2AE8tY5FkU5qmH7WkUaIkH8q0sGDOjoH4W1T3e3SSH91T84Q0UG75Mue3b-VDN7f3a0H-MMnycBXe7EB_XeEZ5daLX2MBxQOFVhFQvtA0Sodqg_RMGwhqpgQQEGxznPbucy9cuJJegaGkaqOt34J8NP14W2w0uoZj06RdJEGBK01HJ05C8nRdy23ZZTnb7d0PmYXYvC7BVNXm1QW0Qls0uucJZD7QiGqJBHYkESnuWHN0Su4HGR506xvgD-BJuH5Hwg0pVN1eHQX6AoZC8JKJ5GcNm6jG8JmTFX6OGcWYB1Kl8LQH_EcH2hXpzqy4pUGzfnCd4QU06pGYJ4oR7zOmHgH6at7S9HiYc8OigDebNr2eVb1oN0aIaXf2AjYe8gsYa9e6A20qYvBvhBg9aeZHqaLt4oOLJL2OFaE905mXLx7TJE4M01W4Qk6CimkI6AK9aGHHNxWT25E6nuHc-SIm2f0CKWR60cRelBA9ae1JNxqqX596naN7VUnJ14U0uxrcAq4Xe1YzPYlXe-4IziN29fuKE8rD4G-E29KuQtC0uxXAAo3J8H50iKEpRYI8g4fMf-uuYJ6wO9gv4Yh2vOOiGsH2DtAqK4L88zQzcYiW8PABtuqB5SHLJ1AO1PlWcfuYHXL74ne7DyFrH4QC6emYA1Kh_lgE8Yy35VUrHn4PXOr_azAV69VaiFM6CP4ZQNfOaYPodfqTV7gLFd_xubziIPEys-n8WlE5RbBt3aB7__kgdfqzb4MqBi92h_RMHL_GcQlUPBp7xt8lqE2t4eutwqxr9af6hZInkuWurc5liValJ8toKzixBJe_5xLtciqqA1fabZfjB0lXFNQcJ7bkyHP6DuvbPRNMfsb2njq1jZMJe1e3P0jbtd_HaQWjiXbxKDGyeMzCZGYMJzGuert1BJils66sgPfupX5CLBSdc2TJaqNfIwCoRGgjmD6wnSx5jtgt6pRIOOn_QAxsQ3Eu-iabfztOrNie6JdsdBBKQJwrVJ37kYgx6VRYdsyo7-dK8xtQXNNgSiZtC42WHu-tJJNVFklRC52FfNSumSoHNTO_hIqxjDnlv_0KbkrwTHHBqZWiMtelrR6Du5uB3CfQz4v-ansGzN9cfU-LWUbmV2c-zS3AtRay8QcR7zHJIQJEVRtfFb3bfN8OLVOzC_ZVfQeHpxbXq2gjODOejVYMzmyq3M3WFt1Up3l5ye_xOhrTbw5W2FypUKNYHC8uaah1U-bDMI-6S58MFT7ToPgIFRylezjnDdO7bKuPo6kfgYeMxUuNo64WITwqWVzPpoUN4dQbLmSprl9d1EavV3XmLN8TSruE3zMhZUiYIeSDxrvrfxYNHHdkwoUGAt2VukJY5adTAg41kNcrgbkimwgyDxx4hHekl8eNkvGqpxpoy9JmR7imadYoFBpIKDocX8eW6og6uWlGa0MEem31t40eMPcW8LEAuHy1G7aEkuQRd8CwZtUjQYhZPiKA9sfgbX3KrQKLBw3Hzy-7kcMmnSBLwDMXbWzdePywtNyBqfxFeIli8ACHrW2tReZAVXuOn2srzzBeF1rFhhoeHuwTuyWR3ZVhl-ZrHrEKZQIhUawGNtFLdEdJuct2D1rxrGyQhy3VFR33ucwy6-2yEIDNnS4SSAfZ-eELJB0PCNoWNYsenauggS2nI6-h_6k0vfDf3W9lPyaAAzeuDvTiOZvRIPXrDJSvGNtGmNB3fHmtOJFeciXiTu4HF5lcJjGxXjT9Co7nRymYdRzBUQ3nOOftD6M8vh9h7AQUeA225-RE7JVSZyJXcRvR1ieytD4nMxtYiJVzbM_DnH6mFoNC9QXLf1bffNjs7o2qHgDNakuwW0w1QjzVdFzfcuQsrM9xs78S17L8lDpfS1v32oNsAwqegsce46-inGmgnaX1Z7SIlPwmao51BE5dhHuAjqWH5Hz2d3HRp3_3yTYwkYVD0gxMTu8xqPj0rNb6IKKlbbcN4K2sLPhA9R5dC2gjBuXA1RPnI9ICdUIsGm6ahp5S3_NLDAGPmSF8rpbHQQxGQDTTjmLMbS0-MpLCBTkkKczNpATXuwfTOcI-JdmpuW3oxvE-vnRN9f5dbaovz7PxorWDbk7wsQV_h0cQEWF6AaMTYFvmCFo-IPp2gr9CZMNDvaC6jYnPFBmyQYHjhQozcYJgT4D-uS-DB-NL1GktxPQHG_oJz69AbqIVI4djmng3cCZFRLsVIgLRI2xCiYj0qbk2Y5wbHbiD-dhIHc3K2GvjUX2ZHW9wVf1NujIjj-bbQDe_BG41TO-GCgC_ZrJZuEdNbpS-YvmvOrm_rTKb9VKp4R2EbX1OqR2l4Pj0s4tKTPTsepwBRuLiJRC0DfUGSXXggf3_UX7FGJWdIIE-xfpDeDlv89VvkqYtPGKKawSRnjPPAq_h_yGNIo_awL_SECNSivrqkWG_ZPVo6iIqMepcKK3Tvz9FfStYvlCQEJzzhLDiIbcrfe4GjsR7U1DFk3aPfYTBsKJ2rTZjjtHlhpHQ2OgBEr9XjAfYeRbeArsAlvRcoUfdIKBPi6TF9rL7DSbvziTJgF0SNJJbbS9PEQgLPRtS05_zCxGK8vcheTyr2Kt1z2s-WdjkxeoL-yj56whxzFb73r1fx2GJvPb5N-tmXVNkce_CmPpZB-CYrwnNVYdN49M3yxJuNk_D4wepMdbKe0vV7tB3ekykXrFtYCGekdoXCA7_NIYF5hR_IQ0vjUxrBHzju4qxRbPgkYVSpqw7Knre1hu3wO0H0iHYO_8ToCOSuHLeVuKBfTSUVY5Ni5Ahb-gnz6apG7j0ttR0-YvR3Q7Pa5rjCrw43BOTxwqNIx3HVk2NblYRJtnOnYqLRfObtVj_IR-8RpPE9BRFuAFrTuqauT_1iniZ6_MFcPmpiE_KdxN29cSyMBJsCvitDti71UklcLs6ZBvi_40iltDPbQNf9B6GxspBabX2qrZ3RCPe5X8sazAga1-Bi_qHyIwfcHRJvlFTmLNcC2AyUh4NhCl9IQkUElRdwaFbi1mpGYJfAAlsNrSaFvb_MPMD4owwtb5J5jkTZRipNFN_DVEzsbXo23x0RAJczyt5K2DVEnBdMgXIp1yVcjBdAQKyM5XAt3PP6ljt5vKrjT1yTQqC3qZXT3M-r4YMTqGFt5govI3B_tLLpMGniCrfg-ypG_qhULQ5lAfXd5-nLtVDjP9sB26vYMnpLiBtb17FfuU7L0alXRmA-PYvuhg1QjhJDZFXtOnLphQEdqkCgL9A5bCkSGwf7c-T-coBI18RdKb7VbYJ_W3YlTcNo_m00 \ No newline at end of file diff --git a/docs/logical_data_model.puml b/docs/logical_data_model.puml index 3629d5b7d6..0dad1ea4ab 100644 --- a/docs/logical_data_model.puml +++ b/docs/logical_data_model.puml @@ -357,10 +357,10 @@ class GoalStatusChanges{ * newStatus : varchar(255) * reason : text * updatedAt : timestamp with time zone : now() - * userRoles : varchar(255)[] context : text oldStatus : varchar(255) userName : varchar(255) + userRoles : varchar(255)[] } class GoalTemplateFieldPrompts{ diff --git a/src/migrations/20240628145950-goalStatusChanges-historical.js b/src/migrations/20240628145950-goalStatusChanges-historical.js index cfc126accc..4d6b8ce2ef 100644 --- a/src/migrations/20240628145950-goalStatusChanges-historical.js +++ b/src/migrations/20240628145950-goalStatusChanges-historical.js @@ -10,6 +10,10 @@ module.exports = { type: Sequelize.STRING, allowNull: true, }, { transaction }); + await queryInterface.changeColumn('GoalStatusChanges', 'userRoles', { + type: Sequelize.ARRAY(Sequelize.STRING), + allowNull: true, + }, { transaction }); await queryInterface.sequelize.query(/* sql */` select create_timeseries_from_audit_log('Users'); diff --git a/src/models/goalStatusChange.js b/src/models/goalStatusChange.js index d5d998b647..394eb82eb2 100644 --- a/src/models/goalStatusChange.js +++ b/src/models/goalStatusChange.js @@ -48,7 +48,7 @@ export default (sequelize, DataTypes) => { }, userRoles: { type: DataTypes.ARRAY(DataTypes.STRING), - allowNull: false, + allowNull: true, }, oldStatus: { type: DataTypes.STRING, From 7e4705bf911deb3f72d943a77785a1edb7ed9625 Mon Sep 17 00:00:00 2001 From: nvms Date: Mon, 8 Jul 2024 13:45:29 -0400 Subject: [PATCH 07/10] mv migration --- ...storical.js => 20240708153514-goalStatusChanges-historical.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/migrations/{20240628145950-goalStatusChanges-historical.js => 20240708153514-goalStatusChanges-historical.js} (100%) diff --git a/src/migrations/20240628145950-goalStatusChanges-historical.js b/src/migrations/20240708153514-goalStatusChanges-historical.js similarity index 100% rename from src/migrations/20240628145950-goalStatusChanges-historical.js rename to src/migrations/20240708153514-goalStatusChanges-historical.js From 1601fe543a227fd9433365e33089eaae8d8ab90d Mon Sep 17 00:00:00 2001 From: nvms Date: Mon, 8 Jul 2024 14:14:59 -0400 Subject: [PATCH 08/10] make reason nullable --- docs/logical_data_model.encoded | 2 +- docs/logical_data_model.puml | 2 +- src/migrations/20240708153514-goalStatusChanges-historical.js | 4 ++++ src/models/goalStatusChange.js | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/logical_data_model.encoded b/docs/logical_data_model.encoded index a2668be651..5654677a8e 100644 --- a/docs/logical_data_model.encoded +++ b/docs/logical_data_model.encoded @@ -1 +1 @@ -xLrjSzmsalxENy7IVaZY6czjaijLdMhlQcLPJbndoof9pjOcbL919CH1p05c0L2Eaij_lmB05m04IO3ao7Q2JzAGG7VpGQFHwCRBFnW7b5UxCadJpr9mJr2UxYcvBU6EfUyHtwO05oNCquoIzoozWv0dQShU8Rm75EpI4c787_Om9PHlYV4gAm5ZwMz9cgRfCq9pI4z9IMZwbw-__i-J__gRzlnwYx9t63AMVfMawUzIb5DH6x8ahUcSP1pT8_vm2JEqHn1pzbkIFabHdXwd27DOG9eUftyl88OKS9Z_Jv8M563-qYnmUVRYxFBi_FJiAZtwLhndHtz5UP8IleNq37F47qPgl6bB8LXNV9A2Lh8zeMFyJeo2RVsCGY7m2K-FKuvsa76msolinS_qLu9XUfnYylxpBqJvQf_xb_yzIMpy1FEJ_PwIUqYdGLp-VHM3TAJMMmRfus2Hvh24KwMJ51Ckwd3u2qzInW6lM7gSGbpjXj0y9MK9RWa5dFov41t0umKguMFWS8TAE59BYX62W-_t3tttjmIKBn0iyql8zWIp6I084jv0YCBj1nO4bDTmjoy1XrA82qfs-r7xvwvn6CXIMcDITwqVVnf3yH8oKj7iKG6aDS-HsgrOXu584PTDqPWS1PFuJ_wy6O7gngZ-Mv9Yi5Euo-U9v7H7nSEQf3-rl__VqwTZpJJSajCjI2Wg40RbHCiPRRNKSXG1lDPjuwma35vLR0znVagmw0hjOAE_kuI04TmCF2d4-NCWnoN194aHary6ouUp774eFkMMa182KUKEb4oMkUGSx45BH2X4DxB9bclVjGFTFQ3P5j3Fl_hccoyqdMdg3NJQDxS_GodGAQde7CFN4l1kpBP6rrAIzmY1MhWFEJQsKiyR9DU0wMCRDbi9vrlzDM3v1Er_7xdU8A2RVrwAFnnSK7AFSfWFZ0DJL1s3GR_AH5DVaptAFamxSy5wfBuIxODq0F_1qWU8_gSl7JR9BAw7dTG1-aR440nvlfmzphPVUAg4_WvIs8sjWyCag_O2g6iH2Mb8oVxMyjIwtSHGEjyAXZVe9sZpXatTsUch_prjNxzbC4zIaEU88u91UKwu22TbIXV4D1-xAhJsqcqR_KtYX2MSRjqICFvMOVZimM-w7n8OeB1018ysl2ZmIBtuIIgYKKZsn4wShn9Dm-kuNzt7pFvdDNFRwu2ASqqwvQ3CAZ4Dpg-CU4-ZBPtb420GUadAhf_di4Jta3wyXdnByfveUKK1Ln-MmmpjGFdvrvillt2fQpSrxllxEw4qiiZFZE1ReHwug41XOo4gbx00cL8PKnQdpcjSSRMxXVJDtGMW76LeB-AZNOCawHuKK204Qp744wEaBScUaeA2dMWprslQ6D_-YtzNa76f19Qb5V5g0nfMtUuG4xfZDPvymJaqaUI05f1VaBreSA7W3lRIHN2-uC2XV-BDFQAy0kNpMXbSMjhQUprUA5GftDBh5BojlX6cRCq06PqCIF4EwmlfOab5cKHZ1_RicepCyYo2ZVpte4JvYr74lg-BpBLwzHJRrDadeX_iGG4uV8DVGrf0OxhEQGKF5CpMGDxjAemogVAlIE4x-yoiUgEJQxFeHpJVx8dcyUMq6N16XyWc6NMeqBmebmCEEhiV_kr-0Pd9JhKeT6A4dfwaUp7OCyxUuBVxaW1d-Egm7UBi7cAkxE85Aebdh991ET2CjF2LAg5HRZ63z-FQP8iqArePalGyL7UpF-GSAD_i568EgUm37XqGMbJc88SDpYCKJ14V9TDcodRk7ZX2lMWXi8lKODlu3GAwjw5vXCBnyVxmqxUNbsVdrpVNBr-VNLsVlBvmsJRo7fk8kwSg0T0usFQTwJt9x0zh4VCUAZtxaXWEhz2lqFoQT_31qVnDk4V8CA0XPeOwkAyAun6Qlyui1slKAHZmnK9isgUsWg14-DqpaBrhzSj0EpX376J-FrWMcE2JPh9zgKVCv1lhoUACSMYEE0J2GyR4t23fFey9LgWtv1LFMverdieJEpF3uk4Lsg4IKCGVlgMaslkvNE7wRx6Pg6gLFb2O4_wIbLKEyvTtvuIVv3k47Oty-mXOqq3TXIRHvyrmriL56VVl07k9vUmS3EIoUz512omv29vk0IvMjmS7zG7X-ojtHk595nnh9arXGvKTkYHbFi1go6UKBsG0g1_lCj1t3H-UZT1KzHoWmWqkpKMtC7sjlHHHGzPCrNWlvG1L7TXLzUx4vnife2t2MWFict1Z4swjDRv-AWEgJboxh6a3mu7H9JP3dtpVx3OATrWRLg4km5myFeaqcHEOgU5T7zCdAhTZUw-Sgsccc-GG2QYs72AupSSq4wCjO5kzqzUIdfkXAVtnQvAZExHQ8ygCNfrncMZfmVcxdzCqNzbL6F02K8ZvjnyyxdHuVxcMv7i4z8IUnoIlloBl1IMxgnsWd6qXvDSSN9G0wnEVyGLvbBjNCYnTg2UHFvUPlLS8lrjttuH_KnQT6C4ZRLXeLydN-qpf0dqRy6sX1kfm_hJXCZOGBWiL0emhKBweS8vmyPfWlksHp7BawbbrOxXUTNrYk2sb7a1tD4k-kzh3384ICNws0wYSAkGaXB3CbyfnO58YlR2r7AZENq-9r2lc54fFNO_OVv5VFoMvixwZvsjgJwhz1mdbJSsoZNdr7oYO9uCORcFZy3-3h6eOfWVojFtY3lxihIIWd-r7xAAwBL5chCBR0WhpVo9fjCoTMIzbRFyvuC0tRg-o0I_6azGlsqB1e1i1-lGu_UpbyxFpwvSlNfuz_-pu-4YwtvRKDwhEaJzACiUExqYNqZ2yNGepGlDJKgbbEdKHbctX3lGLM_jOZwYJVt9V8Js9SdY2dBp78ejymeNphYzPIe_JlzKp_WmoDbp0lv7cDX3VlnXj8mlzDVjT3kyGHdgSGURQ80Qt9Hp8lT_n_HNa7E72g6DrOQ51UJKZTYBKvZLWxzgAUy3xKBm6g8JKNB1nAp9YtBr0IXkvxHLJSxEMxTW2nSWl5qZOIx-Uf3-JMyTgkoTY1Pe8ZYnsrYXaLSdRHNUioeGsQnPHHmnpY07Ee0zidAAYWBHTOTgMqdkbHRFjdO33Wj073V8PArhab5kFcVcF2rSAXhkgT291CEA48bp8hUHNrMu7A8BUGxKnLN6DrTgKwkYlHrgT8pKPk4Vm_SlSJQ0JxbAMQwWqjOw21XWvGJmDAltMDphlkQaDC4O9sRsX1S3eLtl1wpUR__3sj-2Eg7KHLsfDVO-CCR0Xp3Yjil4QL5g0Pcdcj0Sk4NeUDEVi6lG5abCgRx_mJfMVrfIQSACgRRsZLcKXdARohIfegAseTzIDWYC3T4yQbL9eg3NrZyBMGqXATU2y6KQiODt7eEE4mUdfRKOeXL8VdqEGlq8OBezir0himRsD5UbxF1TgydU8YTzUlk1oLGvNGINVmuWcFg8jlZDaQbb-72hifsmvv93k40P6SileZnXGiQdXljCqHvvjHUNJ6tT5lxYlQuSAIOv_bvTJSeYECNFY_gbeyYeQkBRIsKRoqLJkYWES0ve_dbF2QevUIjk8fobgNVaJSuOVKJV_S6RneFOm6i95RVEeTYDEG-8qn35ZNT7AsJFcmziuDRseFySx3hLuKl-9HRDKkMkqWnzyf7_s4AmRJRb9-H_3S6kjiMB7iNJXiVhD7yVNqRzdRLUdXrNqT89Rnczty6A3k6ghYiNUzVA2fid-Q3CcUy6T5P7Ir9LKF2FwoZfrvYtd8DlkJ9W2KmEg0GqVCK3Z-eTNE7JGc0UlQ-bwa_73sxgGeCEguGB4HNBR_DGblUJZcmWWRaPe_NfHKQ5SP79dwQ--eQHjx7cxkp-sdTdXowCimPOUi33mdOTSMzLz2lo5Nt6u3zbFWUiwOqrN5_cqzb7qmEZleI3SjOTYegBSFz4hOpV1OvpwvgrJ-adewkVrdAKQ6TdjXNbnZdpQoR6FltHrte66Vvmbh3DsbdqistQkhJrxnlCFi76dZwdVDXs_3JRwjfmvPt-kiQDlmHqPeRtWqFj-j6soyyu9dRrjw0vHnazhW-XJzYM-4BiBvEhLwTBdX5-9IOQV7FMtUUc_fyoYgBV8eh2tnAAmhy23Uwc6DazfjgJhoBechpGJypWhRjufunTYpOOyUielV15cn5b6HWVOA_7-8xwVv49jqBc0b16CORdKMRVf6GSiG_Emaz0lx6qKgHUm2uQzav7KGQJBLXV3kpjbxoV37z2v-qaP7fSoo_xjUh6dy0xzuZX6-SxrkEcUxdrFTLkuDlmTOblgV6Uj2s1PfxAw4MfFJXtTIEPuyoy8QEZciP5hjJwKQHlRQ4X7JmEk8BAUYHqTdnqVYzyW4yVAtWFwW72X0r1usauyThpQfJguzenIOn8pj6bXtSdjpdq2CTd3zWXYyqrzpEupaZ-qo_6RKvUS3vtx4YkAHl3mZoZuR_VP0OJdfEPesTQIteGwDKPzKwljEyY1UInTyyGlWBT3E-XKIxUN8GvOyRuD8UIqte_XdWFVqurzkIFMxR4rHza55iVRTQ_AqZcQsSv2z_tABpg0xvX3bb6qT_RgbJtB_ecclZihG_O6iXwNUOUi7aQF-mphlIO85rrUwS-EYVUfhdEESbtpbD7PHuTs7uzsLncXK1wV2RBjgbPEX8M-jFnO0iglx5DHQn_enlRMc92iTzz0SFiY3azAwBSLzH3f69_J99waEyYOkWQXpSsfmrMRdRnDPh3Tnzjzs8qesYJZFSvcc7jIc7L6wpsW24XtqDoxxkq612Q53Zae3ezzRvlJurRsQpvyva-mg3T7lxc7bA8Shjr7gex5H9Lcb_QXpcUy1sK5-va3dRMFnifAVLKCsC8EkYtGjyCd9eUtvFVjANngFl21h1qdxw3Bb-EkgOHlyxLdQWRWCGt0bkpWvO6l3zeoUJiD7J1XOlhsYXHg6hX-fCOTvof1qIMDq-FqvFBov5y__jICAnAy6rdgI9mB83xXfE9RGcK4sN5oGFEHhgjwd46XBS7mt7a0b972rYGH-Mg0x-M15OXnbB5c3VcDy2bkTk8waXjIcx4a_NS5IiGVRW1Z5HKBHMvomBQt1D3sH2nGgghQ2qu1mWWNDsez5TFUDTbnNIQP2fSF6iLhxbrP6fXTUdyBOihtTAUMPYooc7i_nGydp-ifdWSetNoGq5w0uOUJ5wZaaFgbrAiTTivnvNAgqPi5VZXvTM9VrkKH0XE--OrMGZxRbJU0zHxTFlGUTK1EZ1-Yx2-IJLKfrP2FzEKC7OQMHutX-njAtj-OqmXIvewdzPpjXg72qHAlp1KPTPAJHfX6OHfO6HAXwaDbXMOYH7s8nkvWY7YvyNA4yIDKRgWYHACG3LyK7z4QGIlQTN-ieh4AmyiEEqQmHi2AE8tY5FkU5qmH7WkUaIkH8q0sGDOjoH4W1T3e3SSH91T84Q0UG75Mue3b-VDN7f3a0H-MMnycBXe7EB_XeEZ5daLX2MBxQOFVhFQvtA0Sodqg_RMGwhqpgQQEGxznPbucy9cuJJegaGkaqOt34J8NP14W2w0uoZj06RdJEGBK01HJ05C8nRdy23ZZTnb7d0PmYXYvC7BVNXm1QW0Qls0uucJZD7QiGqJBHYkESnuWHN0Su4HGR506xvgD-BJuH5Hwg0pVN1eHQX6AoZC8JKJ5GcNm6jG8JmTFX6OGcWYB1Kl8LQH_EcH2hXpzqy4pUGzfnCd4QU06pGYJ4oR7zOmHgH6at7S9HiYc8OigDebNr2eVb1oN0aIaXf2AjYe8gsYa9e6A20qYvBvhBg9aeZHqaLt4oOLJL2OFaE905mXLx7TJE4M01W4Qk6CimkI6AK9aGHHNxWT25E6nuHc-SIm2f0CKWR60cRelBA9ae1JNxqqX596naN7VUnJ14U0uxrcAq4Xe1YzPYlXe-4IziN29fuKE8rD4G-E29KuQtC0uxXAAo3J8H50iKEpRYI8g4fMf-uuYJ6wO9gv4Yh2vOOiGsH2DtAqK4L88zQzcYiW8PABtuqB5SHLJ1AO1PlWcfuYHXL74ne7DyFrH4QC6emYA1Kh_lgE8Yy35VUrHn4PXOr_azAV69VaiFM6CP4ZQNfOaYPodfqTV7gLFd_xubziIPEys-n8WlE5RbBt3aB7__kgdfqzb4MqBi92h_RMHL_GcQlUPBp7xt8lqE2t4eutwqxr9af6hZInkuWurc5liValJ8toKzixBJe_5xLtciqqA1fabZfjB0lXFNQcJ7bkyHP6DuvbPRNMfsb2njq1jZMJe1e3P0jbtd_HaQWjiXbxKDGyeMzCZGYMJzGuert1BJils66sgPfupX5CLBSdc2TJaqNfIwCoRGgjmD6wnSx5jtgt6pRIOOn_QAxsQ3Eu-iabfztOrNie6JdsdBBKQJwrVJ37kYgx6VRYdsyo7-dK8xtQXNNgSiZtC42WHu-tJJNVFklRC52FfNSumSoHNTO_hIqxjDnlv_0KbkrwTHHBqZWiMtelrR6Du5uB3CfQz4v-ansGzN9cfU-LWUbmV2c-zS3AtRay8QcR7zHJIQJEVRtfFb3bfN8OLVOzC_ZVfQeHpxbXq2gjODOejVYMzmyq3M3WFt1Up3l5ye_xOhrTbw5W2FypUKNYHC8uaah1U-bDMI-6S58MFT7ToPgIFRylezjnDdO7bKuPo6kfgYeMxUuNo64WITwqWVzPpoUN4dQbLmSprl9d1EavV3XmLN8TSruE3zMhZUiYIeSDxrvrfxYNHHdkwoUGAt2VukJY5adTAg41kNcrgbkimwgyDxx4hHekl8eNkvGqpxpoy9JmR7imadYoFBpIKDocX8eW6og6uWlGa0MEem31t40eMPcW8LEAuHy1G7aEkuQRd8CwZtUjQYhZPiKA9sfgbX3KrQKLBw3Hzy-7kcMmnSBLwDMXbWzdePywtNyBqfxFeIli8ACHrW2tReZAVXuOn2srzzBeF1rFhhoeHuwTuyWR3ZVhl-ZrHrEKZQIhUawGNtFLdEdJuct2D1rxrGyQhy3VFR33ucwy6-2yEIDNnS4SSAfZ-eELJB0PCNoWNYsenauggS2nI6-h_6k0vfDf3W9lPyaAAzeuDvTiOZvRIPXrDJSvGNtGmNB3fHmtOJFeciXiTu4HF5lcJjGxXjT9Co7nRymYdRzBUQ3nOOftD6M8vh9h7AQUeA225-RE7JVSZyJXcRvR1ieytD4nMxtYiJVzbM_DnH6mFoNC9QXLf1bffNjs7o2qHgDNakuwW0w1QjzVdFzfcuQsrM9xs78S17L8lDpfS1v32oNsAwqegsce46-inGmgnaX1Z7SIlPwmao51BE5dhHuAjqWH5Hz2d3HRp3_3yTYwkYVD0gxMTu8xqPj0rNb6IKKlbbcN4K2sLPhA9R5dC2gjBuXA1RPnI9ICdUIsGm6ahp5S3_NLDAGPmSF8rpbHQQxGQDTTjmLMbS0-MpLCBTkkKczNpATXuwfTOcI-JdmpuW3oxvE-vnRN9f5dbaovz7PxorWDbk7wsQV_h0cQEWF6AaMTYFvmCFo-IPp2gr9CZMNDvaC6jYnPFBmyQYHjhQozcYJgT4D-uS-DB-NL1GktxPQHG_oJz69AbqIVI4djmng3cCZFRLsVIgLRI2xCiYj0qbk2Y5wbHbiD-dhIHc3K2GvjUX2ZHW9wVf1NujIjj-bbQDe_BG41TO-GCgC_ZrJZuEdNbpS-YvmvOrm_rTKb9VKp4R2EbX1OqR2l4Pj0s4tKTPTsepwBRuLiJRC0DfUGSXXggf3_UX7FGJWdIIE-xfpDeDlv89VvkqYtPGKKawSRnjPPAq_h_yGNIo_awL_SECNSivrqkWG_ZPVo6iIqMepcKK3Tvz9FfStYvlCQEJzzhLDiIbcrfe4GjsR7U1DFk3aPfYTBsKJ2rTZjjtHlhpHQ2OgBEr9XjAfYeRbeArsAlvRcoUfdIKBPi6TF9rL7DSbvziTJgF0SNJJbbS9PEQgLPRtS05_zCxGK8vcheTyr2Kt1z2s-WdjkxeoL-yj56whxzFb73r1fx2GJvPb5N-tmXVNkce_CmPpZB-CYrwnNVYdN49M3yxJuNk_D4wepMdbKe0vV7tB3ekykXrFtYCGekdoXCA7_NIYF5hR_IQ0vjUxrBHzju4qxRbPgkYVSpqw7Knre1hu3wO0H0iHYO_8ToCOSuHLeVuKBfTSUVY5Ni5Ahb-gnz6apG7j0ttR0-YvR3Q7Pa5rjCrw43BOTxwqNIx3HVk2NblYRJtnOnYqLRfObtVj_IR-8RpPE9BRFuAFrTuqauT_1iniZ6_MFcPmpiE_KdxN29cSyMBJsCvitDti71UklcLs6ZBvi_40iltDPbQNf9B6GxspBabX2qrZ3RCPe5X8sazAga1-Bi_qHyIwfcHRJvlFTmLNcC2AyUh4NhCl9IQkUElRdwaFbi1mpGYJfAAlsNrSaFvb_MPMD4owwtb5J5jkTZRipNFN_DVEzsbXo23x0RAJczyt5K2DVEnBdMgXIp1yVcjBdAQKyM5XAt3PP6ljt5vKrjT1yTQqC3qZXT3M-r4YMTqGFt5govI3B_tLLpMGniCrfg-ypG_qhULQ5lAfXd5-nLtVDjP9sB26vYMnpLiBtb17FfuU7L0alXRmA-PYvuhg1QjhJDZFXtOnLphQEdqkCgL9A5bCkSGwf7c-T-coBI18RdKb7VbYJ_W3YlTcNo_m00 \ No newline at end of file +xLrjSzmsalxENy7IVaZY6czjaijLdMhlQcLPJbndoof9pjOcbL919CH1p05c0L2Eaij_lmB05m04IO3ao7Q2JzAGG7VpGQFHwCRBFnW7b5UxCadJpr9mJr2UxYcvBU6EfUyHtwO05oNCquoIzoozWv0dQShU8Rm75EpI4c787_Om9PHlYV4gAm5ZwMz9cgRfCq9pI4z9IMZwbw-__i-J__gRzlnwYx9t63AMVfMawUzIb5DH6x8ahUcSP1pT8_vm2JEqHn1pzbkIFabHdXwd27DOG9eUftyl88OKS9Z_Jv8M563-qYnmUVRYxFBi_FJiAZtwLhndHtz5UP8IleNq37F47qPgl6bB8LXNV9A2Lh8zeMFyJeo2RVsCGY7m2K-FKuvsa76msolinS_qLu9XUfnYylxpBqJvQf_xb_yzIMpy1FEJ_PwIUqYdGLp-VHM3TAJMMmRfus2Hvh24KwMJ51Ckwd3u2qzInW6lM7gSGbpjXj0y9MK9RWa5dFov41t0umKguMFWS8TAE59BYX62W-_t3tttjmIKBn0iyql8zWIp6I084jv0YCBj1nO4bDTmjoy1XrA82qfs-r7xvwvn6CXIMcDITwqVVnf3yH8oKj7iKG6aDS-HsgrOXu584PTDqPWS1PFuJ_wy6O7gngZ-Mv9Yi5Euo-U9v7H7nSEQf3-rl__VqwTZpJJSajCjI2Wg40RbHCiPRRNKSXG1lDPjuwma35vLR0znVagmw0hjOAE_kuI04TmCF2d4-NCWnoN194aHary6ouUp774eFkMMa182KUKEb4oMkUGSx45BH2X4DxB9bclVjGFTFQ3P5j3Fl_hccoyqdMdg3NJQDxS_GodGAQde7CFN4l1kpBP6rrAIzmY1MhWFEJQsKiyR9DU0wMCRDbi9vrlzDM3v1Er_7xdU8A2RVrwAFnnSK7AFSfWFZ0DJL1s3GR_AH5DVaptAFamxSy5wfBuIxODq0F_1qWU8_gSl7JR9BAw7dTG1-aR440nvlfmzphPVUAg4_WvIs8sjWyCag_O2g6iH2Mb8oVxMyjIwtSHGEjyAXZVe9sZpXatTsUch_prjNxzbC4zIaEU88u91UKwu22TbIXV4D1-xAhJsqcqR_KtYX2MSRjqICFvMOVZimM-w7n8OeB1018ysl2ZmIBtuIIgYKKZsn4wShn9Dm-kuNzt7pFvdDNFRwu2ASqqwvQ3CAZ4Dpg-CU4-ZBPtb420GUadAhf_di4Jta3wyXdnByfveUKK1Ln-MmmpjGFdvrvillt2fQpSrxllxEw4qiiZFZE1ReHwug41XOo4gbx00cL8PKnQdpcjSSRMxXVJDtGMW76LeB-AZNOCawHuKK204Qp744wEaBScUaeA2dMWprslQ6D_-YtzNa76f19Qb5V5g0nfMtUuG4xfZDPvymJaqaUI05f1VaBreSA7W3lRIHN2-uC2XV-BDFQAy0kNpMXbSMjhQUprUA5GftDBh5BojlX6cRCq06PqCIF4EwmlfOab5cKHZ1_RicepCyYo2ZVpte4JvYr74lg-BpBLwzHJRrDadeX_iGG4uV8DVGrf0OxhEQGKF5CpMGDxjAemogVAlIE4x-yoiUgEJQxFeHpJVx8dcyUMq6N16XyWc6NMeqBmebmCEEhiV_kr-0Pd9JhKeT6A4dfwaUp7OCyxUuBVxaW1d-Egm7UBi7cAkxE85Aebdh991ET2CjF2LAg5HRZ63z-FQP8iqArePalGyL7UpF-GSAD_i568EgUm37XqGMbJc88SDpYCKJ14V9TDcodRk7ZX2lMWXi8lKODlu3GAwjw5vXCBnyVxmqxUNbsVdrpVNBr-VNLsVlBvmsJRo7fk8kwSg0T0usFQTwJt9x0zh4VCUAZtxaXWEhz2lqFoQT_31qVnDk4V8CA0XPeOwkAyAun6Qlyui1slKAHZmnK9isgUsWg14-DqpaBrhzSj0EpX376J-FrWMcE2JPh9zgKVCv1lhoUACSMYEE0J2GyR4t23fFey9LgWtv1LFMverdieJEpF3uk4Lsg4IKCGVlgMaslkvNE7wRx6Pg6gLFb2O4_wIbLKEyvTtvuIVv3k47Oty-mXOqq3TXIRHvyrmriL56VVl07k9vUmS3EIoUz512omv29vk0IvMjmS7zG7X-ojtHY5qPB8ZbQJC1oYtGJTLSCXZb2za-ASVxJAmTmqUdatGLFKSdiBDBSr5fp0zhRqKKPkCceaQxuKSeAh3kghUdVXy8m6qHLXhZtqJR6o2hRM-rqzbEDM9QvSpRM0uCBh4PkYJxPlTHk7kQiCgr06OYySdaIHp0ZCrkEiZ-aJbTcJlbNCrpNIJ72Bzr9P31BVPc6PQj0LigtVwMj9pCp2bFtvDSdI7Lcj4cS-hyoqJBJquU_TpcUOhkme2NW0ACV_sWqUT3kyjrv9yZu2UplEOulNNuxsWP7Ur0vIpBOJyceEB4c1zsZE-78zozpg6fSlq9FBdCg_t2k5tw-wQy6_AeXCZUAGD2-mg-NgVAJsYRmE-BTH07SwRDXp61i9btYB0k0BbYmhd21Ul2URR7iaiHwwULJU6wrNN9uRRKke1TCUovBkhFSmGA17ZPpk0ogb2Ja88osof70Sc9T8BMuk1wkprb4YzOawXzCJrYFqNsVLJaZlhEtg-flQasd-GGDxK7DkOLV-1GdaoXE4sDWx_CyYgXc5w84_RB-hWpzvA0VhPViGkgjiIPSOQl2sWCFydaaRBt9VrKaRsdmCEVAFsAXVmOZn5_R8j50ow4PvFZzFFNZu_Exz--UBbsVFFZe-FfFjjINsZwXpveoGpxFYET0aDmzkbC2CqFoMLMgHJ5s7P5kv0Nx6rZ_M8EVcdzXNIaoY7fyV9Uonoo2TSEE_wWgNqEFrRFUFF86F31VmRQMu3yVsBqJQoq5-pt-Nm3c6annbafWrYS5l2WSpx7TzVGSuHBemwLXSM6fHNCs8dGcrU0_QkhRW7l0_5Qu1AICtb6hSY7yRTowEqaTjUBpKtPzcEBL2C_79vXBtmwqdwCxbrhBLx8jQVYU38OcUDGbQLl5ronwfCQBDc4NN4C8SOu0pwmCOfAWf8s_MbRIczLreqszu9E2m8VT0Wdx6UHKwvzPYP_xXmfM2ugqed4WGZJYZ2XTn8VbNjTe0Yw3rK6rCLrrYjJQcE_dgarJbIau5x1D-_pDq4Ek4kPRc6IbFhA6Y0aHF4qw3IRtrZyvvRsW1Zb93T6re0Z7wrbxj-i_aFRtyBxeXQ5N6bLjJto1W36yACqoeRhq6b1MWMPavxu1AXvq5ppgv1No0vfVBs2-zK-MbDgGatgjBMEsfL5i9fAj-gWeRQYdf7tIWuCa3tf54PXePQK_yeR3M4f5G7pfjXn0hMVGmwJXYSdjvcX58ezV4v1FahXE7oo4Qjm1xSsrYHliDpeIP_XvZuxUKBBbVbS1LKyZsCQE8Zsk8xGwQMvSUXmdxAbaCEwGvXO2ItZFw80HLR6kuxJNFasLPKFhrnL_IB-xfsg93a-7TvEIM7w1Wp9-wVYYQlee5hAvrj91zDvQuum3cW-UCv9QpcwAMqZNYQejQLFp5d-15rymzd5Wzg3wCXNDGsZsetuZGaJaCSCzOLhPmzOpwyZLFJY_fplEDGYoVrdrWqIvMxHZlumKVwPm_1kj6KcvJ_CGotrXehTXnB5nwht_nnV1tzUzPsTNfOHKydk6NyzWOlDeYhjgfO-rqlBsYQx8ysOx8Nt5aHAKrTISKpeg-iKoVUSWwoxSw4AJ0re1hGy143DAv_T8L31urvyBgMhZSPFxoj2mawh1ekG5majyrFNT9BFhw90E9cXDQl5nKLoaKcTvR-wljBsiQUjxVxOzkN7RuyoX9iwV4A0zzvoBLLtQV0N_WLX_kG_HIuhZFMT7MHJsiVHG-C_XuAmbrxA2OgolqJlJ9s4pp6cM_UEgMVWwv-NizPgf6HtLwO5-V8fvqR-_XBL-STP_Z7MS8wOsVPnx9jvzhQisSy_m0RT_gO-ctJyTjWes_BcNFovnex-XRSa17Q2mwzxqVRDJllbD3PsuRk46Nyj3Q8FcLVuWknkq2kNfqkVKxubPXa-CbHVvkN_dlAB8fwYomAUqii2liAFBYNQcZpb6PBkewiQ_9ACp6Fa-BcdJ5-8TPio8Ed_C8NOKQSPMHqWBqIxp_Ysqakr0QT2qWPmHYMIvrrcvvnl38qZpe9_SBUHf5w0RjWs3iNIHr3kcnrCRoxK_P-Clm1dRkVbE5nARFitwuNUmhlq2-EGvJlN8-RxkdUzrItXMl3to6sfSvtrhe0bdKcgnkXzjpKqOraZZV_We26RXuRkLJhGvcsiOs6TFGiu0eYwvdOqV7PyR7u3J9ngEmze0y85pe0XQVjn6E7grsgOslFA3KcCKER5jQTtExSvm-JFMmF8BOF0f7IFYFvGxiSlpbpoVdGkI-necW43_-8Wlzsdnr0U4vgZfPjBUbDg3DZr3Urshw379Y7qZLF_09uExI3JhLqUndYW1Nlkn12pkhz66uvy3tRs9SxOjqUMtEKNM1nl5ttgYoTevdjB7JVh_oY0_YEEMGPHNjdhrxPi-oVP-gxip9aRo3hSPbtnEfXzBZFiDvhWd3HvPN-x9Xud-awvo3NDSyOdNrmQFVnQ7UL4GhbuPaWswvgvKHOw4lBZoMW_Ce-4xNsWMviRuq9oNgt3GItB-Bmf8H-Mr4FaOxnEKtYIRg3ZAbB4DhSd3fQjTd9ssG6stsytOVTYA9DCjxZR8Qv9uLP9xJU0ug0T0VDlUlURa1WKkYGW-BmsFUsEJrkPR_cmsV-18jwS_IRUqWfok7QVQJgM4nKQNPf7-fqndjGLh2VET1P-sYihDHNnO0jxA3R0dqxV5voU4j-tvx2f-O37yZQSV8EkdmvxffA-3PVUw9c01xJ06p93buU-FAWBPDtqz014oQcRwz8eQQ1wqTgt76k4XHTqZWzJaykBq_-zUDFpRWYmRkHfOx4kG3Y4quglYLKHf0T9mSq7-cwgCSP5DeI3C-T1q0PAMnD4f6l1lXU7bY164SPQzQGtmYVucOdBYEv8RKPIz9_Lw14_E46C5PHiL3a9WTiUqi0RK_40gMgghtW522CS76ZrbCnxLsJ7TTbagbm-Q1HlERMbQM1sQMtjo2cV4ztQcd68ekvjrFySFAydk9vWDBD1mdj1HX-E7c1IWwfNqgzsc7d75SkfngzL-27arSdzbLT7Y4muPlVQ2Nairrv0rZlqUr3xr47vCJu8Sh-8jbKbL8D-KXVpj1XQ7dK6Bw_eUJzZJcD86NkU5hFsMuOAXmjySfSaL4dEMc4QHIcWPKX4Qe-L5Pe9aBKXsZi1eQ8bnilHnW_GkM6Aa8q2j7mDV4HhH6qebttnoeQgp2yxB1Z16i4h8ZJA4wnxtd15E6nu1cv43a2P0DatP4S0L80ZTvl745oWHG1wW4KPoKEM9u_V-K1IHxmORdrOUAQSO3p6mwANknP59OWjfys-CrgdyiDog7Sfz9V2wdUEvDgwZZq6sVcPGAVYRkaenAvG1hTE1mXSq4M0R80YgEy0vIH6vqZG0r0CGKmXL2Sou-0CtwJSSHf0AU8aGiZzzt54Q06eF4BXYDEDavZnpf4j6oquZZd0L84nm5E1CK6PV2ksOXFYqz4fOVAyCsb4Q4MeQWyWz14L2nK1gz1ZV1qy4He1g69i5YmX5n5-gT39kJAqJyTF9Fta4QSJ9m6Rj2CC3bXSbpF694QGSfzbs24R1gog6AJU4Mjya79SIb0H6e8gMYhWh2AHceIg8ZG84Bkk-OYIYPAGnVPHPnSE4LbyW0f3dI1KCL-DuLJ16WGe84xnY9CRfWYH1P4SUL-84GH7XkUuHl78a0wG14O2vYf-y8YIWPASVtU548H6HiPzxr74Hm1ZlEUfGYDX6RmagM8ZuPFr1iBbtXQw30oHJGqBbZYfC4DZECkeOXCWqm4nGB5lfqeeY9HcRhlACBaXcdYIgG8cnks294DqSZTIX4XXL3_QgQ8Z40cUZykL1nNCKLW6c26RtAA65aOHMmSs0pV7nKnQZ2Ae5YWzEyxYhW8NDpN7aLi53RsHKv_QboIpz8JnaY6fErbIPB8UNfwzELH-lJfZt-vBK7sRhCl0S8RlaNPEmmP---lVdhwL1RHjW0BkTfV6tb5Rw9sd_aIiy-zI8_JGZpQg3_TcoGPkTh8uYRkK8EvnUwtD3t2HsdllEpqMDpUPJxRf62GMUAukII0_zILEkcnnLiKsJYUcTLMbweD5NiBrDP8Xcu0c2sGVVT9JwQsm6ReHLtpWB8rFI9KCbdlW78Dj-IqR8_HfchcEKCuLT6IR9v0JHwj9uNEl2cq2aVZ5ZiNs-RTQjnCYpdseRtIgydWxYERb7PlL-EbRE3KTyfIg_7K-iKKuwxeQjo7UxhDVAXVX_1k5zgbnodRmmo14Z7UFjrqzwnhpqmnajxb33D7SbNtkBxar7wpaSzVKBBhrLaaGU-uOE6zMCysXdSXE2nZsJlnINfCriELcRfN3gR7zQ7mrWidS-lsXA1cTbnF8Pqsy_cczqIPayPbMD7toEH_awv6EEUEHQUmYbMZsE9NqZlSF825yy1zCUiGppVgZ_rwLOQE9V33x1s55mdZI289wwK_PRKKpabH-4Xt9sT6-lYsZ6xFtTGPM3vbAAUXhgPOkBjNA8-1977N2l9dFPTSJjoPMXNCNC-R6QpZzEN0KS5ro7KzE5YlDgw7B1awl7VTcUPU4csqfvjChi1zWf-BKoXvfuGAvERLfcQv3gF-sl0UksAq-2fIw5xUCFFEmrl2i-71JEB9ylX2GtcJ4Yg2QA0SYYj8Jn8mXWeCSmUXO666Xa0bZdi43EKnv1fkUWxYFDgzhgM8cnqhbAYjMKfOKvDMj8HEqpSVxfx95WDNgrU3LZQOZNxcVFibJ7ywYwwqZu12N0VOiYqgytbe6BFGraUl-t0mjVwg4Z5-YYTlCDoe_wxV4qLTFfAcuZr9Ui5TVwP3Xxy9rtZWLJzal0f_yym6Wx_vQe3_ue1K7GztnA62wGzQFiLYmFI5Sh6e5ZEfg0h78hMX_gy1daEgFGIucIqlf6Zls52-ZV5eAMtMqTJa3FL51yC5ctxKWCsaRoAxqG5Ez6IHFrdh45uhpOJCjpMFSFecxOt6WoNMsPmXbiEgUPnoYee2KfW_UzXqFnAFO_Pc6IpxU4F3PFMEnzhqNxOr7qV4zf0ybw1MaMQWbURLVOZS4e5QJRxh23e0gdLxVVwZRHRUMelbQSzn6D0XzNAZmtK0APpSfxYkfAAjHh2n7ZEa42i9CTP1_7h6Ie8CjOIJjNuas2fDK7G4VTfWCVy0ps_dufeu3xHQsmdkI6y6NUCL9HcrL6vPHWpLKcaccyYMnQomkYGk4TZ6ALKoSfBN0WcSji9yDT1VrvHY00SdN-DCfRL6gr5ptHPSLGhtODayjM2tJhbPFP-2ZQT-YPNvCld9W0_8iql-dbjScqoQLJxfqjVXAMyzK8RhPvlslovWvWWOhnXv9lR3oV3p8da6eqezEP8rbmSPtBfeyVJoe96uiRRsOfQeqmdnZJitlfHV5oJKlbz62lLFqeyXMHfz8Ysn1sSCQYupitrr9frg9Rqmow88JMC9BdgH6cKvxET96ubP8p2qwKM84Wte-KbQWL-xqgQVfMNpk0m4r3L6pe3wF5wDWwzJLzxyB7hkW7NzK5-NbDJ7HCmsKafeGSEsGcm6RJDHrr7MZVeikXs-DS46t51Apc6eeKhwuqqu1-sK88tqldiwWsRZZrJYxoRTaXrKH99k75zhgJIj_nzV8BsShtDrxn1pntBUvHBuC5x6RnZROZ6QGmbraqS_cJw7byjhxFZqlKQrBM7PbWPAr98TwqqmxUvWb9OeRHy5KsktqzQziTvi8IWcwaoDsQQ2YUgcfN0jzbgUAwkNAGrbovOndLmTrIpdrHTBhSvpSD6KKmPdwQHMclLs1t3npzHUW62kXdxNB3G5rxVm1kgvlJjQuYSVRQJks-yJDKojiPT0a6yMTRNF5zAtPpew3tE6iuoFNBjUyQrOHrm2nj_kSx4xJwJEQErPXJ9mUSmDYxwx74hTBnwZuFA9meJoTwqqKjpwAutcqBRNktIqZJVXj5sfwPfuFpCTIdsi5V0Ag0z601IBWSb_A1TpY5EazH4kb5vt_8bOnKwXMgxFsgV11Eq1VTCDwxDeEOncHtQnnNGTEj1okBTU9CrEyuLRKkvhClrj4RDOj5MQUEVtBVqclj4ycTWoYu_ItpMUX7C7psQCRDm_Pdx6mBvJVz8EbvZvRD7ImsZUtEmT7AotRduLDlgo-GEnyC9jNPQcbyH2jhCjGsu9GMiDinsZMK3OI4glIdeWplvFnBUaQbP4cyzx3rULnuZmwi5Qj2uZBwLsxjYRgm-PptR009seewJIVrcT_63-PLqsHhJiUaj9LMnxFkR6VDtpryptRcV98VW0kv6IqpiVHuLmxKoSQwrACNjmR4wRgvpsP64XSTjWQUJRNLpUr4RtqR4sD22DqzNmLYjHqXazS6_1ceiayzzTDPV5m3QZfRRF3Fslv5qL-gQ2UNR1NjKztqRMkOZW9hR5KGtRMqumbnuUNYsm5Fucu6lcWkSAgcLBsyo8VpTMCTSwUYezha8bMKYvp3caUhHvxhSf8arWU2uLzMr9yW-8ysfN9lyF \ No newline at end of file diff --git a/docs/logical_data_model.puml b/docs/logical_data_model.puml index 0dad1ea4ab..7d72473a93 100644 --- a/docs/logical_data_model.puml +++ b/docs/logical_data_model.puml @@ -355,10 +355,10 @@ class GoalStatusChanges{ * userId : integer : REFERENCES "Users".id * createdAt : timestamp with time zone : now() * newStatus : varchar(255) - * reason : text * updatedAt : timestamp with time zone : now() context : text oldStatus : varchar(255) + reason : text userName : varchar(255) userRoles : varchar(255)[] } diff --git a/src/migrations/20240708153514-goalStatusChanges-historical.js b/src/migrations/20240708153514-goalStatusChanges-historical.js index 4d6b8ce2ef..ac35d72054 100644 --- a/src/migrations/20240708153514-goalStatusChanges-historical.js +++ b/src/migrations/20240708153514-goalStatusChanges-historical.js @@ -14,6 +14,10 @@ module.exports = { type: Sequelize.ARRAY(Sequelize.STRING), allowNull: true, }, { transaction }); + await queryInterface.changeColumn('GoalStatusChanges', 'reason', { + type: Sequelize.TEXT, + allowNull: true, + }, { transaction }); await queryInterface.sequelize.query(/* sql */` select create_timeseries_from_audit_log('Users'); diff --git a/src/models/goalStatusChange.js b/src/models/goalStatusChange.js index 394eb82eb2..46cc4d7ed4 100644 --- a/src/models/goalStatusChange.js +++ b/src/models/goalStatusChange.js @@ -60,7 +60,7 @@ export default (sequelize, DataTypes) => { }, reason: { type: DataTypes.TEXT, - allowNull: false, + allowNull: true, }, context: { type: DataTypes.TEXT, From ed2c42db6efc566c02fbf6ea0c8d6e8a69155e05 Mon Sep 17 00:00:00 2001 From: nvms Date: Mon, 8 Jul 2024 15:07:01 -0400 Subject: [PATCH 09/10] nullable columns, nullif user id, left join on Goals --- docs/logical_data_model.encoded | 2 +- docs/logical_data_model.puml | 4 ++-- ...240708153514-goalStatusChanges-historical.js | 17 +++++++++++++++-- src/models/goalStatusChange.js | 4 ++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/docs/logical_data_model.encoded b/docs/logical_data_model.encoded index 5654677a8e..2b39129a7c 100644 --- a/docs/logical_data_model.encoded +++ b/docs/logical_data_model.encoded @@ -1 +1 @@ -xLrjSzmsalxENy7IVaZY6czjaijLdMhlQcLPJbndoof9pjOcbL919CH1p05c0L2Eaij_lmB05m04IO3ao7Q2JzAGG7VpGQFHwCRBFnW7b5UxCadJpr9mJr2UxYcvBU6EfUyHtwO05oNCquoIzoozWv0dQShU8Rm75EpI4c787_Om9PHlYV4gAm5ZwMz9cgRfCq9pI4z9IMZwbw-__i-J__gRzlnwYx9t63AMVfMawUzIb5DH6x8ahUcSP1pT8_vm2JEqHn1pzbkIFabHdXwd27DOG9eUftyl88OKS9Z_Jv8M563-qYnmUVRYxFBi_FJiAZtwLhndHtz5UP8IleNq37F47qPgl6bB8LXNV9A2Lh8zeMFyJeo2RVsCGY7m2K-FKuvsa76msolinS_qLu9XUfnYylxpBqJvQf_xb_yzIMpy1FEJ_PwIUqYdGLp-VHM3TAJMMmRfus2Hvh24KwMJ51Ckwd3u2qzInW6lM7gSGbpjXj0y9MK9RWa5dFov41t0umKguMFWS8TAE59BYX62W-_t3tttjmIKBn0iyql8zWIp6I084jv0YCBj1nO4bDTmjoy1XrA82qfs-r7xvwvn6CXIMcDITwqVVnf3yH8oKj7iKG6aDS-HsgrOXu584PTDqPWS1PFuJ_wy6O7gngZ-Mv9Yi5Euo-U9v7H7nSEQf3-rl__VqwTZpJJSajCjI2Wg40RbHCiPRRNKSXG1lDPjuwma35vLR0znVagmw0hjOAE_kuI04TmCF2d4-NCWnoN194aHary6ouUp774eFkMMa182KUKEb4oMkUGSx45BH2X4DxB9bclVjGFTFQ3P5j3Fl_hccoyqdMdg3NJQDxS_GodGAQde7CFN4l1kpBP6rrAIzmY1MhWFEJQsKiyR9DU0wMCRDbi9vrlzDM3v1Er_7xdU8A2RVrwAFnnSK7AFSfWFZ0DJL1s3GR_AH5DVaptAFamxSy5wfBuIxODq0F_1qWU8_gSl7JR9BAw7dTG1-aR440nvlfmzphPVUAg4_WvIs8sjWyCag_O2g6iH2Mb8oVxMyjIwtSHGEjyAXZVe9sZpXatTsUch_prjNxzbC4zIaEU88u91UKwu22TbIXV4D1-xAhJsqcqR_KtYX2MSRjqICFvMOVZimM-w7n8OeB1018ysl2ZmIBtuIIgYKKZsn4wShn9Dm-kuNzt7pFvdDNFRwu2ASqqwvQ3CAZ4Dpg-CU4-ZBPtb420GUadAhf_di4Jta3wyXdnByfveUKK1Ln-MmmpjGFdvrvillt2fQpSrxllxEw4qiiZFZE1ReHwug41XOo4gbx00cL8PKnQdpcjSSRMxXVJDtGMW76LeB-AZNOCawHuKK204Qp744wEaBScUaeA2dMWprslQ6D_-YtzNa76f19Qb5V5g0nfMtUuG4xfZDPvymJaqaUI05f1VaBreSA7W3lRIHN2-uC2XV-BDFQAy0kNpMXbSMjhQUprUA5GftDBh5BojlX6cRCq06PqCIF4EwmlfOab5cKHZ1_RicepCyYo2ZVpte4JvYr74lg-BpBLwzHJRrDadeX_iGG4uV8DVGrf0OxhEQGKF5CpMGDxjAemogVAlIE4x-yoiUgEJQxFeHpJVx8dcyUMq6N16XyWc6NMeqBmebmCEEhiV_kr-0Pd9JhKeT6A4dfwaUp7OCyxUuBVxaW1d-Egm7UBi7cAkxE85Aebdh991ET2CjF2LAg5HRZ63z-FQP8iqArePalGyL7UpF-GSAD_i568EgUm37XqGMbJc88SDpYCKJ14V9TDcodRk7ZX2lMWXi8lKODlu3GAwjw5vXCBnyVxmqxUNbsVdrpVNBr-VNLsVlBvmsJRo7fk8kwSg0T0usFQTwJt9x0zh4VCUAZtxaXWEhz2lqFoQT_31qVnDk4V8CA0XPeOwkAyAun6Qlyui1slKAHZmnK9isgUsWg14-DqpaBrhzSj0EpX376J-FrWMcE2JPh9zgKVCv1lhoUACSMYEE0J2GyR4t23fFey9LgWtv1LFMverdieJEpF3uk4Lsg4IKCGVlgMaslkvNE7wRx6Pg6gLFb2O4_wIbLKEyvTtvuIVv3k47Oty-mXOqq3TXIRHvyrmriL56VVl07k9vUmS3EIoUz512omv29vk0IvMjmS7zG7X-ojtHY5qPB8ZbQJC1oYtGJTLSCXZb2za-ASVxJAmTmqUdatGLFKSdiBDBSr5fp0zhRqKKPkCceaQxuKSeAh3kghUdVXy8m6qHLXhZtqJR6o2hRM-rqzbEDM9QvSpRM0uCBh4PkYJxPlTHk7kQiCgr06OYySdaIHp0ZCrkEiZ-aJbTcJlbNCrpNIJ72Bzr9P31BVPc6PQj0LigtVwMj9pCp2bFtvDSdI7Lcj4cS-hyoqJBJquU_TpcUOhkme2NW0ACV_sWqUT3kyjrv9yZu2UplEOulNNuxsWP7Ur0vIpBOJyceEB4c1zsZE-78zozpg6fSlq9FBdCg_t2k5tw-wQy6_AeXCZUAGD2-mg-NgVAJsYRmE-BTH07SwRDXp61i9btYB0k0BbYmhd21Ul2URR7iaiHwwULJU6wrNN9uRRKke1TCUovBkhFSmGA17ZPpk0ogb2Ja88osof70Sc9T8BMuk1wkprb4YzOawXzCJrYFqNsVLJaZlhEtg-flQasd-GGDxK7DkOLV-1GdaoXE4sDWx_CyYgXc5w84_RB-hWpzvA0VhPViGkgjiIPSOQl2sWCFydaaRBt9VrKaRsdmCEVAFsAXVmOZn5_R8j50ow4PvFZzFFNZu_Exz--UBbsVFFZe-FfFjjINsZwXpveoGpxFYET0aDmzkbC2CqFoMLMgHJ5s7P5kv0Nx6rZ_M8EVcdzXNIaoY7fyV9Uonoo2TSEE_wWgNqEFrRFUFF86F31VmRQMu3yVsBqJQoq5-pt-Nm3c6annbafWrYS5l2WSpx7TzVGSuHBemwLXSM6fHNCs8dGcrU0_QkhRW7l0_5Qu1AICtb6hSY7yRTowEqaTjUBpKtPzcEBL2C_79vXBtmwqdwCxbrhBLx8jQVYU38OcUDGbQLl5ronwfCQBDc4NN4C8SOu0pwmCOfAWf8s_MbRIczLreqszu9E2m8VT0Wdx6UHKwvzPYP_xXmfM2ugqed4WGZJYZ2XTn8VbNjTe0Yw3rK6rCLrrYjJQcE_dgarJbIau5x1D-_pDq4Ek4kPRc6IbFhA6Y0aHF4qw3IRtrZyvvRsW1Zb93T6re0Z7wrbxj-i_aFRtyBxeXQ5N6bLjJto1W36yACqoeRhq6b1MWMPavxu1AXvq5ppgv1No0vfVBs2-zK-MbDgGatgjBMEsfL5i9fAj-gWeRQYdf7tIWuCa3tf54PXePQK_yeR3M4f5G7pfjXn0hMVGmwJXYSdjvcX58ezV4v1FahXE7oo4Qjm1xSsrYHliDpeIP_XvZuxUKBBbVbS1LKyZsCQE8Zsk8xGwQMvSUXmdxAbaCEwGvXO2ItZFw80HLR6kuxJNFasLPKFhrnL_IB-xfsg93a-7TvEIM7w1Wp9-wVYYQlee5hAvrj91zDvQuum3cW-UCv9QpcwAMqZNYQejQLFp5d-15rymzd5Wzg3wCXNDGsZsetuZGaJaCSCzOLhPmzOpwyZLFJY_fplEDGYoVrdrWqIvMxHZlumKVwPm_1kj6KcvJ_CGotrXehTXnB5nwht_nnV1tzUzPsTNfOHKydk6NyzWOlDeYhjgfO-rqlBsYQx8ysOx8Nt5aHAKrTISKpeg-iKoVUSWwoxSw4AJ0re1hGy143DAv_T8L31urvyBgMhZSPFxoj2mawh1ekG5majyrFNT9BFhw90E9cXDQl5nKLoaKcTvR-wljBsiQUjxVxOzkN7RuyoX9iwV4A0zzvoBLLtQV0N_WLX_kG_HIuhZFMT7MHJsiVHG-C_XuAmbrxA2OgolqJlJ9s4pp6cM_UEgMVWwv-NizPgf6HtLwO5-V8fvqR-_XBL-STP_Z7MS8wOsVPnx9jvzhQisSy_m0RT_gO-ctJyTjWes_BcNFovnex-XRSa17Q2mwzxqVRDJllbD3PsuRk46Nyj3Q8FcLVuWknkq2kNfqkVKxubPXa-CbHVvkN_dlAB8fwYomAUqii2liAFBYNQcZpb6PBkewiQ_9ACp6Fa-BcdJ5-8TPio8Ed_C8NOKQSPMHqWBqIxp_Ysqakr0QT2qWPmHYMIvrrcvvnl38qZpe9_SBUHf5w0RjWs3iNIHr3kcnrCRoxK_P-Clm1dRkVbE5nARFitwuNUmhlq2-EGvJlN8-RxkdUzrItXMl3to6sfSvtrhe0bdKcgnkXzjpKqOraZZV_We26RXuRkLJhGvcsiOs6TFGiu0eYwvdOqV7PyR7u3J9ngEmze0y85pe0XQVjn6E7grsgOslFA3KcCKER5jQTtExSvm-JFMmF8BOF0f7IFYFvGxiSlpbpoVdGkI-necW43_-8Wlzsdnr0U4vgZfPjBUbDg3DZr3Urshw379Y7qZLF_09uExI3JhLqUndYW1Nlkn12pkhz66uvy3tRs9SxOjqUMtEKNM1nl5ttgYoTevdjB7JVh_oY0_YEEMGPHNjdhrxPi-oVP-gxip9aRo3hSPbtnEfXzBZFiDvhWd3HvPN-x9Xud-awvo3NDSyOdNrmQFVnQ7UL4GhbuPaWswvgvKHOw4lBZoMW_Ce-4xNsWMviRuq9oNgt3GItB-Bmf8H-Mr4FaOxnEKtYIRg3ZAbB4DhSd3fQjTd9ssG6stsytOVTYA9DCjxZR8Qv9uLP9xJU0ug0T0VDlUlURa1WKkYGW-BmsFUsEJrkPR_cmsV-18jwS_IRUqWfok7QVQJgM4nKQNPf7-fqndjGLh2VET1P-sYihDHNnO0jxA3R0dqxV5voU4j-tvx2f-O37yZQSV8EkdmvxffA-3PVUw9c01xJ06p93buU-FAWBPDtqz014oQcRwz8eQQ1wqTgt76k4XHTqZWzJaykBq_-zUDFpRWYmRkHfOx4kG3Y4quglYLKHf0T9mSq7-cwgCSP5DeI3C-T1q0PAMnD4f6l1lXU7bY164SPQzQGtmYVucOdBYEv8RKPIz9_Lw14_E46C5PHiL3a9WTiUqi0RK_40gMgghtW522CS76ZrbCnxLsJ7TTbagbm-Q1HlERMbQM1sQMtjo2cV4ztQcd68ekvjrFySFAydk9vWDBD1mdj1HX-E7c1IWwfNqgzsc7d75SkfngzL-27arSdzbLT7Y4muPlVQ2Nairrv0rZlqUr3xr47vCJu8Sh-8jbKbL8D-KXVpj1XQ7dK6Bw_eUJzZJcD86NkU5hFsMuOAXmjySfSaL4dEMc4QHIcWPKX4Qe-L5Pe9aBKXsZi1eQ8bnilHnW_GkM6Aa8q2j7mDV4HhH6qebttnoeQgp2yxB1Z16i4h8ZJA4wnxtd15E6nu1cv43a2P0DatP4S0L80ZTvl745oWHG1wW4KPoKEM9u_V-K1IHxmORdrOUAQSO3p6mwANknP59OWjfys-CrgdyiDog7Sfz9V2wdUEvDgwZZq6sVcPGAVYRkaenAvG1hTE1mXSq4M0R80YgEy0vIH6vqZG0r0CGKmXL2Sou-0CtwJSSHf0AU8aGiZzzt54Q06eF4BXYDEDavZnpf4j6oquZZd0L84nm5E1CK6PV2ksOXFYqz4fOVAyCsb4Q4MeQWyWz14L2nK1gz1ZV1qy4He1g69i5YmX5n5-gT39kJAqJyTF9Fta4QSJ9m6Rj2CC3bXSbpF694QGSfzbs24R1gog6AJU4Mjya79SIb0H6e8gMYhWh2AHceIg8ZG84Bkk-OYIYPAGnVPHPnSE4LbyW0f3dI1KCL-DuLJ16WGe84xnY9CRfWYH1P4SUL-84GH7XkUuHl78a0wG14O2vYf-y8YIWPASVtU548H6HiPzxr74Hm1ZlEUfGYDX6RmagM8ZuPFr1iBbtXQw30oHJGqBbZYfC4DZECkeOXCWqm4nGB5lfqeeY9HcRhlACBaXcdYIgG8cnks294DqSZTIX4XXL3_QgQ8Z40cUZykL1nNCKLW6c26RtAA65aOHMmSs0pV7nKnQZ2Ae5YWzEyxYhW8NDpN7aLi53RsHKv_QboIpz8JnaY6fErbIPB8UNfwzELH-lJfZt-vBK7sRhCl0S8RlaNPEmmP---lVdhwL1RHjW0BkTfV6tb5Rw9sd_aIiy-zI8_JGZpQg3_TcoGPkTh8uYRkK8EvnUwtD3t2HsdllEpqMDpUPJxRf62GMUAukII0_zILEkcnnLiKsJYUcTLMbweD5NiBrDP8Xcu0c2sGVVT9JwQsm6ReHLtpWB8rFI9KCbdlW78Dj-IqR8_HfchcEKCuLT6IR9v0JHwj9uNEl2cq2aVZ5ZiNs-RTQjnCYpdseRtIgydWxYERb7PlL-EbRE3KTyfIg_7K-iKKuwxeQjo7UxhDVAXVX_1k5zgbnodRmmo14Z7UFjrqzwnhpqmnajxb33D7SbNtkBxar7wpaSzVKBBhrLaaGU-uOE6zMCysXdSXE2nZsJlnINfCriELcRfN3gR7zQ7mrWidS-lsXA1cTbnF8Pqsy_cczqIPayPbMD7toEH_awv6EEUEHQUmYbMZsE9NqZlSF825yy1zCUiGppVgZ_rwLOQE9V33x1s55mdZI289wwK_PRKKpabH-4Xt9sT6-lYsZ6xFtTGPM3vbAAUXhgPOkBjNA8-1977N2l9dFPTSJjoPMXNCNC-R6QpZzEN0KS5ro7KzE5YlDgw7B1awl7VTcUPU4csqfvjChi1zWf-BKoXvfuGAvERLfcQv3gF-sl0UksAq-2fIw5xUCFFEmrl2i-71JEB9ylX2GtcJ4Yg2QA0SYYj8Jn8mXWeCSmUXO666Xa0bZdi43EKnv1fkUWxYFDgzhgM8cnqhbAYjMKfOKvDMj8HEqpSVxfx95WDNgrU3LZQOZNxcVFibJ7ywYwwqZu12N0VOiYqgytbe6BFGraUl-t0mjVwg4Z5-YYTlCDoe_wxV4qLTFfAcuZr9Ui5TVwP3Xxy9rtZWLJzal0f_yym6Wx_vQe3_ue1K7GztnA62wGzQFiLYmFI5Sh6e5ZEfg0h78hMX_gy1daEgFGIucIqlf6Zls52-ZV5eAMtMqTJa3FL51yC5ctxKWCsaRoAxqG5Ez6IHFrdh45uhpOJCjpMFSFecxOt6WoNMsPmXbiEgUPnoYee2KfW_UzXqFnAFO_Pc6IpxU4F3PFMEnzhqNxOr7qV4zf0ybw1MaMQWbURLVOZS4e5QJRxh23e0gdLxVVwZRHRUMelbQSzn6D0XzNAZmtK0APpSfxYkfAAjHh2n7ZEa42i9CTP1_7h6Ie8CjOIJjNuas2fDK7G4VTfWCVy0ps_dufeu3xHQsmdkI6y6NUCL9HcrL6vPHWpLKcaccyYMnQomkYGk4TZ6ALKoSfBN0WcSji9yDT1VrvHY00SdN-DCfRL6gr5ptHPSLGhtODayjM2tJhbPFP-2ZQT-YPNvCld9W0_8iql-dbjScqoQLJxfqjVXAMyzK8RhPvlslovWvWWOhnXv9lR3oV3p8da6eqezEP8rbmSPtBfeyVJoe96uiRRsOfQeqmdnZJitlfHV5oJKlbz62lLFqeyXMHfz8Ysn1sSCQYupitrr9frg9Rqmow88JMC9BdgH6cKvxET96ubP8p2qwKM84Wte-KbQWL-xqgQVfMNpk0m4r3L6pe3wF5wDWwzJLzxyB7hkW7NzK5-NbDJ7HCmsKafeGSEsGcm6RJDHrr7MZVeikXs-DS46t51Apc6eeKhwuqqu1-sK88tqldiwWsRZZrJYxoRTaXrKH99k75zhgJIj_nzV8BsShtDrxn1pntBUvHBuC5x6RnZROZ6QGmbraqS_cJw7byjhxFZqlKQrBM7PbWPAr98TwqqmxUvWb9OeRHy5KsktqzQziTvi8IWcwaoDsQQ2YUgcfN0jzbgUAwkNAGrbovOndLmTrIpdrHTBhSvpSD6KKmPdwQHMclLs1t3npzHUW62kXdxNB3G5rxVm1kgvlJjQuYSVRQJks-yJDKojiPT0a6yMTRNF5zAtPpew3tE6iuoFNBjUyQrOHrm2nj_kSx4xJwJEQErPXJ9mUSmDYxwx74hTBnwZuFA9meJoTwqqKjpwAutcqBRNktIqZJVXj5sfwPfuFpCTIdsi5V0Ag0z601IBWSb_A1TpY5EazH4kb5vt_8bOnKwXMgxFsgV11Eq1VTCDwxDeEOncHtQnnNGTEj1okBTU9CrEyuLRKkvhClrj4RDOj5MQUEVtBVqclj4ycTWoYu_ItpMUX7C7psQCRDm_Pdx6mBvJVz8EbvZvRD7ImsZUtEmT7AotRduLDlgo-GEnyC9jNPQcbyH2jhCjGsu9GMiDinsZMK3OI4glIdeWplvFnBUaQbP4cyzx3rULnuZmwi5Qj2uZBwLsxjYRgm-PptR009seewJIVrcT_63-PLqsHhJiUaj9LMnxFkR6VDtpryptRcV98VW0kv6IqpiVHuLmxKoSQwrACNjmR4wRgvpsP64XSTjWQUJRNLpUr4RtqR4sD22DqzNmLYjHqXazS6_1ceiayzzTDPV5m3QZfRRF3Fslv5qL-gQ2UNR1NjKztqRMkOZW9hR5KGtRMqumbnuUNYsm5Fucu6lcWkSAgcLBsyo8VpTMCTSwUYezha8bMKYvp3caUhHvxhSf8arWU2uLzMr9yW-8ysfN9lyF \ No newline at end of file +xLrjRzqsilwkNw5rFwGDJlRsPNk1DTh5EewT1fiuXkrqiIqAWvPe7JOIUPQadBgz_UyN9FL2KfH4IZfEqkgJVIHoPlHmE1pEyEMVZ0FAooAFulXH3Eu8IkCT9JSvB5Zy3l5j372MmpHEA7d7ubi8UHJ7x2t2Eq114US8Gtw_Wp6XV4kCLqaE68j_Y-8uZfyIca9wJ792uq---kf_Z_x-kVRyQekIjnWo5dyPnV7lKfHZKHkoAAxe72KStI5-Vm4Jj4CGS_PR53-EKHeVnWXpc44Q7yRVP1132ZXC_n756GMOlp0BN9oSdboSd1sVNCO7pyLxTl1Nb4OnuLj8Jp17_7wWnkkc589LnSSnQ2JR4Jh4xyWesDHFA1G27_7uCEQeW8o3OgUm5p_ZNmc6yM6CoRjFFnFbortgN_xtABBn4yoFTZjAxY0T1t7-zvKCqe5QRnYa3uD5dC8SZfMEOaougCFXBpoA6GUyPF5X375PzA5vJF8St10AEFbp8Tg3nodAuKFWS8joE51BYX62W-_tztttSmBoKmJpz0Ao7S5i0WY2X3SGed3pWHa1-HKiTZdWK0fnJacn6xH_xXhxWIoc5IPLr_hnfo4KBo0Z9KqU541QyHoetOYr7uWKSTaKjSbHC8d_vC_h0QYkZUg_HJ46XS9TFeyafrig7bOa_QbzytzFdWmrKtzBZhSWeIX36EGZBMUqrLpBaGNmMhQDavmmU5co7SJfCS6YApI3ZVxk0W96S3tmn12dpu0SbmIJA4PCVXdCxqzInA7ub1j2SWX4bLkGCrdcWdEm0mqHeH3jo2PRhddN37HtW2PRG3_zykklFzDqfgxNqsbVt_mCfK37fAHJ35z3mBincnfjIqdU0mGguTxdsDX8FMsGN0Ac3stOR2ISRlMNWEKZjFzTv3g3W6x-UIx-S71EoHrAOTep3enHTGm6tIeZJNr5TYXvF-tC1Uk1-agqzz81_0TB7o2wdpvts2IJkEvtKWVeQn53CEJvOl8ustpXiHBwEqXXExRs3fEit0cWhaGaf2Ob-rl3K-js8qFfT2iOtg0VeSthDtKdno__TToyViDW6iKWJH5718FyZ70HJagKBeXfFdPLQEobspRwcyGHIpZUkZbW_8t2yEczttG_9310OOO87cnuKU21Ul7ZM4IZaEo9hJXVHfg6Lt6_ge-P_SzgvgRN0HNd6dNAGPwKOXgSNXhndbfRMiiXG23qWkHjFqzXZkuWlNy5-PQa7T7IaWAkFYo52If0_kbNcoy-SwbhEpNk-lk5K1fPv6T6y8rG3voL8BEn49Lpc854gOmfYrFdDQwuB6uWVNrx3YX72Tg9-6ZR856y0naK2C5A3F74A6bBigCaew0GRUPwJMlZsttntn8oBfN0ihGYNcr0mygR0Z6XErRZoHUSGnD93cW6-JdPYGON2kvWBrq4vmiE7FedtjmXoakGFwkKmQMbZRtNuuL2bS8jlKx1s-eROSh63931oO0KRx--a2wML9HHD0gmOrTaO9Pd4QpblmCvIay74Vk-AZBLwbLJR5Dd7uj-i0CPuF0rVWLf1etfEgSbt5CmMmEvA4gC4gdoBqdcE_jCh7g3askpw0Sqt-o8vl7bj1vm1eV8EXcrhz2yA9S23bgx7_xjVW6PqKurAtHYX9uUnpins3FENkCtkvm0P_XglntYv0vYhkpYESg9PwoIGJdG3BJmfIgXKMumWtV3scIBD2bQ6PBqt5Ttip_a32ZVx1XY3gdi0nuT45fKfY273Su354mH7oJJPifsvXuuGhre8R2BL6_R-0q2khUXUOJ2yV7-yECt5nSdPrVNLozUdLnU7RqwTzasyWwRYBkdAW7GEDXsdUaTIUmFQn3p7Yez-v8O3Y_Hhz3ychVmtj7yTRX7oD2Z8MQ6EhYl2kCHchzEB0Thq2deySL2RDh7je8WH_ZjKv2yRVJBG3iuGnna_jzR5fZWetgoVQ57pEGRwydiZ75eZZW4mdt6nDmWwJwF2LQeD-GLJvkRDHxB4pipm-BX9IfG3YZYzyyfANT-BbUu_bjiHgfQfVSKveI_97cPmlJ5xHdXHsc1iAEHVny0Qnoesz0a-hGPphAuAEF-7M0li9oTWvvSTYSwQ84b1y7ZBS2PXpq86K-MNYamVUonOf5_GOoLyDj72SdB0iTo4MPA81Fhr-82y6GR5oI5kIeU_-LRmtDu56FuhecNVPE8bPc7dwHV_-shp__-3r7Xc_-HpqJAAM-ZegRpqOJlrBIkp_UKBsGWgHitCrhHDGnvseUwgkT05swuQIgwb-cpxQI8shJMJFbuBma1PHKWLlLknUSRgQGjmYqRigl3bdNOjkevrLCPc7NYscPVQnZsZ2wn6Vha3IUtKRZZMxCATIMcul5HfDkSm8ov2RflC5AvyH4wvLnDCzua-qXaDUKGmKrUfvvWRG7Rwfs-alJC377fZr-H5DsYnHfHPWQhpCr8I_V60VoSh-dAhiA9vu12p9-_z_ZL_ltkIfBl4T0JWnwJnUxAlbDAYii2KCws4F8h3ivpWFK9rF32FihTAoBcBlYJo9_93E5BXDykk__2locpLepWaJOiHApawtocz8YU1tnRg87QdrzkX1zh2EU570769SXFIvmYdBqYc6yx99CKkNfMrHYkLssVw6zBgGVG7HMJxovtC44WHuoV503bOuMSX12MULSv3enAf1UsbXLLUV0naJh5d4BfAV01-o_ozCSaTTPtz7nDxKcvUoyXmR7PkZ4__mC51MKmn6ri7Fvda5KDmtHFdhPV_CAVlPLCzBFzY9sNDpbAZDLyMq1X-cyaZPQvm-k5p14y0npunlzLLk5qEDdzeYaK3BeHw8yFuqSldfsSNRquVN7oxD7XuO5qlosfhrMT0t-KPAuUtv8sDM9uknGcXAR7f5JBVQeYBDd20dGLM_jOZ-YL_o81XVGeok69Tl8EYspq4HVEkxxqAJwCFwzc_0bahB-0VoDDRI2-Enri8mlz9VjT2cyHHdgSGURi80OtEUp9uT_otINa7E7Cg6DrOQ51QJaXTYBKvXLWRvkAEy2xKBm2A8VKNFXn8p9htBtGIXkvxPLNKxEVpTW2nSWl5rhOIyWUnp-J6yUglSTY9Pi8ZinsrYXaPSwRnNkiJ8GsQnPHHmnpY05Ee0zidA8iWxHPgTgKqdkbHRFfdO33ZD1x3V89AsFab5kFcVcF2vSAXjioTo91CEA48fp9BUcNPL40Yg3tK6rCLLnZjJQbElZhWLRdG4q6xX1yzo9r4sY5kv3bQYfrhOEW0KPE48-3Ih_nZV9xReu3Z552YjSq0nZzQY-S_NhpDsz_2nP4hQ-uL6lpEsICWGrXnccP3DUWqWBKIpp7FN29qBEWEMVReAT8Jgcy_S9RLNvSKoh2jQeqzGuQbOLmdCfpLT1GMr7le1q51mReZZGgmr1Jg-iVXAsha9Igm7azZ5Z1kWz1nmc3uzFRX50AfJu-Wo1zYJ2S7zce5DY3UnChqlUApjJaxn0JlxrymVcg7Aw2Ihxx0KryG5jyQyZKiFmmLDXFsLB88IqG1aPoo-YF652nEUAkrJH7dcr1vTCRTq6_kAjh-mf93d-NbrEoZuunSUB-iMZo8XgujDBPHlB1LEwI0vm2cZwSKy8gZbvAMukdAMfL-IDpXXzGD_zmPd6lzd0rXBFQva7jnZeDMQSXZXdhWbREdZ7ltyQfwKNrETvngDcJ-eyicgNANQ42llUH_kbzi6xKvKRbVmZ3hRN6WXt7qeM7wZT_75z7_vwbNPqELgkd4zmoVhkCPnl4HLjLh36lbXVKJVP7cp7P2-wiY9IchgJa2T5NrgcpSpa7oROmOGfC3QW6D7p408th7eBXq45Z7hoifUjCnlTlwqA23ek62n0NoMtpK-VqaWzl8e2u6Q7rwqLPYLAHoPsal_e-bgQnf-qI_z1sU8SlZx84ctjGGyztxdDjLVify1T-oU4kP3y5hkeCDLrLvEFQHz41exk7Wd3N7egHYdB_HAUCtGGFSNgSjqxf9wghdrTJbceafDW9y-8S-RGJQ1z-wUgqWn7_E4jO9-mi-r2sxLnPU_QCv-zXuquNKxzjEduRRFHjELFE45rYHz-CkpP2Uy6-z_rektEddJSwUTlGBQAC7rS6qQVi2tmkTXV8rQlZfSy8lnIJ33yvgc_pqdzFcKLHRv55OM-9HM5VWNltKlLjdj9iITkHTKrUQ2RcSURSjDFApyMQ3Nc4bL_u8io8iuGC3h2Nulq7VC_9kTgWSmuf8nZ3VAwpRjCp3cg6vg4feL_OsIXIBM0N33idBAa3JUUjBeQtjyhUZuO_e7Ftap8yBcMM_TlrOaVXBVh5SHpphUjntJtT-vwgjd1j-Dl7jjJfpbeRmB9ETtKZr9p0EhYHpF7cFn3GqCrZ0zTplI_JDhJHa0wUAbn2P3qJEpeU7HwAto0HnzFU0NgFSAO3a7dQJZnqJDk5EW3tX59Z4jEtQM7PoMtXFicOx61pbB5z48YKzYb9xvlb-FNfJSw7pds99KK3UFX75Fot-nG0uIcfEPetjQGteKwVKT_KQ7i1EJ2FjwkV-0Nm2bH0frgwlGnnm8hthGeXf_v-2FSb-9wIxCiTiNQFhJdAph0utgvxcUVEqSns5jhlLtxH7dp75BA4efspLo_iMNPFHlNTMHcoDv1rk4mxh7K_UjnbMEqrGJXhyqf_TaoyJuUTSYJiagULJZw2jFruL5mcX49v32T8jejQEH4M-iBoOmd8lxHFLwrye6lRMsD2iiwz1S7jYpWyog7VLjHzf6DyJfDu71UGCNMTGfERKuUqrZjvwynWiu-t_R1hKRHEndkSpJ3rf33hhDSxG16Gxg2vTztR3GXC2krpKEmV-zxKfySjxDUy_yoVO55jZdvz1ob5ALowZvGjYv4gzIxjVPtpU0Vo4dOp1pfh7usLbRgg6B257RHRe6_wJruERydlcrFur7pWFLaxJjv2bo_7NLC9t-PhpkOCm6CSW2qfuCMUho7QCddB3UqnOMBwzf9aQXguVAJ67UVAGTOcZUF3-EZYukW_F_vKZoiIl6jPwa2S2o0-uQZaMq9b1DbnSa3zaQuhVvn1eIt1yCnv09IHmjOa4VbgWE_aWHM8SPImUWtvjV0fhWjnhSargSnO5F-t13dYzzU0iPAAXIBNAM3R6m9eSo8Mo5LLxGMd0664iskrdeffx-hik2wJJ8NB1xNYrVUtp0tCphq71Z7bUxfJInCMMKozv-A7esVL5Cy3b7O-I6WdmF33qIdAEQH-AVMomCuvhbnEDNX3mGz7Bu_iIxyyGc32Dx_MIiXdHNuDMEVHpNtdKGlaoFWXoluYsPIbKWtvI5_Eq69eUTGOlhkcvDsrEOqWUUfuMitPhXdA72tnqboHKIKvwGhJ84mzAqDMgBfGMQ6P5Q8kH4DtEQnukV5oXF5NgDnGhH0DGjH_uVoArW1QgrttnserLc5usM775Qm1i5QS1d5Q-vuNJ2iy5Zm3Lokl0Da0MRSjhm0fW0PlIbv1Se6q0jG1Q9sLE61vzkob1oHfm8UbreU92yi1Jgyvo3gnPr5OWjXyMkytgtqkroY5SfzATosaUkzCggdZqA-TcPSHV4PkfLwLo0NIuCRX5J8NP2j05a3hAEy0PU1kw1MW6g0r1J26q3gN7m1d-4xa5QSUd5QCN1YvRq5U0Qe16hvWUCN9ncdeM8SLBHkjTPpp06a5nm7E2eeDIkzTioi-3JuhAXrK-cykNH5g45gLfnUQ5HKBbTvhK5TuMdXMQ7gXMM6nO0cvYlHFXqp8bQD_EdX6xo5TSJ9nwhb1SuN92PFZUiOLgG6at7S9hf2DGxQgs2XUgrRveEIu5615gW-frLO5ORKQgL6WLeHw4NBVDRUYPABKTv7TYfCBfrMPF41Q1xf0gDP-DuRJ2b0lG3rtZAqmkM5Q8R8WMbVk1qAqmcF3qt_Zs0gG3j0AZ0NCs7rXAqe6IklwlJ64LcHiPDpt7gtW272Szoojq4XeUYzPMl7Hy5drni9bFIsq7vbiDJGkMDP9WniOnrr2Ap8rCYie5YZsxKGhAXALiVkELfZSC8rSYRJ2vePjXSY6QE1kfHKXXL3tQgOL6O7CwlsuK75SnRG2KmFJVvFJYf65qOgD0vl--wDMZ6gCLb0iKBht7Qsu25pSrnwjs2Xix8kS_jIuH8_Y8yP8WgJjPL4KoNbwVF35GVpaoO-VtEGWURlPvG3X3T-Yv2s6Z7txvKzFdiWYsXPW8LVpQoElw8tKxZDVOlQv5_5Xd8b76_MdVHD50rSRMTp47MemjTZz5iS7-23kd9ST7uhRkyndcnZqCeiSDvS4y1-xKYS-j7YB8Xl7CxFQub8reM9lWPeQKTyD09C5iky-wSZK5DZqlQXgxb6skaU4IYRhxL6k_fOSb-qXsbJDF2S8fofQaaqJgCwZTQJGcTU55k5et6BdObk_MuoRQJ67FhHJUZ4Pt7ra4zFsxMAyb0qS-qvPQZ6UMhyOOzmMNOnxVq-tcVVrwn3UpKAx-31cEvWWa2F6cwURzfvrxPafHjIvd67YIAxg7bQNdDflDlBvAIL5fyui2Jh71GllnNgsCRmBmM4Uoyw9Jz9ZiXukpDIzSZ0-h0w5jruucLkt9mGri-Dw2kcqcSytdIVAdDGkmuA-HoB_6tKrmZctB5g5LQngnHQ_eixXvW4id0VkYrc7UBvHV-pNYp9qB87lP-yeF4iOHn99M2_zAQkaS4wAmaUwMpapqiUtUNGxxgREmF8fGpdrTJN5mjszGddq98dRLf0_gxdaVEBErAfWvdfUps0Tfoy7ZWgkGwwhmS5wjN4zP57VuRtBpZHtacYjFUraSW7k8_nSd4B9EoLK8DUlDXNBPHXrruPts6M3nHUHGlVo-fct7juSdZKFPXAFviSNQigRc50HH0DvNrn1UfA0CPHXc3e81GlJDmGgSTmZO2YFFjTmqt4Gfz7kT2r5tEnOeKHjpLB2cfgqe2LqchxfS7TCjXYu6htgjRB1RFGpvvilOVhJINIbVGGKuYh0bcnHdav3mvY5DZvwrOU3gNLNbOZnKpnvZU56_NVrZYZgyf4q5Uz8r0dk-ZFjE_nDkCOzhxeXuqNucsSs6FpDLptyPmUagdYu8muLJB_NyYaMFQOlb8j5DPj8HLKu5AaDzNy5y1HIpI70zMnv9aLxnuRoROn7SscpbgOcPwWlsXiks7IZ1cmYVHFPZGvmf2UB_CbQX_1QQIPalgruXDCtQMyq7YoopkOCiHnMpSEOKvHbaCBqwVsc_H5v7BCtoM3PnniQ9gjpFDQc-xAf-J0YDeVakGIrYjG3hJIlxaFavWZKQF9jIz01KANRo_CVRBFmrfejJtEEGuyEgPSR7QuzIE7aFiPr8HLjD88DzPW-XLX8YA4EujSp5XAahoMShFKZmHPfWgmbwDC6i_a7U7w5YslaFD1gQIUu9RtfTOqNb6JGKhbb6J1KSwKPRI9R5hF2ufAuH60RfrJHm4bUCoHmsWhpLKz_NLAA7XoSV8qpbPOQhGRDTLDmKIdSWsNzr8BTEkLcyNmADfxw9LQco-Gd0zuZppRvUsPnhJDfLlceJL-7fxprG1ckdcsQ_zg0cIDWl63acTWFHyFFi-JfZIfrv8YMN1vaS6kZnUFBWmRYnjhQYqcYZYV4D-xS-5n-RP1G-tuPATG_IJ-6P6xqYJJ4xfqngAdCpFRLcRIg5NN2BBCYDBKbEEz4QfJbi9z7JIHcYS3GfXCXYZIWfoTf1NxDIfjkbfPDuz8JKDSOEGFgqtZL3hvENNdpa-Yv0zRLGtrTKbGT4p7PI2cX1GtR2h49jCr4NKjPD-gJwBRuLWHhS4CfEOUXcYhfZZVX7BHJWZJIk_Rf19grFrAAlvjuImgeY4JjEBxKKcbQ_J-yG7e-N-VgtZxcZkMyyoNmOJoFNp-ssMmq-nBg9ezkCdqABvVNsFBfUergMyAyBGsKg2KxrfjWskt1A0rHsZmAfjPifwrwOxNPGb2Cr9aQaqq54zLDI-5Qx3K_LrOjK-hBbirZEhewgbxEgo-MMfndxw8ffmpEqb6bDClj3k3Ydx6z0C5S3VskM6WAhc_X3THpUtUqn4y-saZTjzz7QfXQOY-185ylwcgUpwHlptHq7kOCPnuVkNQzv5knZZW7ZB_PfM9tdaYTqSgp2cNWyfXh5brtEPIwNpn6mUKJXGdbxrfffBXrLnfDeMslTsbf6s_2QRjIqnNnRcOwbFfGA-05KE-D02WMFPF_K2xc4AT8woDSABts-1EnYfr2jLoVDK-32Te3-gOTrYVHSXZDbkniY-awTA3XS6UzYEgTvZEtfDnLPBhR8YQnQAhKySxl6_frVAD-Ch9b5X_4lsiy2USEdlKOMRj_pFoCddsd_gGTBZ7psQAbXz6ykTaxE5XdtVmYRFHbytjYuONRiYnDBuc5R6URXzmSWjOQPZj6CuEmaPHUb7HFdFtVY6z9MQ-8Dfzt7YugZn7XrOErQ5b6NahjtB4tLHyId-s00JfHHKcb_x8u-Txyox9iZ6ZPrPQICjjsVCoD-RhZhvdltSwIG_0UTWCbntS-3WhXsfaurLhbOlRWs9msLJdjoS9CuhR1qiWtkxYygGtkesDDQ40Qfyl-hLQYf3DwuDw2DHL9vh-xQYgBdcr6SssV6VfVoBlAz4q5q-o2lQfxkesiSX71JMoBengsivnWAZtSlrfWBlnrmDVC1KyLLCkMDfaH_swiOgvLz5HwN9bAif1yddD8zMZpr6zJHEh0y5GgwjkYw9yGfsMHH_yF \ No newline at end of file diff --git a/docs/logical_data_model.puml b/docs/logical_data_model.puml index 7d72473a93..bfddac9d6d 100644 --- a/docs/logical_data_model.puml +++ b/docs/logical_data_model.puml @@ -351,12 +351,12 @@ class GoalSimilarityGroups{ class GoalStatusChanges{ * id : integer : + userId : integer : REFERENCES "Users".id * goalId : integer : REFERENCES "Goals".id - * userId : integer : REFERENCES "Users".id * createdAt : timestamp with time zone : now() - * newStatus : varchar(255) * updatedAt : timestamp with time zone : now() context : text +!issue='column type does not match model: text != varchar(255)' newStatus : text oldStatus : varchar(255) reason : text userName : varchar(255) diff --git a/src/migrations/20240708153514-goalStatusChanges-historical.js b/src/migrations/20240708153514-goalStatusChanges-historical.js index ac35d72054..641f95579e 100644 --- a/src/migrations/20240708153514-goalStatusChanges-historical.js +++ b/src/migrations/20240708153514-goalStatusChanges-historical.js @@ -18,6 +18,14 @@ module.exports = { type: Sequelize.TEXT, allowNull: true, }, { transaction }); + await queryInterface.changeColumn('GoalStatusChanges', 'newStatus', { + type: Sequelize.TEXT, + allowNull: true, + }, { transaction }); + await queryInterface.changeColumn('GoalStatusChanges', 'userId', { + type: Sequelize.INTEGER, + allowNull: true, + }, { transaction }); await queryInterface.sequelize.query(/* sql */` select create_timeseries_from_audit_log('Users'); @@ -144,7 +152,10 @@ WITH status_changes_query AS ( SELECT zg.data_id AS "goalId", - zg.dml_as AS "userId", + CASE + WHEN zg.dml_as = -1 OR zg.dml_as = 0 THEN NULL + ELSE zg.dml_as + END AS "userId", u.name AS "userName", ARRAY_AGG(DISTINCT r.name) FILTER (WHERE r.name IS NOT NULL) AS "userRoles", zg.old_row_data ->> 'status' AS "oldStatus", @@ -187,7 +198,9 @@ INSERT INTO "GoalStatusChanges" AND gsc."oldStatus" = scq."oldStatus" AND gsc."newStatus" = scq."newStatus" AND gsc."createdAt" BETWEEN scq."createdAt" - interval '30 seconds' AND scq."createdAt" + interval '30 seconds' - WHERE gsc.id IS NULL; + LEFT JOIN "Goals" g ON g.id = scq."goalId" + WHERE gsc.id IS NULL + AND g.id IS NOT NULL; `, { transaction }); }, ), diff --git a/src/models/goalStatusChange.js b/src/models/goalStatusChange.js index 46cc4d7ed4..15fe4b8574 100644 --- a/src/models/goalStatusChange.js +++ b/src/models/goalStatusChange.js @@ -33,7 +33,7 @@ export default (sequelize, DataTypes) => { }, userId: { type: DataTypes.INTEGER, - allowNull: false, + allowNull: true, references: { model: { tableName: 'users', @@ -56,7 +56,7 @@ export default (sequelize, DataTypes) => { }, newStatus: { type: DataTypes.STRING, - allowNull: false, + allowNull: true, }, reason: { type: DataTypes.TEXT, From 288bba84d15b4cf8f3b751eec7d53cf9a3056f9c Mon Sep 17 00:00:00 2001 From: nvms Date: Mon, 8 Jul 2024 15:22:28 -0400 Subject: [PATCH 10/10] fix datatype, update ldm --- docs/logical_data_model.encoded | 2 +- docs/logical_data_model.puml | 2 +- src/migrations/20240708153514-goalStatusChanges-historical.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/logical_data_model.encoded b/docs/logical_data_model.encoded index 2b39129a7c..3155528ec8 100644 --- a/docs/logical_data_model.encoded +++ b/docs/logical_data_model.encoded @@ -1 +1 @@ -xLrjRzqsilwkNw5rFwGDJlRsPNk1DTh5EewT1fiuXkrqiIqAWvPe7JOIUPQadBgz_UyN9FL2KfH4IZfEqkgJVIHoPlHmE1pEyEMVZ0FAooAFulXH3Eu8IkCT9JSvB5Zy3l5j372MmpHEA7d7ubi8UHJ7x2t2Eq114US8Gtw_Wp6XV4kCLqaE68j_Y-8uZfyIca9wJ792uq---kf_Z_x-kVRyQekIjnWo5dyPnV7lKfHZKHkoAAxe72KStI5-Vm4Jj4CGS_PR53-EKHeVnWXpc44Q7yRVP1132ZXC_n756GMOlp0BN9oSdboSd1sVNCO7pyLxTl1Nb4OnuLj8Jp17_7wWnkkc589LnSSnQ2JR4Jh4xyWesDHFA1G27_7uCEQeW8o3OgUm5p_ZNmc6yM6CoRjFFnFbortgN_xtABBn4yoFTZjAxY0T1t7-zvKCqe5QRnYa3uD5dC8SZfMEOaougCFXBpoA6GUyPF5X375PzA5vJF8St10AEFbp8Tg3nodAuKFWS8joE51BYX62W-_tztttSmBoKmJpz0Ao7S5i0WY2X3SGed3pWHa1-HKiTZdWK0fnJacn6xH_xXhxWIoc5IPLr_hnfo4KBo0Z9KqU541QyHoetOYr7uWKSTaKjSbHC8d_vC_h0QYkZUg_HJ46XS9TFeyafrig7bOa_QbzytzFdWmrKtzBZhSWeIX36EGZBMUqrLpBaGNmMhQDavmmU5co7SJfCS6YApI3ZVxk0W96S3tmn12dpu0SbmIJA4PCVXdCxqzInA7ub1j2SWX4bLkGCrdcWdEm0mqHeH3jo2PRhddN37HtW2PRG3_zykklFzDqfgxNqsbVt_mCfK37fAHJ35z3mBincnfjIqdU0mGguTxdsDX8FMsGN0Ac3stOR2ISRlMNWEKZjFzTv3g3W6x-UIx-S71EoHrAOTep3enHTGm6tIeZJNr5TYXvF-tC1Uk1-agqzz81_0TB7o2wdpvts2IJkEvtKWVeQn53CEJvOl8ustpXiHBwEqXXExRs3fEit0cWhaGaf2Ob-rl3K-js8qFfT2iOtg0VeSthDtKdno__TToyViDW6iKWJH5718FyZ70HJagKBeXfFdPLQEobspRwcyGHIpZUkZbW_8t2yEczttG_9310OOO87cnuKU21Ul7ZM4IZaEo9hJXVHfg6Lt6_ge-P_SzgvgRN0HNd6dNAGPwKOXgSNXhndbfRMiiXG23qWkHjFqzXZkuWlNy5-PQa7T7IaWAkFYo52If0_kbNcoy-SwbhEpNk-lk5K1fPv6T6y8rG3voL8BEn49Lpc854gOmfYrFdDQwuB6uWVNrx3YX72Tg9-6ZR856y0naK2C5A3F74A6bBigCaew0GRUPwJMlZsttntn8oBfN0ihGYNcr0mygR0Z6XErRZoHUSGnD93cW6-JdPYGON2kvWBrq4vmiE7FedtjmXoakGFwkKmQMbZRtNuuL2bS8jlKx1s-eROSh63931oO0KRx--a2wML9HHD0gmOrTaO9Pd4QpblmCvIay74Vk-AZBLwbLJR5Dd7uj-i0CPuF0rVWLf1etfEgSbt5CmMmEvA4gC4gdoBqdcE_jCh7g3askpw0Sqt-o8vl7bj1vm1eV8EXcrhz2yA9S23bgx7_xjVW6PqKurAtHYX9uUnpins3FENkCtkvm0P_XglntYv0vYhkpYESg9PwoIGJdG3BJmfIgXKMumWtV3scIBD2bQ6PBqt5Ttip_a32ZVx1XY3gdi0nuT45fKfY273Su354mH7oJJPifsvXuuGhre8R2BL6_R-0q2khUXUOJ2yV7-yECt5nSdPrVNLozUdLnU7RqwTzasyWwRYBkdAW7GEDXsdUaTIUmFQn3p7Yez-v8O3Y_Hhz3ychVmtj7yTRX7oD2Z8MQ6EhYl2kCHchzEB0Thq2deySL2RDh7je8WH_ZjKv2yRVJBG3iuGnna_jzR5fZWetgoVQ57pEGRwydiZ75eZZW4mdt6nDmWwJwF2LQeD-GLJvkRDHxB4pipm-BX9IfG3YZYzyyfANT-BbUu_bjiHgfQfVSKveI_97cPmlJ5xHdXHsc1iAEHVny0Qnoesz0a-hGPphAuAEF-7M0li9oTWvvSTYSwQ84b1y7ZBS2PXpq86K-MNYamVUonOf5_GOoLyDj72SdB0iTo4MPA81Fhr-82y6GR5oI5kIeU_-LRmtDu56FuhecNVPE8bPc7dwHV_-shp__-3r7Xc_-HpqJAAM-ZegRpqOJlrBIkp_UKBsGWgHitCrhHDGnvseUwgkT05swuQIgwb-cpxQI8shJMJFbuBma1PHKWLlLknUSRgQGjmYqRigl3bdNOjkevrLCPc7NYscPVQnZsZ2wn6Vha3IUtKRZZMxCATIMcul5HfDkSm8ov2RflC5AvyH4wvLnDCzua-qXaDUKGmKrUfvvWRG7Rwfs-alJC377fZr-H5DsYnHfHPWQhpCr8I_V60VoSh-dAhiA9vu12p9-_z_ZL_ltkIfBl4T0JWnwJnUxAlbDAYii2KCws4F8h3ivpWFK9rF32FihTAoBcBlYJo9_93E5BXDykk__2locpLepWaJOiHApawtocz8YU1tnRg87QdrzkX1zh2EU570769SXFIvmYdBqYc6yx99CKkNfMrHYkLssVw6zBgGVG7HMJxovtC44WHuoV503bOuMSX12MULSv3enAf1UsbXLLUV0naJh5d4BfAV01-o_ozCSaTTPtz7nDxKcvUoyXmR7PkZ4__mC51MKmn6ri7Fvda5KDmtHFdhPV_CAVlPLCzBFzY9sNDpbAZDLyMq1X-cyaZPQvm-k5p14y0npunlzLLk5qEDdzeYaK3BeHw8yFuqSldfsSNRquVN7oxD7XuO5qlosfhrMT0t-KPAuUtv8sDM9uknGcXAR7f5JBVQeYBDd20dGLM_jOZ-YL_o81XVGeok69Tl8EYspq4HVEkxxqAJwCFwzc_0bahB-0VoDDRI2-Enri8mlz9VjT2cyHHdgSGURi80OtEUp9uT_otINa7E7Cg6DrOQ51QJaXTYBKvXLWRvkAEy2xKBm2A8VKNFXn8p9htBtGIXkvxPLNKxEVpTW2nSWl5rhOIyWUnp-J6yUglSTY9Pi8ZinsrYXaPSwRnNkiJ8GsQnPHHmnpY05Ee0zidA8iWxHPgTgKqdkbHRFfdO33ZD1x3V89AsFab5kFcVcF2vSAXjioTo91CEA48fp9BUcNPL40Yg3tK6rCLLnZjJQbElZhWLRdG4q6xX1yzo9r4sY5kv3bQYfrhOEW0KPE48-3Ih_nZV9xReu3Z552YjSq0nZzQY-S_NhpDsz_2nP4hQ-uL6lpEsICWGrXnccP3DUWqWBKIpp7FN29qBEWEMVReAT8Jgcy_S9RLNvSKoh2jQeqzGuQbOLmdCfpLT1GMr7le1q51mReZZGgmr1Jg-iVXAsha9Igm7azZ5Z1kWz1nmc3uzFRX50AfJu-Wo1zYJ2S7zce5DY3UnChqlUApjJaxn0JlxrymVcg7Aw2Ihxx0KryG5jyQyZKiFmmLDXFsLB88IqG1aPoo-YF652nEUAkrJH7dcr1vTCRTq6_kAjh-mf93d-NbrEoZuunSUB-iMZo8XgujDBPHlB1LEwI0vm2cZwSKy8gZbvAMukdAMfL-IDpXXzGD_zmPd6lzd0rXBFQva7jnZeDMQSXZXdhWbREdZ7ltyQfwKNrETvngDcJ-eyicgNANQ42llUH_kbzi6xKvKRbVmZ3hRN6WXt7qeM7wZT_75z7_vwbNPqELgkd4zmoVhkCPnl4HLjLh36lbXVKJVP7cp7P2-wiY9IchgJa2T5NrgcpSpa7oROmOGfC3QW6D7p408th7eBXq45Z7hoifUjCnlTlwqA23ek62n0NoMtpK-VqaWzl8e2u6Q7rwqLPYLAHoPsal_e-bgQnf-qI_z1sU8SlZx84ctjGGyztxdDjLVify1T-oU4kP3y5hkeCDLrLvEFQHz41exk7Wd3N7egHYdB_HAUCtGGFSNgSjqxf9wghdrTJbceafDW9y-8S-RGJQ1z-wUgqWn7_E4jO9-mi-r2sxLnPU_QCv-zXuquNKxzjEduRRFHjELFE45rYHz-CkpP2Uy6-z_rektEddJSwUTlGBQAC7rS6qQVi2tmkTXV8rQlZfSy8lnIJ33yvgc_pqdzFcKLHRv55OM-9HM5VWNltKlLjdj9iITkHTKrUQ2RcSURSjDFApyMQ3Nc4bL_u8io8iuGC3h2Nulq7VC_9kTgWSmuf8nZ3VAwpRjCp3cg6vg4feL_OsIXIBM0N33idBAa3JUUjBeQtjyhUZuO_e7Ftap8yBcMM_TlrOaVXBVh5SHpphUjntJtT-vwgjd1j-Dl7jjJfpbeRmB9ETtKZr9p0EhYHpF7cFn3GqCrZ0zTplI_JDhJHa0wUAbn2P3qJEpeU7HwAto0HnzFU0NgFSAO3a7dQJZnqJDk5EW3tX59Z4jEtQM7PoMtXFicOx61pbB5z48YKzYb9xvlb-FNfJSw7pds99KK3UFX75Fot-nG0uIcfEPetjQGteKwVKT_KQ7i1EJ2FjwkV-0Nm2bH0frgwlGnnm8hthGeXf_v-2FSb-9wIxCiTiNQFhJdAph0utgvxcUVEqSns5jhlLtxH7dp75BA4efspLo_iMNPFHlNTMHcoDv1rk4mxh7K_UjnbMEqrGJXhyqf_TaoyJuUTSYJiagULJZw2jFruL5mcX49v32T8jejQEH4M-iBoOmd8lxHFLwrye6lRMsD2iiwz1S7jYpWyog7VLjHzf6DyJfDu71UGCNMTGfERKuUqrZjvwynWiu-t_R1hKRHEndkSpJ3rf33hhDSxG16Gxg2vTztR3GXC2krpKEmV-zxKfySjxDUy_yoVO55jZdvz1ob5ALowZvGjYv4gzIxjVPtpU0Vo4dOp1pfh7usLbRgg6B257RHRe6_wJruERydlcrFur7pWFLaxJjv2bo_7NLC9t-PhpkOCm6CSW2qfuCMUho7QCddB3UqnOMBwzf9aQXguVAJ67UVAGTOcZUF3-EZYukW_F_vKZoiIl6jPwa2S2o0-uQZaMq9b1DbnSa3zaQuhVvn1eIt1yCnv09IHmjOa4VbgWE_aWHM8SPImUWtvjV0fhWjnhSargSnO5F-t13dYzzU0iPAAXIBNAM3R6m9eSo8Mo5LLxGMd0664iskrdeffx-hik2wJJ8NB1xNYrVUtp0tCphq71Z7bUxfJInCMMKozv-A7esVL5Cy3b7O-I6WdmF33qIdAEQH-AVMomCuvhbnEDNX3mGz7Bu_iIxyyGc32Dx_MIiXdHNuDMEVHpNtdKGlaoFWXoluYsPIbKWtvI5_Eq69eUTGOlhkcvDsrEOqWUUfuMitPhXdA72tnqboHKIKvwGhJ84mzAqDMgBfGMQ6P5Q8kH4DtEQnukV5oXF5NgDnGhH0DGjH_uVoArW1QgrttnserLc5usM775Qm1i5QS1d5Q-vuNJ2iy5Zm3Lokl0Da0MRSjhm0fW0PlIbv1Se6q0jG1Q9sLE61vzkob1oHfm8UbreU92yi1Jgyvo3gnPr5OWjXyMkytgtqkroY5SfzATosaUkzCggdZqA-TcPSHV4PkfLwLo0NIuCRX5J8NP2j05a3hAEy0PU1kw1MW6g0r1J26q3gN7m1d-4xa5QSUd5QCN1YvRq5U0Qe16hvWUCN9ncdeM8SLBHkjTPpp06a5nm7E2eeDIkzTioi-3JuhAXrK-cykNH5g45gLfnUQ5HKBbTvhK5TuMdXMQ7gXMM6nO0cvYlHFXqp8bQD_EdX6xo5TSJ9nwhb1SuN92PFZUiOLgG6at7S9hf2DGxQgs2XUgrRveEIu5615gW-frLO5ORKQgL6WLeHw4NBVDRUYPABKTv7TYfCBfrMPF41Q1xf0gDP-DuRJ2b0lG3rtZAqmkM5Q8R8WMbVk1qAqmcF3qt_Zs0gG3j0AZ0NCs7rXAqe6IklwlJ64LcHiPDpt7gtW272Szoojq4XeUYzPMl7Hy5drni9bFIsq7vbiDJGkMDP9WniOnrr2Ap8rCYie5YZsxKGhAXALiVkELfZSC8rSYRJ2vePjXSY6QE1kfHKXXL3tQgOL6O7CwlsuK75SnRG2KmFJVvFJYf65qOgD0vl--wDMZ6gCLb0iKBht7Qsu25pSrnwjs2Xix8kS_jIuH8_Y8yP8WgJjPL4KoNbwVF35GVpaoO-VtEGWURlPvG3X3T-Yv2s6Z7txvKzFdiWYsXPW8LVpQoElw8tKxZDVOlQv5_5Xd8b76_MdVHD50rSRMTp47MemjTZz5iS7-23kd9ST7uhRkyndcnZqCeiSDvS4y1-xKYS-j7YB8Xl7CxFQub8reM9lWPeQKTyD09C5iky-wSZK5DZqlQXgxb6skaU4IYRhxL6k_fOSb-qXsbJDF2S8fofQaaqJgCwZTQJGcTU55k5et6BdObk_MuoRQJ67FhHJUZ4Pt7ra4zFsxMAyb0qS-qvPQZ6UMhyOOzmMNOnxVq-tcVVrwn3UpKAx-31cEvWWa2F6cwURzfvrxPafHjIvd67YIAxg7bQNdDflDlBvAIL5fyui2Jh71GllnNgsCRmBmM4Uoyw9Jz9ZiXukpDIzSZ0-h0w5jruucLkt9mGri-Dw2kcqcSytdIVAdDGkmuA-HoB_6tKrmZctB5g5LQngnHQ_eixXvW4id0VkYrc7UBvHV-pNYp9qB87lP-yeF4iOHn99M2_zAQkaS4wAmaUwMpapqiUtUNGxxgREmF8fGpdrTJN5mjszGddq98dRLf0_gxdaVEBErAfWvdfUps0Tfoy7ZWgkGwwhmS5wjN4zP57VuRtBpZHtacYjFUraSW7k8_nSd4B9EoLK8DUlDXNBPHXrruPts6M3nHUHGlVo-fct7juSdZKFPXAFviSNQigRc50HH0DvNrn1UfA0CPHXc3e81GlJDmGgSTmZO2YFFjTmqt4Gfz7kT2r5tEnOeKHjpLB2cfgqe2LqchxfS7TCjXYu6htgjRB1RFGpvvilOVhJINIbVGGKuYh0bcnHdav3mvY5DZvwrOU3gNLNbOZnKpnvZU56_NVrZYZgyf4q5Uz8r0dk-ZFjE_nDkCOzhxeXuqNucsSs6FpDLptyPmUagdYu8muLJB_NyYaMFQOlb8j5DPj8HLKu5AaDzNy5y1HIpI70zMnv9aLxnuRoROn7SscpbgOcPwWlsXiks7IZ1cmYVHFPZGvmf2UB_CbQX_1QQIPalgruXDCtQMyq7YoopkOCiHnMpSEOKvHbaCBqwVsc_H5v7BCtoM3PnniQ9gjpFDQc-xAf-J0YDeVakGIrYjG3hJIlxaFavWZKQF9jIz01KANRo_CVRBFmrfejJtEEGuyEgPSR7QuzIE7aFiPr8HLjD88DzPW-XLX8YA4EujSp5XAahoMShFKZmHPfWgmbwDC6i_a7U7w5YslaFD1gQIUu9RtfTOqNb6JGKhbb6J1KSwKPRI9R5hF2ufAuH60RfrJHm4bUCoHmsWhpLKz_NLAA7XoSV8qpbPOQhGRDTLDmKIdSWsNzr8BTEkLcyNmADfxw9LQco-Gd0zuZppRvUsPnhJDfLlceJL-7fxprG1ckdcsQ_zg0cIDWl63acTWFHyFFi-JfZIfrv8YMN1vaS6kZnUFBWmRYnjhQYqcYZYV4D-xS-5n-RP1G-tuPATG_IJ-6P6xqYJJ4xfqngAdCpFRLcRIg5NN2BBCYDBKbEEz4QfJbi9z7JIHcYS3GfXCXYZIWfoTf1NxDIfjkbfPDuz8JKDSOEGFgqtZL3hvENNdpa-Yv0zRLGtrTKbGT4p7PI2cX1GtR2h49jCr4NKjPD-gJwBRuLWHhS4CfEOUXcYhfZZVX7BHJWZJIk_Rf19grFrAAlvjuImgeY4JjEBxKKcbQ_J-yG7e-N-VgtZxcZkMyyoNmOJoFNp-ssMmq-nBg9ezkCdqABvVNsFBfUergMyAyBGsKg2KxrfjWskt1A0rHsZmAfjPifwrwOxNPGb2Cr9aQaqq54zLDI-5Qx3K_LrOjK-hBbirZEhewgbxEgo-MMfndxw8ffmpEqb6bDClj3k3Ydx6z0C5S3VskM6WAhc_X3THpUtUqn4y-saZTjzz7QfXQOY-185ylwcgUpwHlptHq7kOCPnuVkNQzv5knZZW7ZB_PfM9tdaYTqSgp2cNWyfXh5brtEPIwNpn6mUKJXGdbxrfffBXrLnfDeMslTsbf6s_2QRjIqnNnRcOwbFfGA-05KE-D02WMFPF_K2xc4AT8woDSABts-1EnYfr2jLoVDK-32Te3-gOTrYVHSXZDbkniY-awTA3XS6UzYEgTvZEtfDnLPBhR8YQnQAhKySxl6_frVAD-Ch9b5X_4lsiy2USEdlKOMRj_pFoCddsd_gGTBZ7psQAbXz6ykTaxE5XdtVmYRFHbytjYuONRiYnDBuc5R6URXzmSWjOQPZj6CuEmaPHUb7HFdFtVY6z9MQ-8Dfzt7YugZn7XrOErQ5b6NahjtB4tLHyId-s00JfHHKcb_x8u-Txyox9iZ6ZPrPQICjjsVCoD-RhZhvdltSwIG_0UTWCbntS-3WhXsfaurLhbOlRWs9msLJdjoS9CuhR1qiWtkxYygGtkesDDQ40Qfyl-hLQYf3DwuDw2DHL9vh-xQYgBdcr6SssV6VfVoBlAz4q5q-o2lQfxkesiSX71JMoBengsivnWAZtSlrfWBlnrmDVC1KyLLCkMDfaH_swiOgvLz5HwN9bAif1yddD8zMZpr6zJHEh0y5GgwjkYw9yGfsMHH_yF \ No newline at end of file +xLrjSzmsalxENy7IVaZY6czjaijLdMhlQcLPJbndoof9pjOcbL919CH1p05c0L2Eaij_lmB05m04IO3ao7Q2JzAGG7VpGQFHwCRBFnW7b5UxCadJpr9mJr2UxYcvBU6EfUyHtwO05oNCquoIzoozWv0dQShU8Rm75EpI4c787_Om9PHlYV4gAm5ZwMz9cgRfCq9pI4z9IMZwbw-__i-J__gRzlnwYx9t63AMVfMawUzIb5DH6x8ahUcSP1pT8_vm2JEqHn1pzbkIFabHdXwd27DOG9eUftyl88OKS9Z_Jv8M563-qYnmUVRYxFBi_FJiAZtwLhndHtz5UP8IleNq37F47qPgl6bB8LXNV9A2Lh8zeMFyJeo2RVsCGY7m2K-FKuvsa76msolinS_qLu9XUfnYylxpBqJvQf_xb_yzIMpy1FEJ_PwIUqYdGLp-VHM3TAJMMmRfus2Hvh24KwMJ51Ckwd3u2qzInW6lM7gSGbpjXj0y9MK9RWa5dFov41t0umKguMFWS8TAE59BYX62W-_t3tttjmIKBn0iyql8zWIp6I084jv0YCBj1nO4bDTmjoy1XrA82qfs-r7xvwvn6CXIMcDITwqVVnf3yH8oKj7iKG6aDS-HsgrOXu584PTDqPWS1PFuJ_wy6O7gngZ-Mv9Yi5Euo-U9v7H7nSEQf3-rl__VqwTZpJJSajCjI2Wg40RbHCiPRRNKSXG1lDPjuwma35vLR0znVagmw0hjOAE_kuI04TmCF2d4-NCWnoN194aHary6ouUp774eFkMMa182KUKEb4oMkUGSx45BH2X4DxB9bclVjGFTFQ3P5j3Fl_hccoyqdMdg3NJQDxS_GodGAQde7CFN4l1kpBP6rrAIzmY1MhWFEJQsKiyR9DU0wMCRDbi9vrlzDM3v1Er_7xdU8A2RVrwAFnnSK7AFSfWFZ0DJL1s3GR_AH5DVaptAFamxSy5wfBuIxODq0F_1qWU8_gSl7JR9BAw7dTG1-aR440nvlfmzphPVUAg4_WvIs8sjWyCag_O2g6iH2Mb8oVxMyjIwtSHGEjyAXZVe9sZpXatTsUch_prjNxzbC4zIaEU88u91UKwu22TbIXV4D1-xAhJsqcqR_KtYX2MSRjqICFvMOVZimM-w7n8OeB1018ysl2ZmIBtuIIgYKKZsn4wShn9Dm-kuNzt7pFvdDNFRwu2ASqqwvQ3CAZ4Dpg-CU4-ZBPtb420GUadAhf_di4Jta3wyXdnByfveUKK1Ln-MmmpjGFdvrvillt2fQpSrxllxEw4qiiZFZE1ReHwug41XOo4gbx00cL8PKnQdpcjSSRMxXVJDtGMW76LeB-AZNOCawHuKK204Qp744wEaBScUaeA2dMWprslQ6D_-YtzNa76f19Qb5V5g0nfMtUuG4xfZDPvymJaqaUI05f1VaBreSA7W3lRIHN2-uC2XV-BDFQAy0kNpMXbSMjhQUprUA5GftDBh5BojlX6cRCq06PqCIF4EwmlfOab5cKHZ1_RicepCyYo2ZVpte4JvYr74lg-BpBLwzHJRrDadeX_iGG4uV8DVGrf0OxhEQGKF5CpMGDxjAemogVAlIE4x-yoiUgEJQxFeHpJVx8dcyUMq6N16XyWc6NMeqBmebmCEEhiV_kr-0Pd9JhKeT6A4dfwaUp7OCyxUuBVxaW1d-Egm7UBi7cAkxE85Aebdh991ET2CjF2LAg5HRZ63z-FQP8iqArePalGyL7UpF-GSAD_i568EgUm37XqGMbJc88SDpYCKJ14V9TDcodRk7ZX2lMWXi8lKODlu3GAwjw5vXCBnyVxmqxUNbsVdrpVNBr-VNLsVlBvmsJRo7fk8kwSg0T0usFQTwJt9x0zh4VCUAZtxaXWEhz2lqFoQT_31qVnDk4V8CA0XPeOwkAyAun6Qlyui1slKAHZmnK9isgUsWg14-DqpaBrhzSj0EpX376J-FrWMcE2JPh9zgKVCv1lhoUACSMYEE0J2GyR4t23fFey9LgWtv1LFMverdieJEpF3uk4Lsg4IKCGVlgMaslkvNE7wRx6Pg6gLFb2O4_wIbLKEyvTtvuIVv3k47Oty-mXOqq3TXIRHvyrmriL56VVl07k9vUmS3EIoUz512omv29vk0Iuyx478UBBsIe7vOuyTYyJm_PKx6q7AVE1D6t1J98QyHVb2XdxwaIu3TzV0uTcZcwgUGrEugQMvw12cbxMN8ceJKJD9uxs80rHrI5VLknEVRoH_jWXtRCY-2JGsWTPQr-kdCfJgnBNBbpOm71XTOZFqoVJDRgDmLxLX5JhupyNZaqYGEO6P6jZrqNoYSZkgzygvccQwIGwHUchB8OBRJ4mp9Te2jjKxVItfkHcKqX-_9ZcwGwireipbrRcMYPOUdBdxkKlpbLq502y0XPX_-y4ZJeVtb6j9laT0J-LvJE_wQ_5UKBAxsW7AsHP2Vit1HGcmFkKPNuf7kNiDmz8bUXBvSvdJUuNmktLtJFWtPT694JpIXWLrbNozpvGUqRS1tnPge0xdIHi1mmR2PK52W745oXSLpX4kNXFCjpsIMOvSFQjk3DUhhayCjwNK0-YEOybtLtkO8L0Ynizs09LJXPo449QPKZaEJ4ga5xOM0jMPwocHUiMSGkb9wn7xBpBhfoHtrdVqV4tjIRN_846ygVcrCQF-0uNnPFZ2RMmS_cUGLGt3z42Ujb_4mP-zbVxpi_s8NLIt9SgCzNTRG67-JoIDbhadwwMCwZy77FX6x5KUuCLuUlfbMoWOT2CqdnwddxryVdP-_VB5oxFddnqV7qdtsvBwHjKvyaT9PjVn7UcI6OQtIs56Q7vAAhL0fox2iYtSWRvYQn_h4M_oJ-ihf2TH3a-Da_TOv8zFk73UzSLAwN7wjth6dq76XWluDzBS1kBx5wDjPA6_Ph_BuHt2I8ypo2mRnE2sX0DPzpk-luAS8rmOTQmkB3GehsR4JeJQl0RiNLjn3tWVYjS0bP2QIpLkHIwCkvT6QIEtlLPgRhwo7LkW6FdbqWXxqTUJz6TowrXdzqIiFHF1aSNE6eMiAdcxt8vLcT1cpIBgY64ECS0Pz86DKrGKaBPhIzjIUg-qQBQz4t1O4FgWGJvZBOkSSkinC_znuKh1S5ULJYG8HfnGX0kvYVogskq0HT1xg3QcAgwnMfjI7VtrIAjpf2O3zmY-Vvcx2NJ2NSfo3PMcrb7G02CdYAT1fT_wnkKzjxC1nYWXkpUq01ZzQYzr_MRp7zx-5jmHjIBYIgscxv4n1ZQ46QTLDbw3IWlGBCgSzi0bGi-3vfnTWxv0SahbxHVUgVBJcb8JRbIbhNVKgYo4qrI-LGKDjHNrZhfHS6I0xacZCWmDjQR-KTXA24cf3fmtmuWLhFiOT9mmE3szpGYbKEhZSmZoLmZ3vP6DMe4zkBUn8drtvq9D_WunyTlB5rokok4ggEHx6D74HxJ5TuPCBSkFGuNzb2s77D8Tmi18RXdz4GCgjZFSTvhcoBEjg7nwuwxe5_TrxL0XoV7lyd9A3j4nPaxSFnLDNaK3rrOwsqW-cifTSO1pGFF7SqfOpT5BQHlnD4MjAtzYpl0ZwkOVpYmUr1v6GxYeRHxLRiHfI9o6E6QiArevUyPyU1kdfXVrvtZ7eHPFwZ-nQ9OgTursy8EFzCyUWdMZAJSf_sCORgqrLkmubYuyLh_vu_Ww-lUixUhqi8gUJd3B-EqBNcmGLsrLiIgyNbxGDDaVRSPaBxYp8bAQkfAAPqHVMQTEk-KSPDkT2LDWQa0reE4Z1cXS_zWAXmuQy-1rBLrlCdvuMnSIT5WrN82uI6wRdxgabtny4m74pGYjNoygAfIBJEui_TLtdhIDFMzVzyUs9pjyUPGbsDAZ5GQ-yv1hgxfFWR_mAmxt8VifS5rdhEdg8f_MFeeU6Fqz58Ixzb1CL9Jx9tfbx2PuZFFUl7LAFmDT_RoUirGZ8xkzC2_EaKyxC_RnbwxEEyhmZxE4TSREiezbsywrjMVFUFu1DkxqCVNRfkEtmKRVbZFdrCyrTlGjk1qZj1SSUj-FjfzstWcXixSDtI7A-6bj47tAliGNOdU1NBqwNVgSy2inoV2Je_usB_ttb5aKzHPP5FQMM1Js5NXmBzNGvYdDbdGTMTVabMPY7gV4pJjV_4AisP27Jlc5ByACECl8w01x9Tv_n3UJNAWDEXUGCe8nB9SwwpOzusXbQ1vp4lg5lOqYzG9smR1t9f8wWdJPwc9uTwVi_MJu0pftFod3ur9csRzTB_OKtg5V70SetxaUDztJlU-fRWlNXhz3R4kTxwnr0IphF5OtGksPgQCRoHnl_WK13TqyDdAXreSoRMCR3UdeES0LHDOpiQFZi-DZyHjaua3PUq0V42vq00fFsud73bQxL4VMdb5gJ6A6DYsiExdTkSyU9dlO7Zvi7mGYfNr6yeTsENvptfBpeNDVOaNH21x-4GN_xJuxWF2Sr1mjsrhIcr3dnQXlQhLz1pam3wHhdlW5y7Pe1vrgwVOon04htlSWX9pJ-p7SSE1xhh4lTyIwFRRcABl0udYxxbLPEaSpsrdelb_vHGVm7NF8CehspbwzicVPFylKTsTboDv0rkCoxtZLm-Xnds6zrmJXeiih_TanyJxFTSuXhckUBphxqD3kuz7kAYCKoeCpGRPTrSg9iD2NbXzBGFcLVHvgxGFTsDuQ4vBrRXe8Rb_4uKa9_RQY7Y8TutEQn9Dq1nbJ5o2qkJbrh6gpaxV93BRxUBiFkn55csIynzaCSqyAiqvdlGSK0UaEcdlNlTs0mAJG8GV5uR7lRNDwtCf-pOVF_0aMzUReD_UGKfJ3jVj8rR6OgDBiqZxKoOpteAnWFtEWi_RHM5cfhue1MzX1jmNwTlYivF2M_BuzXK_D1pwGjUFa7NJvSjmrbV1jllOqpG0yfW7OaXsyFF35GLicxwMX0oPCJDzUaK9D0zUFrBZZN2KekgHnUfoUN5wU_El7dvfnHO9t8qiTYNC1n2USL7nBg8mWEquEQ3xITKcFCoYq9HYUEm-0CbBOcYGYNmtmlJom0Z6ECjQi8RyHFiNDJbn4SaDgCvQa_wv0YVZ33M2iecAXo4qEsFQM0DgUY0LALLLxmIb06E7YHgsdOjgx9ZkkooHJuV91etZDZIjB0xDBRsv1JFcUxjJIZ4KMSs-c-E7aUJt5ym2bcmyIsWim_73o0fKSKh-KUhN3pZckN4urUgV03oUlJknhkZn2OC8tlz5Ao6UxyWQmtgFRXzwZ3iY9yKEK_KMogIgb6lAHlfoXmz3og35yVqF9-njp6a7AtF6qdhFTC5GuMkALkIAZJdBI2DCeJ0ChGo9KVQYiq4o4g0_HsEqB4IytNeumVeJA3LM4Q1IYuIlY8reZQ4MxxezLD5PXUDbXnmZM25WHfr6SOj_pWYd2Oy4pSXbo1CW6oBeVEGAa01gzspY2v08f0jG3ACvA7B0yV_xA0v8yuCDowyF45UC0vpSS5BtOioWiGMm_RV2RrJwN6vH3kK-blnPIlNScrTHnw3VEpCi4FXFtI4SbSe4qkd4uGkQ2B09a0HH7UGSe8xSvHu0QW68AO0gXE9SV0MVy5kE8qm1E4ICNHkvxYoD03K3Z5mn7d6oSnevrY6ZPQCLnpWEa28u3d0YA3ShWNRCHdnQVY4eFbU6RIoD2BK9HUGQXYQXOg0nUWnhXwU29q0n24s6nO0cvYlHFXqp8bQD_EdWcxo6DE9au3ToW6M5omkIudZ4YDOAK-ox12DaqP5759l6AMkM3akDIW8ZK45BHLWLX5OtK950HeK64t7VDHPHCb8OkieiukN2AokG1KXpe0g6A_MuAfmZG8403Tun5cDmmHOWiYEBA_K288ZmsFCCtZaM0T80YC1OmK_U5HPGCbEBwlIc48Z8sCkvxZo8u0XpdFKiH6WdDu2LB4HyDdwWt5YxnjD1XP8feQ5omn4c36nZ7NK8HcGQP28e5YdqxKKH5eZ9rtr64oGtJn9L84JOtR14Y6wAHkvKYGWgX_jLC4Hc1JFH-NAWuhcAAm3J03D_a536oC8hOEB0PlZygOjHW546nGEdVTnHn4RYuhpsAs2Xix8kS_jIu99-b9uoH34dRov8aaVFqzEZBe_Jfqn__Sbk2xDrcNmA4DtoBidSOClRVN_tqzAaiecq15dArlpRoYjv4xJxp9MQVUv4UfuLuj55_kZT9CdAraSLDtA46SulTRsbwX8_ItddPwR6ulSjyjad18BF4SND90F-fAtNIOuktAB9nF3EhhIvL6ohs5gYjaGpT031R8FlkavvCRO7Dq8kwvW5bQtf4g6IotW7b6cx9QTaUeqtLp7E6SAgY9TayWPeyMayAdNbJQ1MEnYrsBhRDkzMucHPpx4DxfLUJmTr7DYdjtgx6Izd0gU-KfLRZgVMBASPTqTMu3_Tqc_bGlmxXtIwqIuzJjeSP0YLYl7swwUvPrvwPOYIzonbcZkIgxd5zoQdzPYEVlw1arwkpI8BUSS72Ux6URGplGd1Onh9tufFqcAo7ApDrhnnCZ-j3uQqNJkRMxGb1pUouda8wRURpJU-9CYUDox2Yxv79_oPTZN3E7OjEOHMhHh75hwHtk7a02-U1-sBM8Pvlr1_xzQeC7KlWXzax2YyInf544jPBVyfgAPoJel2HxaxEZFJnRHdTdhkfCx1yob1EGrrDiN1thr0U0qdYhXNaptekkPouCxKgcBcUDpDOn-dBWQE2wv3hUd2mNcrS3raoT7ZlkZFDlIJQQ4ytcLo1-mG_5wTGyau95SZDgqtDSXr6_RNXFNR5QF5LfD2zl67cdOUtX6V3Wvd4a-NnXORo9YLK1D50EHHNa9uaO0mL6EOEGi7230s1IXpt21ZAOyWrtFGSn7cqUrrB4JSxLYXHMxEKiAOchMW9dQPlFjmzaoq6hbQl1griC1lzpFdsIvZ-T1PTQHy1XRWEi6LRLERpq31ceQsFNlVXO6hzLILY_1HFtc2uKVzTloUAkdmaJSLxalI2k_vCXmv_4wxnmAj-o7WL_kQP3GP_yzK0_yK1gJeUxeX31TCVj7oAnO3f2-LYKIrcKb4LZaLgG_rV0po7L7i8S3DRNaZHth6XV1lZqLBQhAEfoHdgYmw62pRzg06RITz4TgC3dEZ98d-orY6yLfe9cMzh7k7qJTeRZGTBhBCvGoo7LVCuvHGL1QGmV_QmwNua7iVipJ9Ozl66Xidg7O-rwRziQpwEYEqXUIv1hIBDG2lDg_iGkIK2jPfyrn5q05JhzlhyHziilBKMozEUup2WG-hbHeVh058ukKznNKb5MurWOprcI25M4cAiW_ZrZ9K46Me99slzIB1Lcg3e2FgqmMB-0PxVpiKrSHvejROJt97U3Bh6AqeoQgdSiemOggNIJ3QHBOjPONL9N2AmZLEgPEGahmKIE6s5-MgWlwufnG0EJhx6cKfhZLQZvhejkAeKxi6oUMh1Rfroite-1HjF_H8hysNoam4Va6UN_3stk3QPDAjyqgMlmrFUUg0CryysxNzTmCmHC5unyapiXvFXvqNo34QLUd8aQouFChXrqUBfvK4ZSMDjxSKiKQSJuXjtRdmflov8g7s_Z1JgdwGVGx8q-aHQOW_E6DHSPcRxwamwrKfwOPP54Ph64bpq8ZNASjZFapOIiqPWQDEB42KQqFEJj0A_TgLDFqlBvd4P2AXhZ9m1zNcy6WTVfwwy-Ldqt07h-g6-BYcfZucORQIKq8A6RONO3DfcegwZh1lrMNGxV6k23RYXb9p3K4ELzCURS0xQAK4QwNttT0RDnX-fnDzDkYKxg8WatJY-rb9fMly_la1wEL_dwjuXvexblCiby66yZDymjiLYD8SIwYQFVZ9z3Y-NrzZnwNkDQbl2iYqDbAWbEzQRODhTmIWjKTe-2gRMRgUjUsEzsK9GJDIP6hDD1HFLJKlXMkorF5TMBrCQofOjOpgvEgfPpgilbbgTv-2YAQSCpj99hJJhxGxWuf-flG31N0tzhbbe2gvluGtKStjtjCHFFjf8tRVV9sgOMcClWI3VBEfgdo-aRyzqT1xc36SP7xbslU9RiOwu18o_tUTYTvv8dT7QimfbuFAO6nPzTpcKkbyyHi7b4uK9vUzQQQIuzLSQpQ5jhtVfQ1jlmccxKjCryNvcEfJwM2lW5L0VZ00e5WEJ_r0kvX2dIEiZN2YzxlWJiOgTGhLSdxLFWmdQ0_gc6zPdqN8OpOxiOelfEdIWvN1llKYQdUOBjwJSrsJwso9ciMYhDF7ExrlwJNoZUJAnPHOVfRzhF0dd3fxD6DcuVypyZ85zf_wa7IunyzcYfOVHlBdPEpXORztyAcpqPVC7Ok65sxeiJI-9XMndMuRS4eBM6cOxHhE0i96KNfNqG9pzduXlITMiY3QVznwkAeyHuTM3jMXTHbvAxTonDrSVCf_jW04wKKT9fV-oEld1_CkwR8nesVMMaghOzdpCZVcwvw-PxztEaaFm0NOZ9QTtFeuAuTgPEDTQbMBsuDYSDbSvxSd2GkAsmTB8jxkulAcDxgDZRMX06gUhuQrMegGpUk3UWZKNIUQ_ksekYu5jHajjdndwNycxAlHD1VFiWhsgUxwDh7CHmKriYwCQjhUSO2uzFBnQO2dyJS3Np0NF5LJBbhQP4Vzkh6AkTVHKUbo5IhAGSfbpIFLeyznlKqIQmF1SAkhRakGV4EVLhap-7m00 \ No newline at end of file diff --git a/docs/logical_data_model.puml b/docs/logical_data_model.puml index bfddac9d6d..776be9f5b1 100644 --- a/docs/logical_data_model.puml +++ b/docs/logical_data_model.puml @@ -356,7 +356,7 @@ class GoalStatusChanges{ * createdAt : timestamp with time zone : now() * updatedAt : timestamp with time zone : now() context : text -!issue='column type does not match model: text != varchar(255)' newStatus : text + newStatus : varchar(255) oldStatus : varchar(255) reason : text userName : varchar(255) diff --git a/src/migrations/20240708153514-goalStatusChanges-historical.js b/src/migrations/20240708153514-goalStatusChanges-historical.js index 641f95579e..7f2f3ce157 100644 --- a/src/migrations/20240708153514-goalStatusChanges-historical.js +++ b/src/migrations/20240708153514-goalStatusChanges-historical.js @@ -19,7 +19,7 @@ module.exports = { allowNull: true, }, { transaction }); await queryInterface.changeColumn('GoalStatusChanges', 'newStatus', { - type: Sequelize.TEXT, + type: Sequelize.STRING, allowNull: true, }, { transaction }); await queryInterface.changeColumn('GoalStatusChanges', 'userId', {