* 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>
62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
import { MedusaError } from "medusa-core-utils"
|
|
|
|
const QUERY_RUNNER_RELEASED = "QueryRunnerAlreadyReleasedError"
|
|
const TRANSACTION_STARTED = "TransactionAlreadyStartedError"
|
|
const TRANSACTION_NOT_STARTED = "TransactionNotStartedError"
|
|
|
|
const API_ERROR = "api_error"
|
|
const INVALID_REQUEST_ERROR = "invalid_request_error"
|
|
const INVALID_STATE_ERROR = "invalid_state_error"
|
|
|
|
export default () => {
|
|
return (err, req, res, next) => {
|
|
const logger = req.scope.resolve("logger")
|
|
logger.error(err)
|
|
|
|
const errorType = err.type || err.name
|
|
|
|
const errObj = {
|
|
code: err.code,
|
|
type: err.type,
|
|
message: err.message,
|
|
}
|
|
|
|
let statusCode = 500
|
|
switch (errorType) {
|
|
case QUERY_RUNNER_RELEASED:
|
|
case TRANSACTION_STARTED:
|
|
case TRANSACTION_NOT_STARTED:
|
|
statusCode = 409
|
|
errObj.code = INVALID_STATE_ERROR
|
|
errObj.message =
|
|
"The request conflicted with another request. You may retry the request with the provided Idempotency-Key."
|
|
break
|
|
case MedusaError.Types.DUPLICATE_ERROR:
|
|
statusCode = 402
|
|
errObj.code = INVALID_REQUEST_ERROR
|
|
break
|
|
case MedusaError.Types.NOT_ALLOWED:
|
|
case MedusaError.Types.INVALID_DATA:
|
|
statusCode = 400
|
|
break
|
|
case MedusaError.Types.NOT_FOUND:
|
|
statusCode = 404
|
|
break
|
|
case MedusaError.Types.DB_ERROR:
|
|
statusCode = 500
|
|
errObj.code = API_ERROR
|
|
break
|
|
case MedusaError.Types.UNEXPECTED_STATE:
|
|
case MedusaError.Types.INVALID_ARGUMENT:
|
|
break
|
|
default:
|
|
errObj.code = "unknown_error"
|
|
errObj.message = "An unknown error occurred."
|
|
errObj.type = "unknown_error"
|
|
break
|
|
}
|
|
|
|
res.status(statusCode).json(errObj)
|
|
}
|
|
}
|