Files
Shahed Nasser 1f360a3245 docs-util: support models implemented with DML in typedoc custom plugins (#7847)
- Support generating reference for models implemented with DML
- Support resolving and generating mermaid diagram for relations

The Currency Module was used an example so its reference is generated to showcase the work of this PR.
2024-07-01 07:34:51 +00:00

106 lines
2.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
slug: /references/notification-provider-module
---
import { TypeList } from "docs-ui"
# How to Create a Notification Provider Module
In this document, youll learn how to create a notification provider module and the methods you must implement in it.
---
## 1. Create Module Directory
Start by creating a new directory for your module. For example, `src/modules/my-notification`.
---
## 2. Create the Notification Provider Service
Create the file `src/modules/my-notification/service.ts` that holds the implementation of the notification service.
The Notification Provider Module's main service must extend the `AbstractNotificationProviderService` class imported from `@medusajs/utils`:
```ts title="src/modules/my-notification/service.ts"
import {
AbstractNotificationProviderService
} from "@medusajs/utils"
class MyNotificationProviderService extends AbstractNotificationProviderService {
// TODO add methods
}
export default MyNotificationProviderService
```
### constructor
### send
#### Parameters
<TypeList types={[{"name":"notification","type":"`ProviderSendNotificationDTO`","description":"","optional":false,"defaultValue":"","expandable":false,"children":[]}]} sectionTitle="send"/>
#### Returns
<TypeList types={[{"name":"Promise","type":"Promise&#60;ProviderSendNotificationResultsDTO&#62;","optional":false,"defaultValue":"","description":"","expandable":false,"children":[{"name":"ProviderSendNotificationResultsDTO","type":"`ProviderSendNotificationResultsDTO`","optional":false,"defaultValue":"","description":"","expandable":false,"children":[]}]}]} sectionTitle="send"/>
---
## 3. Create Module Definition File
Create the file `src/modules/my-notification/index.ts` with the following content:
```ts title="src/modules/my-notification/index.ts"
import MyNotificationProviderService from "./service"
export default {
service: MyNotificationProviderService,
}
```
This exports the module's definition, indicating that the `MyNotificationProviderService` is the main service of the module.
---
## 4. Use Module
To use your Notification Provider Module, add it to the `providers` array of the Notification Module:
<Note>
The Notification Module accepts one provider per channel.
</Note>
```js title="medusa-config.js"
const { Modules } = require("@medusajs/modules-sdk")
// ...
module.exports = defineConfig({
// ...
modules: {
[Modules.NOTIFICATION]: {
resolve: "@medusajs/notification",
options: {
providers: [
{
resolve: "./modules/my-notification",
options: {
config: {
"my-notification": {
channels: ["email"],
// provider options...
},
},
},
},
],
},
},
}
})
```