* docs: changed details related to new method signatures * updated the information regarding update_requests * small changes to the text * lint fixes * fixed constructor * fixes based on review
129 lines
4.0 KiB
Markdown
129 lines
4.0 KiB
Markdown
---
|
|
description: 'Actions Required for v.1.7.1'
|
|
---
|
|
|
|
# v1.7.1
|
|
|
|
Version `1.7.1` of Medusa introduces the `JobSchedulerService` which changes how scheduled/cron jobs are created.
|
|
|
|
## Overview
|
|
|
|
Version `1.7.1` of Medusa introduces a new service `JobSchedulerService` that handles all logic and functionality related to created scheduled (previously named cron jobs).
|
|
|
|
With this introduction, the previous use of `EventBus` to create a cron job has been deprecated of using the `JobSchedulerService`.
|
|
|
|
In addition, this version features some fixes to gift cards that requires running migrations, and changes to how payment providers are implemented.
|
|
|
|
---
|
|
|
|
## Actions Required
|
|
|
|
### Run Migrations
|
|
|
|
In the directory of your Medusa server, run the following command after updating the server:
|
|
|
|
```bash
|
|
medusa migrations run
|
|
```
|
|
|
|
### Run Migration Script
|
|
|
|
Following the fix gift cards calculation, you also need to run a migration script after updating the server.
|
|
|
|
Start by adding the following environment variables in `.env`:
|
|
|
|
```bash
|
|
TYPEORM_CONNECTION=postgres
|
|
TYPEORM_URL=<DATABASE_URL>
|
|
TYPEORM_USERNAME=<DATABASE_USERNAME>
|
|
TYPEORM_PASSWORD=<DATABASE_PASSWORD>
|
|
TYPEORM_DATABASE=<DATABASE_DATABASE>
|
|
TYPEORM_ENTITIES=./node_modules/@medusajs/medusa/dist/models/*.js
|
|
TYPEORM_MIGRATIONS=./node_modules/@medusajs/medusa/dist/migrations/*.js
|
|
```
|
|
|
|
Make sure to replace `<DATABASE_URL>`, `<DATABASE_USERNAME>`, `<DATABASE_PASSWORD>`, and `<DATABASE_DATABASE>` with your database connection details.
|
|
|
|
Then, run the following command in the root directory of your Medusa server:
|
|
|
|
```bash
|
|
node ./node_modules/@medusajs/medusa/dist/scripts/gift-card-tax-rate-migration.js
|
|
```
|
|
|
|
### Change to JobSchedulerService
|
|
|
|
In your loader file that creates a cron job, replace the use of `eventBus` to `jobSchedulerService`:
|
|
|
|
```ts
|
|
const myJob = async (container, options) => {
|
|
const jobSchedulerService = container.resolve("jobSchedulerService")
|
|
jobSchedulerService.create("my-job", {}, "0 0 * * *", async () => {
|
|
// ...
|
|
})
|
|
}
|
|
|
|
export default myJob
|
|
```
|
|
|
|
You can learn more in the [How to Create a Scheduled Job](../scheduled-jobs/create.md) documentation.
|
|
|
|
### Change to Payment Provider
|
|
|
|
This version of Medusa introduces a change in how payment providers are implemented. Mainly, the signature of the `createPayment` and `updatePayment` methods have changed, and the old signature is now deprecated.
|
|
|
|
Although this change is currently backwards compatible, it is recommended to change the signature of these methods to the following:
|
|
|
|
<!-- eslint-disable max-len -->
|
|
|
|
```ts
|
|
import { Cart, PaymentSessionData, PaymentContext, PaymentSessionResponse } from "@medusajs/medusa"
|
|
// ...
|
|
|
|
class MyPaymentService extends AbstractPaymentService<TransactionBaseService> {
|
|
// ...
|
|
async createPayment(
|
|
context: Cart & PaymentContext
|
|
): Promise<PaymentSessionResponse> {
|
|
// ...
|
|
}
|
|
|
|
async updatePayment(
|
|
paymentSessionData: PaymentSessionData,
|
|
context: Cart & PaymentContext
|
|
): Promise<PaymentSessionResponse> {
|
|
// ...
|
|
}
|
|
}
|
|
```
|
|
|
|
Where `context` in both `createPayment` and `updatePayment` is made up of the following properties:
|
|
|
|
```ts
|
|
type PaymentContext = {
|
|
cart: {
|
|
context: Record<string, unknown>
|
|
id: string
|
|
email: string
|
|
shipping_address: Address | null
|
|
shipping_methods: ShippingMethod[]
|
|
}
|
|
currency_code: string
|
|
amount: number
|
|
resource_id?: string
|
|
customer?: Customer
|
|
}
|
|
```
|
|
|
|
So, you can pass the previous `cart` parameter inside the new `context` paramter.
|
|
|
|
Furthermore, these methods are now expected to return `PaymentSessionResponse`. It is made up of the following properties:
|
|
|
|
```ts
|
|
type PaymentSessionResponse = {
|
|
update_requests: { customer_metadata: Record<string, unknown> }
|
|
session_data: Record<string, unknown>
|
|
}
|
|
```
|
|
|
|
Where `session_data` would include the previously returned data from these methods. The property `update_requests` allows you to pass data from the payment provider plugin to the core to update internal resources. Currently, it can only be used to update the `metadata` field of the customer entity.
|