* fix babel transform-runtime regenerator required for migrations * add customer group model * add migration for customer group * add customer group model export * add customer group repository * add customer group service * add CustomerGroupRepository to "withTransaction" in CustomerGroupService * remove unnecessary argument to runtime plugin * service export ordering * add create customer group endpoint * add customergroup to route index in admin * add customer group service * add customer groups test * cleanup * add customers batch initial * batch creation of customer groups * integration testing batch creation * integration tests * chaining existing customers creation in repo * remove commented test * update unit tests to reflect change in idempotent behavior * ensure that exceptions are expected * update idempotency behavior * update formatting * update format * Update packages/medusa/src/repositories/customer-group.ts Co-authored-by: Sebastian Rindom <skrindom@gmail.com> * pr feedback * add In import * add seperate model dto * add integration test * error handling in repository * remove unused import * jsdoc * Update packages/medusa/src/api/routes/admin/customer-groups/add-customers-batch.ts Co-authored-by: Sebastian Rindom <skrindom@gmail.com> * Update packages/medusa/src/api/routes/admin/customer-groups/add-customers-batch.ts Co-authored-by: Sebastian Rindom <skrindom@gmail.com> * pr review comments * rename variable * fix: adds atomic phase clean up callback * fix: call error handler in new transaction block too * restore * error handling * fix: error handler in no isolation case * add integration test for missing group on update * final adjustments to test * fix pr feedback * cleanup core for pr * remove console.log * remove customergroupservice test from customers * Apply suggestions from code review Co-authored-by: Sebastian Rindom <skrindom@gmail.com> * add end bracket to customer tests * remove comments * change model decorator * fix integration test merge * onDelete cascade instead of cascade:true * remove verbose flag * fix: dedupe type * add save to customer groups * customer model delete cascade * add await to asyncronous save operations Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { MedusaError } from "medusa-core-utils"
|
|
|
|
export enum PostgresError {
|
|
DUPLICATE_ERROR = "23505",
|
|
FOREIGN_KEY_ERROR = "23503",
|
|
}
|
|
export const formatException = (err): Error => {
|
|
switch (err.code) {
|
|
case PostgresError.DUPLICATE_ERROR:
|
|
return new MedusaError(
|
|
MedusaError.Types.DUPLICATE_ERROR,
|
|
`${err.table.charAt(0).toUpperCase()}${err.table.slice(
|
|
1
|
|
)} with ${err.detail
|
|
.slice(4)
|
|
.replace(/[()=]/g, (s) => (s === "=" ? " " : ""))}`
|
|
)
|
|
case PostgresError.FOREIGN_KEY_ERROR: {
|
|
const matches =
|
|
/Key \(([\w-\d]+)\)=\(([\w-\d]+)\) is not present in table "(\w+)"/g.exec(
|
|
err.detail
|
|
)
|
|
|
|
if (matches?.length !== 4) {
|
|
return new MedusaError(
|
|
MedusaError.Types.NOT_FOUND,
|
|
JSON.stringify(matches)
|
|
)
|
|
}
|
|
|
|
return new MedusaError(
|
|
MedusaError.Types.NOT_FOUND,
|
|
`${matches[3]?.charAt(0).toUpperCase()}${matches[3]?.slice(1)} with ${
|
|
matches[1]
|
|
} ${matches[2]} does not exist.`
|
|
)
|
|
}
|
|
default:
|
|
return err
|
|
}
|
|
}
|