Skip to content

Feat/registry provider uniqueness#367

Open
ugoocreates-pixel wants to merge 3 commits into
ChainForgee:mainfrom
ugoocreates-pixel:feat/registry-provider-uniqueness
Open

Feat/registry provider uniqueness#367
ugoocreates-pixel wants to merge 3 commits into
ChainForgee:mainfrom
ugoocreates-pixel:feat/registry-provider-uniqueness

Conversation

@ugoocreates-pixel

@ugoocreates-pixel ugoocreates-pixel commented Jul 16, 2026

Copy link
Copy Markdown

Closes #259

Problem Statement

RegistryOrganization, RegistryLocation, RegistryAsset, and RegistryProject models have an externalId column representing keys in external systems. However, different external systems may share identical IDs. Since there was no provider dimension on the registry tables, data integrity was lost if identical externalId values collided across different providers.

Solution

  1. Schema Modifications: Added a provider String? column to all four models (RegistryOrganization, RegistryLocation, RegistryAsset, and RegistryProject) in schema.prisma.
  2. Scoped Uniqueness Constraint: Replaced the index setups on those models with a composite unique constraint @@unique([provider, externalId]).
  3. Database Migration: Generated and applied the SQLite migration SQL file adding the columns and creating unique indexes.
  4. Validation Tests: Added unit tests verifying that seeding registry entities with the same externalId from different providers is accepted, whereas seeding them with the same externalId and the same provider throws a uniqueness constraint violation.

Verification

  • Added a new integration test suite test/registry-uniqueness.spec.ts asserting the constraints on all four models.
  • All tests passed successfully:
    • accepts seeding two organizations with the same externalId from different providers (Passed)
    • rejects seeding two organizations with the same externalId from the same provider (Passed)
    • verifies the uniqueness constraint on other registry models (Location, Asset, Project) (Passed)

Copy link
Copy Markdown
Contributor

👋 Thanks for the contribution! This PR contains code/test changes and CI workflows were never auto-triggered (a GitHub Actions safety requirement for cross-repo forks). To unblock this for merging, a maintainer needs to either:\n\n1. Manually click 'Approve and run workflows' on this PR's Actions tab via the GitHub UI, or\n2. Approve the pending CI on the PR checks page.\n\nOnce the CI checks pass, this can be merged. 🚀

@ugoocreates-pixel

Copy link
Copy Markdown
Author

👋 Thanks for the contribution! This PR contains code/test changes and CI workflows were never auto-triggered (a GitHub Actions safety requirement for cross-repo forks). To unblock this for merging, a maintainer needs to either:\n\n1. Manually click 'Approve and run workflows' on this PR's Actions tab via the GitHub UI, or\n2. Approve the pending CI on the PR checks page.\n\nOnce the CI checks pass, this can be merged. 🚀

check please

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ExternalId uniqueness scoped to provider

2 participants