diff --git a/CHANGELOG.md b/CHANGELOG.md index 91e943ed6e9..3c2aa33e7ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ The types of changes are: ### Fixed - Allows CDN to cache empty experience responses from fides.js API [#4113](https://github.com/ethyca/fides/pull/4113) +- Fixed `identity_special_purpose` unique constraint definition [#4174](https://github.com/ethyca/fides/pull/4174/files) ## [2.20.2](https://github.com/ethyca/fides/compare/2.20.1...2.20.2) diff --git a/src/fides/api/alembic/migrations/versions/4cb3b5af4160_update_special_purpose_unique_constraint.py b/src/fides/api/alembic/migrations/versions/4cb3b5af4160_update_special_purpose_unique_constraint.py new file mode 100644 index 00000000000..7fb378e39b1 --- /dev/null +++ b/src/fides/api/alembic/migrations/versions/4cb3b5af4160_update_special_purpose_unique_constraint.py @@ -0,0 +1,37 @@ +"""update_special_purpose_unique_constraint + +Revision ID: 4cb3b5af4160 +Revises: 8c54e1e5bdc4 +Create Date: 2023-09-27 22:58:43.064996 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = "4cb3b5af4160" +down_revision = "8c54e1e5bdc4" +branch_labels = None +depends_on = None + + +def upgrade(): + op.drop_constraint( + "identity_special_purpose", "currentprivacypreference", type_="unique" + ) + op.create_unique_constraint( + "identity_special_purpose", + "currentprivacypreference", + ["provided_identity_id", "special_purpose"], + ) + + +def downgrade(): + op.drop_constraint( + "identity_special_purpose", "currentprivacypreference", type_="unique" + ) + op.create_unique_constraint( + "identity_special_purpose", + "currentprivacypreference", + ["provided_identity_id", "purpose"], + ) diff --git a/src/fides/api/models/privacy_preference.py b/src/fides/api/models/privacy_preference.py index 93c7d8d7f82..1307e9fedbe 100644 --- a/src/fides/api/models/privacy_preference.py +++ b/src/fides/api/models/privacy_preference.py @@ -693,7 +693,7 @@ class CurrentPrivacyPreference(LastSavedMixin, Base): name="fides_user_device_identity_purpose", ), UniqueConstraint( - "provided_identity_id", "purpose", name="identity_special_purpose" + "provided_identity_id", "special_purpose", name="identity_special_purpose" ), UniqueConstraint( "fides_user_device_provided_identity_id",