Files
medusa-store/packages/modules/order/src/models/order-item.ts
T
Nicolas Gorga ef162f8b5f fix(order): Add composite unique index on order_item version:item_id (#14164)
* Unique index on order_item version:item_id

* Add changeset
2025-12-02 08:55:25 -03:00

63 lines
1.8 KiB
TypeScript

import { model } from "@medusajs/framework/utils"
import { OrderLineItem } from "./line-item"
import { Order } from "./order"
const _OrderItem = model
.define("OrderItem", {
id: model.id({ prefix: "orditem" }).primaryKey(),
version: model.number().default(1),
unit_price: model.bigNumber().nullable(),
compare_at_unit_price: model.bigNumber().nullable(),
quantity: model.bigNumber(),
fulfilled_quantity: model.bigNumber().default(0),
delivered_quantity: model.bigNumber().default(0),
shipped_quantity: model.bigNumber().default(0),
return_requested_quantity: model.bigNumber().default(0),
return_received_quantity: model.bigNumber().default(0),
return_dismissed_quantity: model.bigNumber().default(0),
written_off_quantity: model.bigNumber().default(0),
metadata: model.json().nullable(),
order: model.belongsTo<() => typeof Order>(() => Order, {
mappedBy: "items",
}),
item: model.hasOne<() => typeof OrderLineItem>(() => OrderLineItem, {
mappedBy: undefined,
foreignKey: true,
}),
})
.indexes([
{
name: "IDX_order_item_order_id",
on: ["order_id"],
unique: false,
where: "deleted_at IS NULL",
},
{
name: "IDX_order_item_order_id_version",
on: ["order_id", "version"],
unique: false,
where: "deleted_at IS NULL",
},
{
name: "IDX_order_item_item_id",
on: ["item_id"],
unique: false,
where: "deleted_at IS NULL",
},
{
name: "IDX_order_item_deleted_at",
on: ["deleted_at"],
unique: false,
where: "deleted_at IS NOT NULL",
},
{
name: "IDX_unique_order_item_version_item_id",
on: ["version", "item_id"],
unique: true,
where: "deleted_at IS NULL",
},
])
export const OrderItem = _OrderItem