chore(): order module index and some impl details (#13462)

* order module fixes

* order module fixes

* fixes

* revert big number

* Create wet-wombats-rule.md
This commit is contained in:
Adrien de Peretti
2025-09-11 09:02:38 +02:00
committed by GitHub
parent 368c1d1e17
commit 823a5c75ff
23 changed files with 680 additions and 463 deletions

View File

@@ -0,0 +1,404 @@
import { Migration } from "@mikro-orm/migrations"
export class Migration20250910130000 extends Migration {
override async up(): Promise<void> {
// Drop all existing indexes with incorrect WHERE clauses (IS NOT NULL instead of IS NULL)
// Order table indexes
this.addSql('drop index if exists "IDX_order_display_id";')
this.addSql('drop index if exists "IDX_order_region_id";')
this.addSql('drop index if exists "IDX_order_customer_id";')
this.addSql('drop index if exists "IDX_order_sales_channel_id";')
this.addSql('drop index if exists "IDX_order_currency_code";')
this.addSql('drop index if exists "IDX_order_shipping_address_id";')
this.addSql('drop index if exists "IDX_order_billing_address_id";')
this.addSql('drop index if exists "IDX_order_is_draft_order";')
// Order change table indexes
this.addSql('drop index if exists "IDX_order_change_order_id";')
this.addSql('drop index if exists "IDX_order_change_return_id";')
this.addSql('drop index if exists "IDX_order_change_claim_id";')
this.addSql('drop index if exists "IDX_order_change_exchange_id";')
this.addSql('drop index if exists "IDX_order_change_status";')
this.addSql('drop index if exists "IDX_order_change_version";')
// Order change action table indexes
this.addSql(
'drop index if exists "IDX_order_change_action_order_change_id";'
)
this.addSql('drop index if exists "IDX_order_change_action_order_id";')
this.addSql('drop index if exists "IDX_order_change_action_return_id";')
this.addSql('drop index if exists "IDX_order_change_action_claim_id";')
this.addSql('drop index if exists "IDX_order_change_action_exchange_id";')
this.addSql('drop index if exists "IDX_order_change_action_ordering";')
// Order summary table indexes
this.addSql('drop index if exists "IDX_order_summary_order_id_version";')
// Order claim table indexes
this.addSql('drop index if exists "IDX_order_claim_display_id";')
this.addSql('drop index if exists "IDX_order_claim_order_id";')
this.addSql('drop index if exists "IDX_order_claim_return_id";')
// Order claim item table indexes
this.addSql('drop index if exists "IDX_order_claim_item_claim_id";')
this.addSql('drop index if exists "IDX_order_claim_item_item_id";')
// Order claim item image table indexes
this.addSql(
'drop index if exists "IDX_order_claim_item_image_claim_item_id";'
)
// Order credit line table indexes
this.addSql('drop index if exists "IDX_order_credit_line_order_id";')
// Order exchange table indexes
this.addSql('drop index if exists "IDX_order_exchange_display_id";')
this.addSql('drop index if exists "IDX_order_exchange_order_id";')
this.addSql('drop index if exists "IDX_order_exchange_return_id";')
// Order exchange item table indexes
this.addSql('drop index if exists "IDX_order_exchange_item_exchange_id";')
this.addSql('drop index if exists "IDX_order_exchange_item_item_id";')
// Line item table indexes
this.addSql('drop index if exists "IDX_order_line_item_product_id";')
this.addSql('drop index if exists "IDX_line_item_product_type_id";')
this.addSql('drop index if exists "IDX_order_line_item_variant_id";')
// Order item table indexes
this.addSql('drop index if exists "IDX_order_item_order_id";')
this.addSql('drop index if exists "IDX_order_item_item_id";')
this.addSql('drop index if exists "IDX_order_item_version";')
// Order shipping method table indexes
this.addSql('drop index if exists "IDX_order_shipping_order_id";')
this.addSql('drop index if exists "IDX_order_shipping_return_id";')
this.addSql('drop index if exists "IDX_order_shipping_claim_id";')
this.addSql('drop index if exists "IDX_order_shipping_exchange_id";')
this.addSql('drop index if exists "IDX_order_shipping_shipping_method_id";')
this.addSql('drop index if exists "IDX_order_shipping_version";')
// Return table indexes
this.addSql('drop index if exists "IDX_return_display_id";')
this.addSql('drop index if exists "IDX_return_order_id";')
this.addSql('drop index if exists "IDX_return_exchange_id";')
this.addSql('drop index if exists "IDX_return_claim_id";')
// Return item table indexes
this.addSql('drop index if exists "IDX_return_item_return_id";')
this.addSql('drop index if exists "IDX_return_item_item_id";')
this.addSql('drop index if exists "IDX_return_item_reason_id";')
// Return reason table indexes
this.addSql('drop index if exists "IDX_return_reason_value";')
this.addSql(
'drop index if exists "IDX_return_reason_parent_return_reason_id";'
)
// Transaction table indexes
this.addSql('drop index if exists "IDX_order_transaction_order_id";')
this.addSql(
'drop index if exists "IDX_order_transaction_order_id_version";'
)
this.addSql('drop index if exists "IDX_order_transaction_return_id";')
this.addSql('drop index if exists "IDX_order_transaction_claim_id";')
this.addSql('drop index if exists "IDX_order_transaction_exchange_id";')
this.addSql('drop index if exists "IDX_order_transaction_reference_id";')
this.addSql('drop index if exists "IDX_order_transaction_currency_code";')
// Recreate all indexes with correct WHERE clauses (IS NULL for active records)
// Order table indexes
this.addSql(
'create index "IDX_order_display_id" on "order" ("display_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_region_id" on "order" ("region_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_customer_id" on "order" ("customer_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_sales_channel_id" on "order" ("sales_channel_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_currency_code" on "order" ("currency_code") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_shipping_address_id" on "order" ("shipping_address_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_billing_address_id" on "order" ("billing_address_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_is_draft_order" on "order" ("is_draft_order") where "deleted_at" is null;'
)
// Order change table indexes
this.addSql(
'create index "IDX_order_change_order_id" on "order_change" ("order_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_return_id" on "order_change" ("return_id") where "return_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_claim_id" on "order_change" ("claim_id") where "claim_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_exchange_id" on "order_change" ("exchange_id") where "exchange_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_status" on "order_change" ("status") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_version" on "order_change" ("order_id", "version") where "deleted_at" is null;'
)
// Order change action table indexes
this.addSql(
'create index "IDX_order_change_action_order_change_id" on "order_change_action" ("order_change_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_action_order_id" on "order_change_action" ("order_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_action_return_id" on "order_change_action" ("return_id") where "return_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_action_claim_id" on "order_change_action" ("claim_id") where "claim_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_action_exchange_id" on "order_change_action" ("exchange_id") where "exchange_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_change_action_ordering" on "order_change_action" ("ordering") where "deleted_at" is null;'
)
// Order summary table indexes
this.addSql(
'create index "IDX_order_summary_order_id_version" on "order_summary" ("order_id", "version") where "deleted_at" is null;'
)
// Order claim table indexes
this.addSql(
'create index "IDX_order_claim_display_id" on "order_claim" ("display_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_claim_order_id" on "order_claim" ("order_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_claim_return_id" on "order_claim" ("return_id") where "return_id" is not null and "deleted_at" is null;'
)
// Order claim item table indexes
this.addSql(
'create index "IDX_order_claim_item_claim_id" on "order_claim_item" ("claim_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_claim_item_item_id" on "order_claim_item" ("item_id") where "deleted_at" is null;'
)
// Order claim item image table indexes
this.addSql(
'create index "IDX_order_claim_item_image_claim_item_id" on "order_claim_item_image" ("claim_item_id") where "deleted_at" is null;'
)
// Order credit line table indexes
this.addSql(
'create index "IDX_order_credit_line_order_id" on "order_credit_line" ("order_id") where "deleted_at" is null;'
)
// Order exchange table indexes
this.addSql(
'create index "IDX_order_exchange_display_id" on "order_exchange" ("display_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_exchange_order_id" on "order_exchange" ("order_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_exchange_return_id" on "order_exchange" ("return_id") where "return_id" is not null and "deleted_at" is null;'
)
// Order exchange item table indexes
this.addSql(
'create index "IDX_order_exchange_item_exchange_id" on "order_exchange_item" ("exchange_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_exchange_item_item_id" on "order_exchange_item" ("item_id") where "deleted_at" is null;'
)
// Line item table indexes
this.addSql(
'create index "IDX_order_line_item_product_id" on "order_line_item" ("product_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_line_item_product_type_id" on "order_line_item" ("product_type_id") where "deleted_at" is null and "product_type_id" is not null;'
)
this.addSql(
'create index "IDX_order_line_item_variant_id" on "order_line_item" ("variant_id") where "deleted_at" is null;'
)
// Order item table indexes
this.addSql(
'create index "IDX_order_item_order_id" on "order_item" ("order_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_item_item_id" on "order_item" ("item_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_item_version" on "order_item" ("order_id", "version") where "deleted_at" is null;'
)
// Order shipping method table indexes
this.addSql(
'create index "IDX_order_shipping_order_id" on "order_shipping" ("order_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_shipping_return_id" on "order_shipping" ("return_id") where "return_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_shipping_claim_id" on "order_shipping" ("claim_id") where "claim_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_shipping_exchange_id" on "order_shipping" ("exchange_id") where "exchange_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_shipping_shipping_method_id" on "order_shipping" ("shipping_method_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_shipping_version" on "order_shipping" ("order_id", "version") where "deleted_at" is null;'
)
// Return table indexes
this.addSql(
'create index "IDX_return_display_id" on "return" ("display_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_return_order_id" on "return" ("order_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_return_exchange_id" on "return" ("exchange_id") where "exchange_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_return_claim_id" on "return" ("claim_id") where "claim_id" is not null and "deleted_at" is null;'
)
// Return item table indexes
this.addSql(
'create index "IDX_return_item_return_id" on "return_item" ("return_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_return_item_item_id" on "return_item" ("item_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_return_item_reason_id" on "return_item" ("reason_id") where "deleted_at" is null;'
)
// Return reason table indexes
this.addSql(
'create index "IDX_return_reason_value" on "return_reason" ("value") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_return_reason_parent_return_reason_id" on "return_reason" ("parent_return_reason_id") where "deleted_at" is null;'
)
// Transaction table indexes
this.addSql(
'create index "IDX_order_transaction_order_id" on "order_transaction" ("order_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_transaction_order_id_version" on "order_transaction" ("order_id", "version") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_transaction_return_id" on "order_transaction" ("return_id") where "return_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_transaction_claim_id" on "order_transaction" ("claim_id") where "claim_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_transaction_exchange_id" on "order_transaction" ("exchange_id") where "exchange_id" is not null and "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_transaction_reference_id" on "order_transaction" ("reference_id") where "deleted_at" is null;'
)
this.addSql(
'create index "IDX_order_transaction_currency_code" on "order_transaction" ("currency_code") where "deleted_at" is null;'
)
}
override async down(): Promise<void> {
// Drop all the corrected indexes (this is a simplified rollback - in practice you might want to be more specific)
const indexesToDrop = [
"IDX_order_display_id",
"IDX_order_region_id",
"IDX_order_customer_id",
"IDX_order_sales_channel_id",
"IDX_order_currency_code",
"IDX_order_shipping_address_id",
"IDX_order_billing_address_id",
"IDX_order_is_draft_order",
"IDX_order_change_order_id",
"IDX_order_change_return_id",
"IDX_order_change_claim_id",
"IDX_order_change_exchange_id",
"IDX_order_change_status",
"IDX_order_change_version",
"IDX_order_change_action_order_change_id",
"IDX_order_change_action_order_id",
"IDX_order_change_action_return_id",
"IDX_order_change_action_claim_id",
"IDX_order_change_action_exchange_id",
"IDX_order_change_action_ordering",
"IDX_order_summary_order_id_version",
"IDX_order_claim_display_id",
"IDX_order_claim_order_id",
"IDX_order_claim_return_id",
"IDX_order_claim_item_claim_id",
"IDX_order_claim_item_item_id",
"IDX_order_claim_item_image_claim_item_id",
"IDX_order_credit_line_order_id",
"IDX_order_exchange_display_id",
"IDX_order_exchange_order_id",
"IDX_order_exchange_return_id",
"IDX_order_exchange_item_exchange_id",
"IDX_order_exchange_item_item_id",
"IDX_order_line_item_product_id",
"IDX_line_item_product_type_id",
"IDX_order_line_item_variant_id",
"IDX_order_item_order_id",
"IDX_order_item_item_id",
"IDX_order_item_version",
"IDX_order_shipping_order_id",
"IDX_order_shipping_return_id",
"IDX_order_shipping_claim_id",
"IDX_order_shipping_exchange_id",
"IDX_order_shipping_shipping_method_id",
"IDX_order_shipping_version",
"IDX_return_display_id",
"IDX_return_order_id",
"IDX_return_exchange_id",
"IDX_return_claim_id",
"IDX_return_item_return_id",
"IDX_return_item_item_id",
"IDX_return_item_reason_id",
"IDX_return_reason_value",
"IDX_return_reason_parent_return_reason_id",
"IDX_order_transaction_order_id",
"IDX_order_transaction_order_id_version",
"IDX_order_transaction_return_id",
"IDX_order_transaction_claim_id",
"IDX_order_transaction_exchange_id",
"IDX_order_transaction_reference_id",
"IDX_order_transaction_currency_code",
]
for (const indexName of indexesToDrop) {
this.addSql(`drop index if exists "${indexName}";`)
}
// Note: For a complete rollback, you would recreate the original incorrect indexes here
// This is omitted for brevity, but in practice you might want to restore the original state
}
}