Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: add support for check constraints in DML #10391

Merged
merged 3 commits into from
Dec 2, 2024

Conversation

thetutlage
Copy link
Contributor

@thetutlage thetutlage commented Dec 2, 2024

Fixes: FRMW-2818

The .checks method on the DML could be used to define the PostgreSQL constraints. In the following example, we configure a constraint that validates the amount column on the ShippingMethod model to have a value of >=0.

const ShippingMethod = model.define('ShippingMethod', {
  amount: model.bigNumber(),
})
.checks([
  (columns) => `${columns.amount} >= 0`
])

The .checks method accepts an array of callbacks or objects. The object signature must match have the properties accepted by the MikroORM's @Check decorator. https://mikro-orm.io/docs/5.9/defining-entities#check-constraints

const ShippingMethod = model.define('ShippingMethod', {
  amount: model.bigNumber(),
})
.checks([
  {
    name: 'shipping_method_amount_check',
    expression: (columns) => `${columns.amount} >= 0`
  }
])

Checks will result in the following migration statement.

this.addSql(`alter table if exists "cart_shipping_method" add constraint shipping_method_amount_check check(amount >= 0);`)

@thetutlage thetutlage requested a review from a team as a code owner December 2, 2024 11:44
Copy link

changeset-bot bot commented Dec 2, 2024

🦋 Changeset detected

Latest commit: b45c48e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 65 packages
Name Type
@medusajs/types Patch
@medusajs/utils Patch
@medusajs/dashboard Patch
integration-tests-http Patch
@medusajs/cli Patch
@medusajs/medusa Patch
@medusajs/test-utils Patch
@medusajs/api-key Patch
@medusajs/auth Patch
@medusajs/cache-inmemory Patch
@medusajs/cache-redis Patch
@medusajs/cart Patch
@medusajs/currency Patch
@medusajs/customer Patch
@medusajs/event-bus-local Patch
@medusajs/event-bus-redis Patch
@medusajs/file Patch
@medusajs/fulfillment Patch
@medusajs/index Patch
@medusajs/inventory Patch
@medusajs/link-modules Patch
@medusajs/locking Patch
@medusajs/notification Patch
@medusajs/order Patch
@medusajs/payment Patch
@medusajs/pricing Patch
@medusajs/product Patch
@medusajs/promotion Patch
@medusajs/region Patch
@medusajs/sales-channel Patch
@medusajs/stock-location Patch
@medusajs/store Patch
@medusajs/tax Patch
@medusajs/user Patch
@medusajs/workflow-engine-inmemory Patch
@medusajs/workflow-engine-redis Patch
@medusajs/auth-emailpass Patch
@medusajs/auth-github Patch
@medusajs/auth-google Patch
@medusajs/file-local Patch
@medusajs/file-s3 Patch
@medusajs/fulfillment-manual Patch
@medusajs/locking-postgres Patch
@medusajs/locking-redis Patch
@medusajs/notification-local Patch
@medusajs/notification-sendgrid Patch
@medusajs/payment-stripe Patch
@medusajs/core-flows Patch
@medusajs/framework Patch
@medusajs/js-sdk Patch
@medusajs/modules-sdk Patch
@medusajs/orchestration Patch
@medusajs/workflows-sdk Patch
@medusajs/medusa-oas-cli Patch
@medusajs/oas-github-ci Patch
@medusajs/telemetry Patch
@medusajs/admin-bundler Patch
@medusajs/admin-sdk Patch
@medusajs/admin-shared Patch
@medusajs/admin-vite-plugin Patch
@medusajs/icons Patch
@medusajs/toolbox Patch
@medusajs/ui-preset Patch
create-medusa-app Patch
medusa-dev-cli Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link

vercel bot commented Dec 2, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
api-reference 🔄 Building (Inspect) Visit Preview 💬 Add feedback Dec 2, 2024 11:49am
medusa-dashboard ✅ Ready (Inspect) Visit Preview 💬 Add feedback Dec 2, 2024 11:49am
5 Skipped Deployments
Name Status Preview Comments Updated (UTC)
api-reference-v2 ⬜️ Ignored (Inspect) Visit Preview Dec 2, 2024 11:49am
docs-ui ⬜️ Ignored (Inspect) Visit Preview Dec 2, 2024 11:49am
docs-v2 ⬜️ Ignored (Inspect) Visit Preview Dec 2, 2024 11:49am
medusa-docs ⬜️ Ignored (Inspect) Visit Preview Dec 2, 2024 11:49am
resources-docs ⬜️ Ignored (Inspect) Visit Preview Dec 2, 2024 11:49am

Copy link
Contributor

@olivermrbl olivermrbl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@thetutlage thetutlage merged commit 3e98364 into develop Dec 2, 2024
23 checks passed
@thetutlage thetutlage deleted the feat/dml-pg-checks branch December 2, 2024 12:30
hirotaka pushed a commit to hirotaka/medusa that referenced this pull request Dec 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants