From e843a86fb828348837524efbc64c3380abb3886b Mon Sep 17 00:00:00 2001 From: Michael Taylor Date: Wed, 26 Jan 2022 10:47:55 -0500 Subject: [PATCH] feat: rename qualifications to labels --- .../Projects API.postman_collection.json | 2 +- docs/postman/updateProjects.csv | 6 ++-- migrations/20211201194416-create-label.cjs | 12 +++++++ .../20211201194416-create-qualification.cjs | 12 ------- .../20211215213314-label-units-junction.cjs | 13 +++++++ ...215213314-qualification-units-junction.cjs | 13 ------- .../20211215231227-vintage-unit-junction.cjs | 17 --------- seeders/20211209204301-add-projects.cjs | 4 +-- seeders/20211209205139-add-units.cjs | 8 ++--- src/controllers/project.controller.js | 10 ++---- src/controllers/units.controller.js | 14 +++----- src/fullnode/syncService.js | 14 ++++---- src/models/index.js | 8 ++--- src/models/labelUnits/index.js | 2 ++ .../labelUnits.mock.js} | 4 +-- src/models/labelUnits/labelUnits.model.js | 33 +++++++++++++++++ .../labelUnits.model.mirror.js} | 10 +++--- .../labelUnits.modeltypes.cjs} | 2 +- .../labelUnits.stub.json} | 4 +-- src/models/labels/index.js | 2 ++ .../labels.mock.js} | 4 +-- .../labels.model.js} | 36 +++++++++---------- src/models/labels/labels.model.mirror.js | 19 ++++++++++ .../labels.modeltypes.cjs} | 4 +-- .../labels.stub.json} | 20 +++++------ src/models/projects/projects.model.js | 24 +++++-------- src/models/qualificationUnits/index.js | 2 -- .../qualificationUnits.model.js | 33 ----------------- src/models/qualifications/index.js | 2 -- .../qualifications.model.mirror.js | 19 ---------- src/models/staging/staging.model.js | 5 +-- src/models/units/units.model.js | 34 +++++++++--------- src/utils/helpers.js | 2 +- src/validations/projects.validations.js | 2 +- tests/integration/unit.spec.js | 6 ++-- 35 files changed, 180 insertions(+), 222 deletions(-) create mode 100644 migrations/20211201194416-create-label.cjs delete mode 100644 migrations/20211201194416-create-qualification.cjs create mode 100644 migrations/20211215213314-label-units-junction.cjs delete mode 100644 migrations/20211215213314-qualification-units-junction.cjs delete mode 100644 migrations/20211215231227-vintage-unit-junction.cjs create mode 100644 src/models/labelUnits/index.js rename src/models/{qualifications/qualifications.mock.js => labelUnits/labelUnits.mock.js} (55%) create mode 100644 src/models/labelUnits/labelUnits.model.js rename src/models/{qualificationUnits/qualificationUnits.model.mirror.js => labelUnits/labelUnits.model.mirror.js} (52%) rename src/models/{qualificationUnits/qualificationUnits.modeltypes.cjs => labelUnits/labelUnits.modeltypes.cjs} (89%) rename src/models/{qualificationUnits/qualificationUnits.stub.json => labelUnits/labelUnits.stub.json} (66%) create mode 100644 src/models/labels/index.js rename src/models/{qualificationUnits/qualificationUnits.mock.js => labels/labels.mock.js} (54%) rename src/models/{qualifications/qualifications.model.js => labels/labels.model.js} (53%) create mode 100644 src/models/labels/labels.model.mirror.js rename src/models/{qualifications/qualifications.modeltypes.cjs => labels/labels.modeltypes.cjs} (88%) rename src/models/{qualifications/qualifications.stub.json => labels/labels.stub.json} (78%) delete mode 100644 src/models/qualificationUnits/index.js delete mode 100644 src/models/qualificationUnits/qualificationUnits.model.js delete mode 100644 src/models/qualifications/index.js delete mode 100644 src/models/qualifications/qualifications.model.mirror.js diff --git a/docs/postman/Projects API.postman_collection.json b/docs/postman/Projects API.postman_collection.json index 720e77fb..f2f46ef7 100644 --- a/docs/postman/Projects API.postman_collection.json +++ b/docs/postman/Projects API.postman_collection.json @@ -197,7 +197,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\r\n \"originProjectId\": \"c5067a60-e329-4510-991c-b302fd00ec8d\",\r\n \"projectId\": \"c9d147e2-bc07-4e68-a76d-43424fa8cd4e\",\r\n \"program\": \"Eimbee\",\r\n \"projectName\": \"Zoomcast\",\r\n \"projectLink\": \"http://dailymotion.com/ligula/suspendisse/ornare/consequat/lectus/in.jpg?aliquam=consequat&lacus=nulla&morbi=nisl&quis=nunc&tortor=nisl&id=duis&nulla=bibendum&ultrices=felis&aliquet=sed&maecenas=interdum&leo=venenatis&odio=turpis&condimentum=enim&id=blandit&luctus=mi&nec=in&molestie=porttitor&sed=pede&justo=justo&pellentesque=eu&viverra=massa&pede=donec&ac=dapibus&diam=duis&cras=at&pellentesque=velit&volutpat=eu&dui=est&maecenas=congue&tristique=elementum&est=in&et=hac&tempus=habitasse&semper=platea&est=dictumst&quam=morbi&pharetra=vestibulum&magna=velit&ac=id&consequat=pretium&metus=iaculis&sapien=diam&ut=erat&nunc=fermentum&vestibulum=justo&ante=nec&ipsum=condimentum\",\r\n \"projectDeveloper\": \"Cogibox\",\r\n \"sector\": \"Viva\",\r\n \"projectType\": \"Topicshots\",\r\n \"coveredByNDC\": 0,\r\n \"NDCLinkage\": \"Shuffletag\",\r\n \"projectStatus\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\r\n \"projectStatusDate\": \"2022-01-19\",\r\n \"unitMetric\": \"Fuscia\",\r\n \"methodology\": \"Quatz\",\r\n \"methodologyVersion\": 43,\r\n \"validationApproach\": \"Praesent in consequat urna\",\r\n \"validationDate\": \"2022-01-19\",\r\n \"projectTag\": \"Neque\",\r\n \"estimatedAnnualAverageEmissionReduction\": \"223\",\r\n \"projectLocations\": [\r\n {\r\n \"id\": \"40ae83b1-b497-4f63-9b7d-874505b67662\",\r\n \"countryRegion\": \"United States\",\r\n \"country\": null,\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n }\r\n ],\r\n \"qualifications\": [\r\n {\r\n \"id\": \"702cafbb-c624-4273-9cdc-c617ad5675df\",\r\n \"qualificationId\": null,\r\n \"qualificationLink\": \"https://qualification.link/1\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"type\": \"basic type\",\r\n \"label\": \"qualification 1\",\r\n \"creditingPeriodStartDate\": null,\r\n \"creditingPeriodEndDate\": null,\r\n \"warehouseUnitId\": null,\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n }\r\n ],\r\n \"issuances\": [\r\n {\r\n \"id\": \"3d5a8ed2-e5a7-4275-a36e-3456812e39b7\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"57c1859d-6aa4-4c57-9dfb-6438e0d4653e\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"74887b22-da3b-4c2b-b945-670319193cdd\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"7f7f23a5-3e1a-43b4-82d8-b4156b158f88\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"a6745831-5d5e-45ed-b9fe-fd6aa129df25\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n }\r\n ],\r\n \"coBenefits\": [\r\n {\r\n \"id\": \"2995a129-1fad-4251-9942-7c6db2fbff74\",\r\n \"benefit\": \"TEST_COBENEFIT_4\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n },\r\n {\r\n \"id\": \"729c71bf-cc6e-4424-842f-54c2a490952a\",\r\n \"benefit\": \"TEST_COBENEFIT_3\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n },\r\n {\r\n \"id\": \"83913f9e-9876-4c4d-ac4c-10dd992d7d7f\",\r\n \"benefit\": \"TEST_COBENEFIT_5\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n },\r\n {\r\n \"id\": \"9506cf84-6f9e-437a-a099-9672e4737668\",\r\n \"benefit\": \"TEST_COBENEFIT_1\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n },\r\n {\r\n \"id\": \"f124ebef-6436-4cd4-abdd-c55e10f4d1a0\",\r\n \"benefit\": \"TEST_COBENEFIT_2\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n }\r\n ],\r\n \"relatedProjects\": [\r\n {\r\n \"id\": \"394e319e-a4d2-4ad8-a4b3-0d5b660dd8ec\",\r\n \"type\": \"Greenlam\",\r\n \"registry\": \"Ventosanzap\",\r\n \"note\": \"Donec dapibus.\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"39b80025-1a2c-4cda-92aa-541e8e059258\",\r\n \"type\": \"Matsoft\",\r\n \"registry\": \"Sub-Ex\",\r\n \"note\": \"Cras pellentesque volutpat dui. Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti.\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n }\r\n ]\r\n}", + "raw": "{\r\n \"originProjectId\": \"c5067a60-e329-4510-991c-b302fd00ec8d\",\r\n \"projectId\": \"c9d147e2-bc07-4e68-a76d-43424fa8cd4e\",\r\n \"program\": \"Eimbee\",\r\n \"projectName\": \"Zoomcast\",\r\n \"projectLink\": \"http://dailymotion.com/ligula/suspendisse/ornare/consequat/lectus/in.jpg?aliquam=consequat&lacus=nulla&morbi=nisl&quis=nunc&tortor=nisl&id=duis&nulla=bibendum&ultrices=felis&aliquet=sed&maecenas=interdum&leo=venenatis&odio=turpis&condimentum=enim&id=blandit&luctus=mi&nec=in&molestie=porttitor&sed=pede&justo=justo&pellentesque=eu&viverra=massa&pede=donec&ac=dapibus&diam=duis&cras=at&pellentesque=velit&volutpat=eu&dui=est&maecenas=congue&tristique=elementum&est=in&et=hac&tempus=habitasse&semper=platea&est=dictumst&quam=morbi&pharetra=vestibulum&magna=velit&ac=id&consequat=pretium&metus=iaculis&sapien=diam&ut=erat&nunc=fermentum&vestibulum=justo&ante=nec&ipsum=condimentum\",\r\n \"projectDeveloper\": \"Cogibox\",\r\n \"sector\": \"Viva\",\r\n \"projectType\": \"Topicshots\",\r\n \"coveredByNDC\": 0,\r\n \"NDCLinkage\": \"Shuffletag\",\r\n \"projectStatus\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\",\r\n \"projectStatusDate\": \"2022-01-19\",\r\n \"unitMetric\": \"Fuscia\",\r\n \"methodology\": \"Quatz\",\r\n \"methodologyVersion\": 43,\r\n \"validationApproach\": \"Praesent in consequat urna\",\r\n \"validationDate\": \"2022-01-19\",\r\n \"projectTag\": \"Neque\",\r\n \"estimatedAnnualAverageEmissionReduction\": \"223\",\r\n \"projectLocations\": [\r\n {\r\n \"id\": \"40ae83b1-b497-4f63-9b7d-874505b67662\",\r\n \"countryRegion\": \"United States\",\r\n \"country\": null,\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n }\r\n ],\r\n \"labels\": [\r\n {\r\n \"id\": \"702cafbb-c624-4273-9cdc-c617ad5675df\",\r\n \"labelId\": null,\r\n \"labelLink\": \"https://label.link/1\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"type\": \"basic type\",\r\n \"label\": \"label 1\",\r\n \"creditingPeriodStartDate\": null,\r\n \"creditingPeriodEndDate\": null,\r\n \"warehouseUnitId\": null,\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n }\r\n ],\r\n \"issuances\": [\r\n {\r\n \"id\": \"3d5a8ed2-e5a7-4275-a36e-3456812e39b7\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"57c1859d-6aa4-4c57-9dfb-6438e0d4653e\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"74887b22-da3b-4c2b-b945-670319193cdd\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"7f7f23a5-3e1a-43b4-82d8-b4156b158f88\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"a6745831-5d5e-45ed-b9fe-fd6aa129df25\",\r\n \"startDate\": null,\r\n \"endDate\": null,\r\n \"verificationApproach\": null,\r\n \"verificationDate\": null,\r\n \"verificationBody\": \"This is verified\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n }\r\n ],\r\n \"coBenefits\": [\r\n {\r\n \"id\": \"2995a129-1fad-4251-9942-7c6db2fbff74\",\r\n \"benefit\": \"TEST_COBENEFIT_4\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n },\r\n {\r\n \"id\": \"729c71bf-cc6e-4424-842f-54c2a490952a\",\r\n \"benefit\": \"TEST_COBENEFIT_3\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n },\r\n {\r\n \"id\": \"83913f9e-9876-4c4d-ac4c-10dd992d7d7f\",\r\n \"benefit\": \"TEST_COBENEFIT_5\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n },\r\n {\r\n \"id\": \"9506cf84-6f9e-437a-a099-9672e4737668\",\r\n \"benefit\": \"TEST_COBENEFIT_1\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n },\r\n {\r\n \"id\": \"f124ebef-6436-4cd4-abdd-c55e10f4d1a0\",\r\n \"benefit\": \"TEST_COBENEFIT_2\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": null,\r\n \"updatedAt\": null\r\n }\r\n ],\r\n \"relatedProjects\": [\r\n {\r\n \"id\": \"394e319e-a4d2-4ad8-a4b3-0d5b660dd8ec\",\r\n \"type\": \"Greenlam\",\r\n \"registry\": \"Ventosanzap\",\r\n \"note\": \"Donec dapibus.\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n },\r\n {\r\n \"id\": \"39b80025-1a2c-4cda-92aa-541e8e059258\",\r\n \"type\": \"Matsoft\",\r\n \"registry\": \"Sub-Ex\",\r\n \"note\": \"Cras pellentesque volutpat dui. Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam. Suspendisse potenti.\",\r\n \"warehouseProjectId\": \"81e05bfa-e93f-458f-b907-96bf170e52cd\",\r\n \"createdAt\": \"2022-01-19\",\r\n \"updatedAt\": \"2022-01-19\"\r\n }\r\n ]\r\n}", "options": { "raw": { "language": "json" diff --git a/docs/postman/updateProjects.csv b/docs/postman/updateProjects.csv index e12a722a..a69a1b81 100644 --- a/docs/postman/updateProjects.csv +++ b/docs/postman/updateProjects.csv @@ -1,4 +1,4 @@ warehouseUnitId,originProjectId,projectId,program,projectName,projectLink,projectDeveloper,sector,projectType,coveredByNDC,NDCLinkage,projectStatus,projectStatusDate,unitMetric,methodology,methodologyVersion,validationApproach,validationDate,projectTag,estimatedAnnualAverageEmissionReduction,projectLocations,qualifications,vintages,coBenefits,relatedProjects -5c960ac1-a180-45a4-9850-be177e26d2fb,c5067a60-e329-4510-991c-b302fd00ec8d,c9d147e2-bc07-4e68-a76d-43424fa8cd4e,Eimbee,Zoomcast,http://dailymotion.com/ligula/suspendisse/ornare/consequat/lectus/in.jpg?aliquam=consequat&lacus=nulla&morbi=nisl&quis=nunc&tortor=nisl&id=duis&nulla=bibendum&ultrices=felis&aliquet=sed&maecenas=interdum&leo=venenatis&odio=turpis&condimentum=enim&id=blandit&luctus=mi&nec=in&molestie=porttitor&sed=pede&justo=justo&pellentesque=eu&viverra=massa&pede=donec&ac=dapibus&diam=duis&cras=at&pellentesque=velit&volutpat=eu&dui=est&maecenas=congue&tristique=elementum&est=in&et=hac&tempus=habitasse&semper=platea&est=dictumst&quam=morbi&pharetra=vestibulum&magna=velit&ac=id&consequat=pretium&metus=iaculis&sapien=diam&ut=erat&nunc=fermentum&vestibulum=justo&ante=nec&ipsum=condimentum,Cogibox,Viva,Topicshots,0,Shuffletag,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",1/19/2022,Fuscia,Quatz,43,He waited for the stop sign to turn to a go sign.,1/19/2022,Neque,120,United States,https://qualification.link/1,"3d5a8ed2-e5a7-4275-a36e-3456812e39b7,57c1859d-6aa4-4c57-9dfb-6438e0d4653e",TEST_COBENEFIT_4,394e319e-a4d2-4ad8-a4b3-0d5b660dd8ec -7703e6be-1781-4322-9a9c-502ca0dca29b,c5067a60-e329-4510-991c-b302fd00ec8d,c9d147e2-bc07-4e68-a76d-43424fa8cd4e,Eimbee,Zoomcast,http://dailymotion.com/ligula/suspendisse/ornare/consequat/lectus/in.jpg?aliquam=consequat&lacus=nulla&morbi=nisl&quis=nunc&tortor=nisl&id=duis&nulla=bibendum&ultrices=felis&aliquet=sed&maecenas=interdum&leo=venenatis&odio=turpis&condimentum=enim&id=blandit&luctus=mi&nec=in&molestie=porttitor&sed=pede&justo=justo&pellentesque=eu&viverra=massa&pede=donec&ac=dapibus&diam=duis&cras=at&pellentesque=velit&volutpat=eu&dui=est&maecenas=congue&tristique=elementum&est=in&et=hac&tempus=habitasse&semper=platea&est=dictumst&quam=morbi&pharetra=vestibulum&magna=velit&ac=id&consequat=pretium&metus=iaculis&sapien=diam&ut=erat&nunc=fermentum&vestibulum=justo&ante=nec&ipsum=condimentum,Cogibox,Seven,Topicshots,0,Shuffletag,"I know many children ask for a pony, but I wanted a bicycle with rockets strapped to it.",1/19/2022,Fuscia,Quatz,43,He waited for the stop sign to turn to a go sign.,1/19/2022,Neque,120,United States,https://qualification.link/1,"3d5a8ed2-e5a7-4275-a36e-3456812e39b7,57c1859d-6aa4-4c57-9dfb-6438e0d4653e",TEST_COBENEFIT_4,394e319e-a4d2-4ad8-a4b3-0d5b660dd8ec -04582672-47a9-411b-896f-3d45974e360e,c5067a60-e329-4510-991c-b302fd00ec8d,c9d147e2-bc07-4e68-a76d-43424fa8cd4e,Eimbee,Zoomcast,http://dailymotion.com/ligula/suspendisse/ornare/consequat/lectus/in.jpg?aliquam=consequat&lacus=nulla&morbi=nisl&quis=nunc&tortor=nisl&id=duis&nulla=bibendum&ultrices=felis&aliquet=sed&maecenas=interdum&leo=venenatis&odio=turpis&condimentum=enim&id=blandit&luctus=mi&nec=in&molestie=porttitor&sed=pede&justo=justo&pellentesque=eu&viverra=massa&pede=donec&ac=dapibus&diam=duis&cras=at&pellentesque=velit&volutpat=eu&dui=est&maecenas=congue&tristique=elementum&est=in&et=hac&tempus=habitasse&semper=platea&est=dictumst&quam=morbi&pharetra=vestibulum&magna=velit&ac=id&consequat=pretium&metus=iaculis&sapien=diam&ut=erat&nunc=fermentum&vestibulum=justo&ante=nec&ipsum=condimentum,Cogibox,Viva,Topicshots,0,Shuffletag,"I know many children ask for a pony, but I wanted a bicycle with rockets strapped to it.",1/22/2022,Fuscia,Quatz,43,He waited for the stop sign to turn to a go sign.,1/19/2022,Neque,120,United States,https://qualification.link/1,"3d5a8ed2-e5a7-4275-a36e-3456812e39b7,57c1859d-6aa4-4c57-9dfb-6438e0d4653e",TEST_COBENEFIT_4,394e319e-a4d2-4ad8-a4b3-0d5b660dd8ec +5c960ac1-a180-45a4-9850-be177e26d2fb,c5067a60-e329-4510-991c-b302fd00ec8d,c9d147e2-bc07-4e68-a76d-43424fa8cd4e,Eimbee,Zoomcast,http://dailymotion.com/ligula/suspendisse/ornare/consequat/lectus/in.jpg?aliquam=consequat&lacus=nulla&morbi=nisl&quis=nunc&tortor=nisl&id=duis&nulla=bibendum&ultrices=felis&aliquet=sed&maecenas=interdum&leo=venenatis&odio=turpis&condimentum=enim&id=blandit&luctus=mi&nec=in&molestie=porttitor&sed=pede&justo=justo&pellentesque=eu&viverra=massa&pede=donec&ac=dapibus&diam=duis&cras=at&pellentesque=velit&volutpat=eu&dui=est&maecenas=congue&tristique=elementum&est=in&et=hac&tempus=habitasse&semper=platea&est=dictumst&quam=morbi&pharetra=vestibulum&magna=velit&ac=id&consequat=pretium&metus=iaculis&sapien=diam&ut=erat&nunc=fermentum&vestibulum=justo&ante=nec&ipsum=condimentum,Cogibox,Viva,Topicshots,0,Shuffletag,"Lorem�ipsum�dolor�sit�amet,�consectetur�adipiscing�elit,�sed�do�eiusmod�tempor�incididunt�ut�labore�et�dolore�magna�aliqua.",1/19/2022,Fuscia,Quatz,43,He waited for the stop sign to turn to a go sign.,1/19/2022,Neque,120,United�States,https://labels.link/1,"3d5a8ed2-e5a7-4275-a36e-3456812e39b7,57c1859d-6aa4-4c57-9dfb-6438e0d4653e",TEST_COBENEFIT_4,394e319e-a4d2-4ad8-a4b3-0d5b660dd8ec +7703e6be-1781-4322-9a9c-502ca0dca29b,c5067a60-e329-4510-991c-b302fd00ec8d,c9d147e2-bc07-4e68-a76d-43424fa8cd4e,Eimbee,Zoomcast,http://dailymotion.com/ligula/suspendisse/ornare/consequat/lectus/in.jpg?aliquam=consequat&lacus=nulla&morbi=nisl&quis=nunc&tortor=nisl&id=duis&nulla=bibendum&ultrices=felis&aliquet=sed&maecenas=interdum&leo=venenatis&odio=turpis&condimentum=enim&id=blandit&luctus=mi&nec=in&molestie=porttitor&sed=pede&justo=justo&pellentesque=eu&viverra=massa&pede=donec&ac=dapibus&diam=duis&cras=at&pellentesque=velit&volutpat=eu&dui=est&maecenas=congue&tristique=elementum&est=in&et=hac&tempus=habitasse&semper=platea&est=dictumst&quam=morbi&pharetra=vestibulum&magna=velit&ac=id&consequat=pretium&metus=iaculis&sapien=diam&ut=erat&nunc=fermentum&vestibulum=justo&ante=nec&ipsum=condimentum,Cogibox,Seven,Topicshots,0,Shuffletag,"I know many children ask for a pony, but I wanted a bicycle with rockets strapped to it.",1/19/2022,Fuscia,Quatz,43,He waited for the stop sign to turn to a go sign.,1/19/2022,Neque,120,United�States,https://labels.link/1,"3d5a8ed2-e5a7-4275-a36e-3456812e39b7,57c1859d-6aa4-4c57-9dfb-6438e0d4653e",TEST_COBENEFIT_4,394e319e-a4d2-4ad8-a4b3-0d5b660dd8ec +04582672-47a9-411b-896f-3d45974e360e,c5067a60-e329-4510-991c-b302fd00ec8d,c9d147e2-bc07-4e68-a76d-43424fa8cd4e,Eimbee,Zoomcast,http://dailymotion.com/ligula/suspendisse/ornare/consequat/lectus/in.jpg?aliquam=consequat&lacus=nulla&morbi=nisl&quis=nunc&tortor=nisl&id=duis&nulla=bibendum&ultrices=felis&aliquet=sed&maecenas=interdum&leo=venenatis&odio=turpis&condimentum=enim&id=blandit&luctus=mi&nec=in&molestie=porttitor&sed=pede&justo=justo&pellentesque=eu&viverra=massa&pede=donec&ac=dapibus&diam=duis&cras=at&pellentesque=velit&volutpat=eu&dui=est&maecenas=congue&tristique=elementum&est=in&et=hac&tempus=habitasse&semper=platea&est=dictumst&quam=morbi&pharetra=vestibulum&magna=velit&ac=id&consequat=pretium&metus=iaculis&sapien=diam&ut=erat&nunc=fermentum&vestibulum=justo&ante=nec&ipsum=condimentum,Cogibox,Viva,Topicshots,0,Shuffletag,"I know many children ask for a pony, but I wanted a bicycle with rockets strapped to it.",1/22/2022,Fuscia,Quatz,43,He waited for the stop sign to turn to a go sign.,1/19/2022,Neque,120,United�States,https://labels.link/1,"3d5a8ed2-e5a7-4275-a36e-3456812e39b7,57c1859d-6aa4-4c57-9dfb-6438e0d4653e",TEST_COBENEFIT_4,394e319e-a4d2-4ad8-a4b3-0d5b660dd8ec diff --git a/migrations/20211201194416-create-label.cjs b/migrations/20211201194416-create-label.cjs new file mode 100644 index 00000000..3c80679b --- /dev/null +++ b/migrations/20211201194416-create-label.cjs @@ -0,0 +1,12 @@ +'use strict'; + +const modelTypes = require('../src/models/labels/labels.modeltypes.cjs'); + +module.exports = { + up: async (queryInterface) => { + await queryInterface.createTable('labels', modelTypes); + }, + down: async (queryInterface) => { + await queryInterface.dropTable('labels'); + }, +}; diff --git a/migrations/20211201194416-create-qualification.cjs b/migrations/20211201194416-create-qualification.cjs deleted file mode 100644 index a1ba727d..00000000 --- a/migrations/20211201194416-create-qualification.cjs +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -const modelTypes = require('../src/models/qualifications/qualifications.modeltypes.cjs'); - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('qualifications', modelTypes); - }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('qualifications'); - }, -}; diff --git a/migrations/20211215213314-label-units-junction.cjs b/migrations/20211215213314-label-units-junction.cjs new file mode 100644 index 00000000..cdcc593b --- /dev/null +++ b/migrations/20211215213314-label-units-junction.cjs @@ -0,0 +1,13 @@ +'use strict'; + +const modelTypes = require('../src/models/labelUnits/labelUnits.modeltypes.cjs'); + +module.exports = { + up: async (queryInterface) => { + await queryInterface.createTable('label_unit', modelTypes); + }, + + down: async (queryInterface) => { + await queryInterface.dropTable('label_unit'); + }, +}; diff --git a/migrations/20211215213314-qualification-units-junction.cjs b/migrations/20211215213314-qualification-units-junction.cjs deleted file mode 100644 index b600efc8..00000000 --- a/migrations/20211215213314-qualification-units-junction.cjs +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -const modelTypes = require('../src/models/qualificationUnits/qualificationUnits.modeltypes.cjs'); - -module.exports = { - up: async (queryInterface) => { - await queryInterface.createTable('qualification_unit', modelTypes); - }, - - down: async (queryInterface) => { - await queryInterface.dropTable('qualification_unit'); - }, -}; diff --git a/migrations/20211215231227-vintage-unit-junction.cjs b/migrations/20211215231227-vintage-unit-junction.cjs deleted file mode 100644 index 836d6966..00000000 --- a/migrations/20211215231227-vintage-unit-junction.cjs +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -module.exports = { - // eslint-disable-next-line - up: async (queryInterface, Sequelize) => { - /* await queryInterface.createTable('issuance_unit', { - unitId: Sequelize.INTEGER, - issuanceId: Sequelize.INTEGER, - createdAt: Sequelize.DATE, - updatedAt: Sequelize.DATE, - });*/ - }, - - down: async (queryInterface) => { - await queryInterface.dropTable('issuance_unit'); - }, -}; diff --git a/seeders/20211209204301-add-projects.cjs b/seeders/20211209204301-add-projects.cjs index 3365a82e..140fbacd 100644 --- a/seeders/20211209204301-add-projects.cjs +++ b/seeders/20211209204301-add-projects.cjs @@ -2,7 +2,7 @@ const ProjectStub = require('../src/models/projects/projects.stub.json'); const CoBenifetStub = require('../src/models/co-benefits/co-benefits.stub.json'); const RelatedProjectStub = require('../src/models/related-projects/related-projects.stub.json'); -const QualificationStub = require('../src/models/qualifications/qualifications.stub.json'); +const LabelStub = require('../src/models/labels/labels.stub.json'); const RatingsStub = require('../src/models/ratings/ratings.stub.json'); const IssuanceStub = require('../src/models/issuances/issuances.stub.json'); const LocationsStub = require('../src/models/locations/locations.stub.json'); @@ -12,7 +12,7 @@ module.exports = { await queryInterface.bulkInsert('projects', ProjectStub, {}); await queryInterface.bulkInsert('coBenefits', CoBenifetStub, {}); await queryInterface.bulkInsert('relatedProjects', RelatedProjectStub, {}); - await queryInterface.bulkInsert('qualifications', QualificationStub, {}); + await queryInterface.bulkInsert('labels', LabelStub, {}); await queryInterface.bulkInsert('projectRatings', RatingsStub, {}); await queryInterface.bulkInsert('issuances', IssuanceStub, {}); await queryInterface.bulkInsert('projectLocations', LocationsStub, {}); diff --git a/seeders/20211209205139-add-units.cjs b/seeders/20211209205139-add-units.cjs index 41d13dd6..92526e99 100644 --- a/seeders/20211209205139-add-units.cjs +++ b/seeders/20211209205139-add-units.cjs @@ -1,15 +1,11 @@ 'use strict'; const UnitStub = require('../src/models/units/units.stub.json'); -const QualificationUnitStub = require('../src/models/qualificationUnits/qualificationUnits.stub.json'); +const LabelUnitStub = require('../src/models/labelUnits/labelUnits.stub.json'); module.exports = { up: async (queryInterface) => { await queryInterface.bulkInsert('units', UnitStub, {}); - await queryInterface.bulkInsert( - 'qualification_unit', - QualificationUnitStub, - {}, - ); + await queryInterface.bulkInsert('label_unit', LabelUnitStub, {}); }, down: async (queryInterface) => { diff --git a/src/controllers/project.controller.js b/src/controllers/project.controller.js index dd141fad..2af55d50 100644 --- a/src/controllers/project.controller.js +++ b/src/controllers/project.controller.js @@ -6,7 +6,7 @@ import { Staging, Project, ProjectLocation, - Qualification, + Label, Issuance, CoBenefit, RelatedProject, @@ -131,13 +131,7 @@ export const findAll = async (req, res) => { export const findOne = async (req, res) => { const query = { where: { warehouseProjectId: req.query.warehouseProjectId }, - include: [ - ProjectLocation, - Qualification, - Issuance, - CoBenefit, - RelatedProject, - ], + include: [ProjectLocation, Label, Issuance, CoBenefit, RelatedProject], }; res.json(await Project.findOne(query)); diff --git a/src/controllers/units.controller.js b/src/controllers/units.controller.js index fde7dcfd..ff8769b0 100644 --- a/src/controllers/units.controller.js +++ b/src/controllers/units.controller.js @@ -3,13 +3,7 @@ import _ from 'lodash'; import { uuid as uuidv4 } from 'uuidv4'; -import { - Staging, - Unit, - Qualification, - Issuance, - Organization, -} from '../models'; +import { Staging, Unit, Label, Issuance, Organization } from '../models'; import { columnsToInclude, @@ -69,7 +63,7 @@ export const findAll = async (req, res) => { let { page, limit, columns, orgUid, search, xls } = req.query; let where = orgUid ? { orgUid } : undefined; - const includes = [Qualification, Issuance]; + const includes = [Label, Issuance]; if (columns) { // Remove any unsupported columns @@ -101,10 +95,10 @@ export const findAll = async (req, res) => { // Lazy load the associations when doing fts search, not ideal but the page sizes should be small - if (columns.includes('qualifications')) { + if (columns.includes('labels')) { results.rows = await Promise.all( results.rows.map(async (result) => { - result.dataValues.qualifications = await Qualification.findAll({ + result.dataValues.labels = await Label.findAll({ include: [ { model: Unit, diff --git a/src/fullnode/syncService.js b/src/fullnode/syncService.js index eb7d8508..f0e1872a 100644 --- a/src/fullnode/syncService.js +++ b/src/fullnode/syncService.js @@ -5,11 +5,11 @@ import { Unit, Project, RelatedProject, - Qualification, + Label, Issuance, CoBenefit, ProjectLocation, - QualificationUnit, + LabelUnit, Staging, } from '../models'; @@ -62,7 +62,7 @@ export const syncDataLayerStoreToClimateWarehouse = async (storeId) => { Project.destroy({ where: { orgUid: organizationToTrucate.orgUid }, }), - QualificationUnit.destroy({ + LabelUnit.destroy({ where: { orgUid: organizationToTrucate.orgUid }, }), ]); @@ -87,16 +87,16 @@ export const syncDataLayerStoreToClimateWarehouse = async (storeId) => { }); } else if (key.includes('relatedProjects')) { await RelatedProject.upsert(value); - } else if (key.includes('qualification_units')) { - await QualificationUnit.upsert(value); + } else if (key.includes('labels_units')) { + await LabelUnit.upsert(value); } else if (key.includes('coBenefits')) { await CoBenefit.upsert(value); } else if (key.includes('issuances')) { await Issuance.upsert(value); } else if (key.includes('projectLocations')) { await ProjectLocation.upsert(value); - } else if (key.includes('qualifications')) { - await Qualification.upsert(value); + } else if (key.includes('labels')) { + await Label.upsert(value); } }), ); diff --git a/src/models/index.js b/src/models/index.js index 8b535ed5..e6b9bfdf 100644 --- a/src/models/index.js +++ b/src/models/index.js @@ -1,7 +1,7 @@ import { Project } from './projects'; import { CoBenefit } from './co-benefits'; import { ProjectLocation } from './locations'; -import { Qualification } from './qualifications'; +import { Label } from './labels'; import { Rating } from './ratings'; import { RelatedProject } from './related-projects'; import { Unit } from './units'; @@ -10,7 +10,7 @@ import { Issuance } from './issuances'; Project.associate(); CoBenefit.associate(); ProjectLocation.associate(); -Qualification.associate(); +Label.associate(); Rating.associate(); RelatedProject.associate(); Unit.associate(); @@ -20,7 +20,7 @@ export * from './projects'; export * from './co-benefits'; export * from './locations'; export * from './ratings'; -export * from './qualifications'; +export * from './labels'; export * from './related-projects'; export * from './units'; export * from './issuances'; @@ -28,4 +28,4 @@ export * from './staging'; export * from './organizations'; export * from './meta'; export * from './simulator'; -export * from './qualificationUnits'; +export * from './labelUnits'; diff --git a/src/models/labelUnits/index.js b/src/models/labelUnits/index.js new file mode 100644 index 00000000..fd9108ff --- /dev/null +++ b/src/models/labelUnits/index.js @@ -0,0 +1,2 @@ +export * from './labelUnits.model'; +export * from './labelUnits.mock'; diff --git a/src/models/qualifications/qualifications.mock.js b/src/models/labelUnits/labelUnits.mock.js similarity index 55% rename from src/models/qualifications/qualifications.mock.js rename to src/models/labelUnits/labelUnits.mock.js index aca7948d..6c35c4f7 100644 --- a/src/models/qualifications/qualifications.mock.js +++ b/src/models/labelUnits/labelUnits.mock.js @@ -1,6 +1,6 @@ -import stub from './qualifications.stub.json'; +import stub from './labelUnits.stub.json'; -export const QualificationMock = { +export const LabelUnitsMock = { findAll: () => stub, findOne: (id) => { return stub.find((record) => record.id == id); diff --git a/src/models/labelUnits/labelUnits.model.js b/src/models/labelUnits/labelUnits.model.js new file mode 100644 index 00000000..d8784759 --- /dev/null +++ b/src/models/labelUnits/labelUnits.model.js @@ -0,0 +1,33 @@ +'use strict'; + +import Sequelize from 'sequelize'; +const { Model } = Sequelize; +import { sequelize, safeMirrorDbHandler } from '../database'; + +import ModelTypes from './labelUnits.modeltypes.cjs'; +import { LabelUnitMirror } from './labelUnits.model.mirror'; + +class LabelUnit extends Model { + static async create(values, options) { + safeMirrorDbHandler(() => LabelUnitMirror.create(values, options)); + return super.create(values, options); + } + + static async destroy(values) { + safeMirrorDbHandler(() => LabelUnitMirror.destroy(values)); + return super.destroy(values); + } + + static async upsert(values, options) { + safeMirrorDbHandler(() => LabelUnitMirror.upsert(values, options)); + return super.create(values, options); + } +} + +LabelUnit.init(ModelTypes, { + sequelize, + modelName: 'label_unit', + freezeTableName: true, +}); + +export { LabelUnit }; diff --git a/src/models/qualificationUnits/qualificationUnits.model.mirror.js b/src/models/labelUnits/labelUnits.model.mirror.js similarity index 52% rename from src/models/qualificationUnits/qualificationUnits.model.mirror.js rename to src/models/labelUnits/labelUnits.model.mirror.js index 87202685..eddf7c52 100644 --- a/src/models/qualificationUnits/qualificationUnits.model.mirror.js +++ b/src/models/labelUnits/labelUnits.model.mirror.js @@ -4,16 +4,16 @@ import Sequelize from 'sequelize'; const { Model } = Sequelize; import { sequelizeMirror, safeMirrorDbHandler } from '../database'; -import ModelTypes from './qualificationUnits.modeltypes.cjs'; +import ModelTypes from './labelUnits.modeltypes.cjs'; -class QualificationUnitMirror extends Model {} +class LabelUnitMirror extends Model {} safeMirrorDbHandler(() => { - QualificationUnitMirror.init(ModelTypes, { + LabelUnitMirror.init(ModelTypes, { sequelize: sequelizeMirror, - modelName: 'qualification_unit', + modelName: 'label_unit', freezeTableName: true, }); }); -export { QualificationUnitMirror }; +export { LabelUnitMirror }; diff --git a/src/models/qualificationUnits/qualificationUnits.modeltypes.cjs b/src/models/labelUnits/labelUnits.modeltypes.cjs similarity index 89% rename from src/models/qualificationUnits/qualificationUnits.modeltypes.cjs rename to src/models/labelUnits/labelUnits.modeltypes.cjs index 1ddaafcb..74dc671a 100644 --- a/src/models/qualificationUnits/qualificationUnits.modeltypes.cjs +++ b/src/models/labelUnits/labelUnits.modeltypes.cjs @@ -6,7 +6,7 @@ module.exports = { required: true, }, warehouseUnitId: Sequelize.STRING, - qualificationId: Sequelize.STRING, + labelId: Sequelize.STRING, createdAt: { type: Sequelize.DATE, defaultValue: Sequelize.NOW, diff --git a/src/models/qualificationUnits/qualificationUnits.stub.json b/src/models/labelUnits/labelUnits.stub.json similarity index 66% rename from src/models/qualificationUnits/qualificationUnits.stub.json rename to src/models/labelUnits/labelUnits.stub.json index 7f47d636..cf6c75f3 100644 --- a/src/models/qualificationUnits/qualificationUnits.stub.json +++ b/src/models/labelUnits/labelUnits.stub.json @@ -1,12 +1,12 @@ [ { "warehouseUnitId": "5c960ac1-a180-45a4-9850-be177e26d2fb", - "qualificationId": "702cafbb-c624-4273-9cdc-c617ad5675df", + "labelId": "702cafbb-c624-4273-9cdc-c617ad5675df", "orgUid": "f1c54511-865e-4611-976c-7c3c1f704662" }, { "warehouseUnitId": "5c960ac1-a180-45a4-9850-be177e26d2fb", - "qualificationId": "76903895-840e-406c-b2a0-f90244acf02d", + "labelId": "76903895-840e-406c-b2a0-f90244acf02d", "orgUid": "f1c54511-865e-4611-976c-7c3c1f704662" } ] diff --git a/src/models/labels/index.js b/src/models/labels/index.js new file mode 100644 index 00000000..7f71b568 --- /dev/null +++ b/src/models/labels/index.js @@ -0,0 +1,2 @@ +export * from './labels.model'; +export * from './labels.mock'; diff --git a/src/models/qualificationUnits/qualificationUnits.mock.js b/src/models/labels/labels.mock.js similarity index 54% rename from src/models/qualificationUnits/qualificationUnits.mock.js rename to src/models/labels/labels.mock.js index c022baf7..1d6499d0 100644 --- a/src/models/qualificationUnits/qualificationUnits.mock.js +++ b/src/models/labels/labels.mock.js @@ -1,6 +1,6 @@ -import stub from './qualificationUnits.stub.json'; +import stub from './labels.stub.json'; -export const QualificationMock = { +export const LabelsMock = { findAll: () => stub, findOne: (id) => { return stub.find((record) => record.id == id); diff --git a/src/models/qualifications/qualifications.model.js b/src/models/labels/labels.model.js similarity index 53% rename from src/models/qualifications/qualifications.model.js rename to src/models/labels/labels.model.js index 9be4d1c0..f2631e11 100644 --- a/src/models/qualifications/qualifications.model.js +++ b/src/models/labels/labels.model.js @@ -6,58 +6,58 @@ import { sequelize, safeMirrorDbHandler } from '../database'; import { Project } from '../projects'; import { Unit } from '../units'; -import ModelTypes from './qualifications.modeltypes.cjs'; -import { QualificationMirror } from './qualifications.model.mirror'; +import ModelTypes from './labels.modeltypes.cjs'; +import { LabelMirror } from './labels.model.mirror'; -class Qualification extends Model { +class Label extends Model { static associate() { - // When all qualifications are removed from + // When all labels are removed from // all projects and units, remove completly, // otherwise just dissaciate - Qualification.belongsTo(Project, { + Label.belongsTo(Project, { targetKey: 'warehouseProjectId', foreignKey: 'warehouseProjectId', }); - //Qualification.hasMany(Unit); + // https://gist.github.com/elliette/20ddc4e827efd9d62bc98752e7a62610#some-important-addendums - Qualification.belongsToMany(Unit, { - foreignKey: 'qualificationId', - through: 'qualification_unit', + Label.belongsToMany(Unit, { + foreignKey: 'labelId', + through: 'label_unit', as: 'unit', }); safeMirrorDbHandler(() => { - QualificationMirror.belongsTo(Project, { + LabelMirror.belongsTo(Project, { targetKey: 'warehouseProjectId', foreignKey: 'warehouseProjectId', }); - QualificationMirror.belongsToMany(Unit, { - through: 'qualification_unit', + LabelMirror.belongsToMany(Unit, { + through: 'label_unit', as: 'unit', }); }); } static async create(values, options) { - safeMirrorDbHandler(() => QualificationMirror.create(values, options)); + safeMirrorDbHandler(() => LabelMirror.create(values, options)); return super.create(values, options); } static async destroy(values) { - safeMirrorDbHandler(() => QualificationMirror.destroy(values)); + safeMirrorDbHandler(() => LabelMirror.destroy(values)); return super.destroy(values); } static async upsert(values, options) { - safeMirrorDbHandler(() => QualificationMirror.upsert(values, options)); + safeMirrorDbHandler(() => LabelMirror.upsert(values, options)); return super.create(values, options); } } -Qualification.init(ModelTypes, { +Label.init(ModelTypes, { sequelize, - modelName: 'qualification', + modelName: 'label', }); -export { Qualification }; +export { Label }; diff --git a/src/models/labels/labels.model.mirror.js b/src/models/labels/labels.model.mirror.js new file mode 100644 index 00000000..8a33e2ec --- /dev/null +++ b/src/models/labels/labels.model.mirror.js @@ -0,0 +1,19 @@ +'use strict'; + +import Sequelize from 'sequelize'; +const { Model } = Sequelize; + +import { sequelizeMirror, safeMirrorDbHandler } from '../database'; +import ModelTypes from './labels.modeltypes.cjs'; + +class LabelMirror extends Model {} + +safeMirrorDbHandler(() => { + LabelMirror.init(ModelTypes, { + sequelize: sequelizeMirror, + modelName: 'label', + foreignKey: 'labelId', + }); +}); + +export { LabelMirror }; diff --git a/src/models/qualifications/qualifications.modeltypes.cjs b/src/models/labels/labels.modeltypes.cjs similarity index 88% rename from src/models/qualifications/qualifications.modeltypes.cjs rename to src/models/labels/labels.modeltypes.cjs index 6ca40f41..3e70c59e 100644 --- a/src/models/qualifications/qualifications.modeltypes.cjs +++ b/src/models/labels/labels.modeltypes.cjs @@ -8,8 +8,8 @@ module.exports = { defaultValue: () => uuidv4(), primaryKey: true, }, - qualificationId: Sequelize.INTEGER, - qualificationLink: Sequelize.STRING, + labelId: Sequelize.INTEGER, + labelLink: Sequelize.STRING, warehouseProjectId: Sequelize.INTEGER, type: Sequelize.STRING, label: Sequelize.STRING, diff --git a/src/models/qualifications/qualifications.stub.json b/src/models/labels/labels.stub.json similarity index 78% rename from src/models/qualifications/qualifications.stub.json rename to src/models/labels/labels.stub.json index 5d00c795..c59c4cea 100644 --- a/src/models/qualifications/qualifications.stub.json +++ b/src/models/labels/labels.stub.json @@ -2,10 +2,10 @@ { "id": "702cafbb-c624-4273-9cdc-c617ad5675df", "type": "basic type", - "label": "qualification 1", + "label": "label 1", "creditingPeriodStartDate": "2011-10-05T14:48:00.000Z", "creditingPeriodEndDate": "2022-10-05T14:48:00.000Z", - "qualificationLink": "https://qualification.link/1", + "labelLink": "https://label.link/1", "warehouseProjectId": "81e05bfa-e93f-458f-b907-96bf170e52cd", "createdAt": "2022-01-18 00:05:45.701 +00:00", "updatedAt": "2022-01-18 00:05:45.701 +00:00" @@ -13,10 +13,10 @@ { "id": "76903895-840e-406c-b2a0-f90244acf02d", "type": "basic type", - "label": "qualification 2", + "label": "label 2", "creditingPeriodStartDate": "2011-10-05T14:48:00.000Z", "creditingPeriodEndDate": "2022-10-05T14:48:00.000Z", - "qualificationLink": "https://qualification.link/2", + "labelLink": "https://label.link/2", "warehouseProjectId": "81e05bfa-e93f-458f-b907-96bf170e52cd", "createdAt": "2022-01-18 00:05:45.701 +00:00", "updatedAt": "2022-01-18 00:05:45.701 +00:00" @@ -24,30 +24,30 @@ { "id": "2c9d41fc-1f58-427d-b028-fc83bf45c74f", "type": "basic type", - "label": "qualification 3", + "label": "label 3", "creditingPeriodStartDate": "2010-10-05T14:48:00.000Z", "creditingPeriodEndDate": "2022-10-05T14:48:00.000Z", - "qualificationLink": "https://qualification.link/3", + "labelLink": "https://label.link/3", "createdAt": "2022-01-18 00:05:45.701 +00:00", "updatedAt": "2022-01-18 00:05:45.701 +00:00" }, { "id": "2421e951-0a68-4f9f-b760-01528c605237", "type": "basic type", - "label": "qualification 4", + "label": "label 4", "creditingPeriodStartDate": "2011-10-05T14:48:00.000Z", "creditingPeriodEndDate": "2022-10-05T14:48:00.000Z", - "qualificationLink": "https://qualification.link/4", + "labelLink": "https://label.link/4", "createdAt": "2022-01-18 00:05:45.701 +00:00", "updatedAt": "2022-01-18 00:05:45.701 +00:00" }, { "id": "df7c1ff8-f669-4028-bcbd-3abedf7b1a49", "type": "basic type", - "label": "qualification 5", + "label": "label 5", "creditingPeriodStartDate": "2010-10-05T14:48:00.000Z", "creditingPeriodEndDate": "2021-10-05T14:48:00.000Z", - "qualificationLink": "https://qualification.link/5", + "labelLink": "https://label.link/5", "createdAt": "2022-01-18 00:05:45.701 +00:00", "updatedAt": "2022-01-18 00:05:45.701 +00:00" } diff --git a/src/models/projects/projects.model.js b/src/models/projects/projects.model.js index 3f40b0d5..b2356c93 100644 --- a/src/models/projects/projects.model.js +++ b/src/models/projects/projects.model.js @@ -14,7 +14,7 @@ import { import { RelatedProject, Issuance, - Qualification, + Label, ProjectLocation, CoBenefit, Staging, @@ -34,7 +34,7 @@ class Project extends Model { static defaultColumns = Object.keys(ModelTypes); static getAssociatedModels = () => [ ProjectLocation, - Qualification, + Label, Issuance, CoBenefit, RelatedProject, @@ -42,7 +42,7 @@ class Project extends Model { static associate() { Project.hasMany(ProjectLocation, { foreignKey: 'warehouseProjectId' }); - Project.hasMany(Qualification, { foreignKey: 'warehouseProjectId' }); + Project.hasMany(Label, { foreignKey: 'warehouseProjectId' }); Project.hasMany(Issuance, { foreignKey: 'warehouseProjectId' }); Project.hasMany(CoBenefit, { foreignKey: 'warehouseProjectId' }); Project.hasMany(RelatedProject, { foreignKey: 'warehouseProjectId' }); @@ -51,7 +51,7 @@ class Project extends Model { ProjectMirror.hasMany(ProjectLocation, { foreignKey: 'warehouseProjectId', }); - ProjectMirror.hasMany(Qualification, { + ProjectMirror.hasMany(Label, { foreignKey: 'warehouseProjectId', }); ProjectMirror.hasMany(Issuance, { foreignKey: 'warehouseProjectId' }); @@ -114,13 +114,7 @@ class Project extends Model { .filter((col) => !['createdAt', 'updatedAt'].includes(col)) .filter( (col) => - ![ - ProjectLocation, - Qualification, - Issuance, - CoBenefit, - RelatedProject, - ] + ![ProjectLocation, Label, Issuance, CoBenefit, RelatedProject] .map((model) => model.name + 's') .includes(col), ), @@ -260,7 +254,7 @@ class Project extends Model { const primaryKeyMap = { project: 'warehouseProjectId', projectLocations: 'id', - qualifications: 'id', + labels: 'id', issuances: 'id', coBenefits: 'id', relatedProjects: 'id', @@ -284,9 +278,9 @@ class Project extends Model { ..._.get(updateChangeList, 'project', []), ...deleteChangeList, ], - qualifications: [ - ..._.get(insertChangeList, 'qualifications', []), - ..._.get(updateChangeList, 'qualifications', []), + labels: [ + ..._.get(insertChangeList, 'labels', []), + ..._.get(updateChangeList, 'labels', []), ], projectLocations: [ ..._.get(insertChangeList, 'projectLocations', []), diff --git a/src/models/qualificationUnits/index.js b/src/models/qualificationUnits/index.js deleted file mode 100644 index 55729955..00000000 --- a/src/models/qualificationUnits/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './qualificationUnits.model'; -export * from './qualificationUnits.mock'; diff --git a/src/models/qualificationUnits/qualificationUnits.model.js b/src/models/qualificationUnits/qualificationUnits.model.js deleted file mode 100644 index 8c8a7bc6..00000000 --- a/src/models/qualificationUnits/qualificationUnits.model.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -import Sequelize from 'sequelize'; -const { Model } = Sequelize; -import { sequelize, safeMirrorDbHandler } from '../database'; - -import ModelTypes from './qualificationUnits.modeltypes.cjs'; -import { QualificationUnitMirror } from './qualificationUnits.model.mirror'; - -class QualificationUnit extends Model { - static async create(values, options) { - safeMirrorDbHandler(() => QualificationUnitMirror.create(values, options)); - return super.create(values, options); - } - - static async destroy(values) { - safeMirrorDbHandler(() => QualificationUnitMirror.destroy(values)); - return super.destroy(values); - } - - static async upsert(values, options) { - safeMirrorDbHandler(() => QualificationUnitMirror.upsert(values, options)); - return super.create(values, options); - } -} - -QualificationUnit.init(ModelTypes, { - sequelize, - modelName: 'qualification_unit', - freezeTableName: true, -}); - -export { QualificationUnit }; diff --git a/src/models/qualifications/index.js b/src/models/qualifications/index.js deleted file mode 100644 index 54065359..00000000 --- a/src/models/qualifications/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './qualifications.model'; -export * from './qualifications.mock'; diff --git a/src/models/qualifications/qualifications.model.mirror.js b/src/models/qualifications/qualifications.model.mirror.js deleted file mode 100644 index 1937fd3c..00000000 --- a/src/models/qualifications/qualifications.model.mirror.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -import Sequelize from 'sequelize'; -const { Model } = Sequelize; - -import { sequelizeMirror, safeMirrorDbHandler } from '../database'; -import ModelTypes from './qualifications.modeltypes.cjs'; - -class QualificationMirror extends Model {} - -safeMirrorDbHandler(() => { - QualificationMirror.init(ModelTypes, { - sequelize: sequelizeMirror, - modelName: 'qualification', - foreignKey: 'qualificationId', - }); -}); - -export { QualificationMirror }; diff --git a/src/models/staging/staging.model.js b/src/models/staging/staging.model.js index 3125602b..df930ddc 100644 --- a/src/models/staging/staging.model.js +++ b/src/models/staging/staging.model.js @@ -161,10 +161,7 @@ class Staging extends Model { ...unitsChangeList.issuances, ...projectsChangeList.issuances, ], - qualifications: [ - ...unitsChangeList.qualifications, - ...projectsChangeList.qualifications, - ], + labels: [...unitsChangeList.labels, ...projectsChangeList.labels], }; const myOrganization = await Organization.findOne({ diff --git a/src/models/units/units.model.js b/src/models/units/units.model.js index 97127223..ccfd5196 100644 --- a/src/models/units/units.model.js +++ b/src/models/units/units.model.js @@ -8,7 +8,7 @@ import { safeMirrorDbHandler, sanitizeSqliteFtsQuery, } from '../database'; -import { Qualification, Issuance, Staging } from '../../models'; +import { Label, Issuance, Staging } from '../../models'; import { UnitMirror } from './units.model.mirror'; import ModelTypes from './units.modeltypes.cjs'; @@ -65,8 +65,8 @@ class Unit extends Model { static getAssociatedModels = () => [ { - model: Qualification, - as: 'qualifications', + model: Label, + as: 'labels', }, Issuance, ]; @@ -78,10 +78,10 @@ class Unit extends Model { }); // https://gist.github.com/elliette/20ddc4e827efd9d62bc98752e7a62610#some-important-addendums - Unit.belongsToMany(Qualification, { + Unit.belongsToMany(Label, { foreignKey: 'warehouseUnitId', - through: 'qualification_unit', - as: 'qualifications', + through: 'label_unit', + as: 'labels', }); safeMirrorDbHandler(() => { @@ -91,10 +91,10 @@ class Unit extends Model { }); // https://gist.github.com/elliette/20ddc4e827efd9d62bc98752e7a62610#some-important-addendums - UnitMirror.belongsToMany(Qualification, { + UnitMirror.belongsToMany(Label, { foreignKey: 'warehouseUnitId', - through: 'qualification_unit', - as: 'qualifications', + through: 'label_unit', + as: 'labels', }); }); } @@ -303,8 +303,8 @@ class Unit extends Model { const primaryKeyMap = { unit: 'warehouseUnitId', - qualifications: 'id', - qualification_units: 'qualificationunitId', + labels: 'id', + label_units: 'labelunitId', issuances: 'id', }; @@ -326,17 +326,17 @@ class Unit extends Model { ..._.get(updateChangeList, 'unit', []), ...deleteChangeList, ], - qualifications: [ - ..._.get(insertChangeList, 'qualifications', []), - ..._.get(updateChangeList, 'qualifications', []), + labels: [ + ..._.get(insertChangeList, 'labels', []), + ..._.get(updateChangeList, 'labels', []), ], issuances: [ ..._.get(insertChangeList, 'issuances', []), ..._.get(updateChangeList, 'issuances', []), ], - qualificationUnits: [ - ..._.get(insertChangeList, 'qualification_units', []), - ..._.get(updateChangeList, 'qualification_units', []), + labelUnits: [ + ..._.get(insertChangeList, 'label_units', []), + ..._.get(updateChangeList, 'label_units', []), ], }; } diff --git a/src/utils/helpers.js b/src/utils/helpers.js index b51580ed..c3680592 100644 --- a/src/utils/helpers.js +++ b/src/utils/helpers.js @@ -53,7 +53,7 @@ export const columnsToInclude = (userColumns, foreignKeys) => { (column) => !attributeModelMap.includes(column), ), include: filteredIncludes.map((include) => { - if (include.name === 'qualification') { + if (include.name === 'label') { return { model: include, as: include.name + 's', diff --git a/src/validations/projects.validations.js b/src/validations/projects.validations.js index ac18eea8..5c33e519 100644 --- a/src/validations/projects.validations.js +++ b/src/validations/projects.validations.js @@ -21,7 +21,7 @@ export const baseSchema = { projectTag: Joi.string().required(), estimatedAnnualAverageEmissionReduction: Joi.number().required(), projectLocations: Joi.array().min(1).optional(), - qualifications: Joi.array().min(1).optional(), + labels: Joi.array().min(1).optional(), issuances: Joi.array().min(1).optional(), coBenefits: Joi.array().min(1).optional(), relatedProjects: Joi.array().min(1).optional(), diff --git a/tests/integration/unit.spec.js b/tests/integration/unit.spec.js index 98ab1c34..58f01376 100644 --- a/tests/integration/unit.spec.js +++ b/tests/integration/unit.spec.js @@ -332,7 +332,7 @@ describe('Create Unit Integration', function () { ]), ).to.deep.equal( _.omit(splitRecord1, [ - 'qualifications', // mapped associated field + 'labels', // mapped associated field 'issuance', // mapped associated field 'issuanceId', 'unitBlockStart', // virtual field @@ -379,7 +379,7 @@ describe('Create Unit Integration', function () { ]), ).to.deep.equal( _.omit(splitRecord2, [ - 'qualifications', // mapped associated field + 'labels', // mapped associated field 'issuance', // mapped associated field 'issuanceId', 'unitBlockStart', // virtual field @@ -506,7 +506,7 @@ describe('Create Unit Integration', function () { _.omit(mirrorRecord.dataValues, ['createdAt', 'updatedAt']), ).to.deep.equal( _.omit(newRecord, [ - 'qualifications', // mapped associated field + 'labels', // mapped associated field 'issuance', // mapped associated field 'unitBlockStart', // virtual field 'unitBlockEnd', // virtual field