docs: additions and improvements to modules and DML documentation (#7854)

* docs: additions and improvements to modules and DML documentation

* small wording fix
This commit is contained in:
Shahed Nasser
2024-07-01 10:26:40 +03:00
committed by GitHub
parent 72f7500c84
commit b62f23ea00
7 changed files with 66 additions and 11 deletions

View File

@@ -67,7 +67,7 @@ The `unique` method indicates that a propertys value must be unique in the da
For example:
export const uniqueHighlights = [
["5", "unique", "Configure the `email` property to allow unique values only."]
["4", "unique", "Configure the `email` property to allow unique values only."]
]
```ts highlights={uniqueHighlights}

View File

@@ -20,7 +20,11 @@ The `searchable` method of the `model` utility indicates that a `text` property
For example:
```ts
export const searchableHighlights = [
["4", "searchable", "Define the `name` property as searchable."]
]
```ts highlights={searchableHighlights}
import { model } from "@medusajs/utils"
const MyCustom = model.define("my_custom", {

View File

@@ -14,8 +14,6 @@ So, resources in the module, such as services or loaders, can only resolve other
- `logger`: A utility to log message in the Medusa application's logs.
{/* TODO add other relevant resources, such as event bus */}
---
## Resolve Resources

View File

@@ -0,0 +1,32 @@
export const metadata = {
title: `${pageNumber} Module Isolation`,
}
# {metadata.title}
In this chapter, you'll learn about how modules are isolated, and what that means for your custom development.
<Note title="Summary">
- Modules can't access resources, such as services, from other modules.
- You can use Medusa's tools, explained in the next chapters, to extend modules or implement features across modules.
</Note>
## How are Modules Isolated?
A module is unaware of any resources other than its own, such as services or data models. This means it can't access these resources if they're implemented in another module.
For example, your custom module can't resolve the Product Module's main service or have direct relationships from its data model to another module's data model.
---
## Customize and Implement Features Across Modules
In your Medusa application, you want to implement features that span across modules, or you want to extend existing modules to add new features.
For example, you want to extend the Product Module to add new properties to the `Product` data model.
Medusa provides the tools to implement these use cases while maintaining isolation between modules.
The next chapters explain these tools and how to use them in your custom development.

View File

@@ -73,7 +73,7 @@ export async function GET(
const query = remoteQueryObjectFromString({
entryPoint: "my_custom",
fields: ["id", "test"],
fields: ["id", "name"],
})
res.json({

View File

@@ -172,3 +172,24 @@ For example, the following methods are generated for the code snippet above:
Except for the `retrieve` method, the suffixed data model's name is plural.
</Note>
### Using a Constructor
If you implement the `constructor` of your service, make sure to call `super` passing it `...arguments`.
For example:
```ts highlights={[["8"]]}
import { MedusaService } from "@medusajs/utils"
import MyCustom from "./models/my-custom"
class HelloModuleService extends MedusaService({
MyCustom,
}){
constructor() {
super(...arguments)
}
}
export default HelloModuleService
```

View File

@@ -107,8 +107,8 @@ export const sidebar = sidebarAttachHrefCommonOptions(
title: "Service Factory",
},
{
path: "/advanced-development/modules/options",
title: "Module Options",
path: "/advanced-development/modules/isolation",
title: "Module Isolation",
},
{
path: "/advanced-development/modules/remote-query",
@@ -122,6 +122,10 @@ export const sidebar = sidebarAttachHrefCommonOptions(
path: "/advanced-development/modules/remote-link",
title: "Remote Link",
},
{
path: "/advanced-development/modules/options",
title: "Module Options",
},
],
},
{
@@ -143,10 +147,6 @@ export const sidebar = sidebarAttachHrefCommonOptions(
path: "/advanced-development/data-models/relationships",
title: "Relationships",
},
{
path: "/advanced-development/data-models/relationship-cascades",
title: "Relationship Cascades",
},
{
path: "/advanced-development/data-models/indexes",
title: "Data Model Index",