Files
medusa-store/www/apps/resources/app/data-model-repository-reference/page.mdx
MBLVD 799b57c396 docs: fix spelling and grammar (#13862)
Fixed various spelling errors and grammatical issues across multiple .mdx documentation files.
2025-10-27 10:48:59 +02:00

88 lines
2.5 KiB
Plaintext

import { ChildDocs } from "docs-ui"
export const metadata = {
title: `Data Model Repository Reference`,
}
# {metadata.title}
This section of the documentation provides a reference of the methods generated for data model repositories that are injected into a module's container.
<Note title="Tip">
Learn more about the data model repository in the [Database Operations](!docs!/learn/fundamentals/modules/db-operations) documentation.
</Note>
## When to Use the Data Model Repository?
If your module has data models, then you should always extend the [service factory](!docs!/learn/fundamentals/modules/service-factory). It generates basic data-management operations for your module's data models.
However, there are some cases where you might need to perform more complex database operations and need more control over the parameters you're passing.
In those cases, you can use the data model repository.
---
## Data Model Repository Registration Name
When the Medusa application injects a data model repository into a module's container, it formats the registration name by:
- Taking the data model's name that's passed as the first parameter of `model.define`
- Lower-casing the first character
- Suffixing the result with `Repository`.
For example:
- `Post` model: `postRepository`
- `My_Custom` model: `my_CustomRepository`
---
## Resolve Data Model Repository
To resolve a data model repository from a module's container, pass the data model's name in the first parameter of the module's constructor.
For example:
export const resolveRepoHighlights = [
["17", "postRepository", "Resolve the data model repository for the `Post` model."],
]
```ts highlights={resolveRepoHighlights}
import { MedusaService } from "@medusajs/framework/utils"
import { InferTypeOf, DAL } from "@medusajs/framework/types"
import Post from "./models/post"
type Post = InferTypeOf<typeof Post>
type InjectedDependencies = {
postRepository: DAL.RepositoryService<Post>
}
class BlogModuleService extends MedusaService({
Post,
}){
protected postRepository_: DAL.RepositoryService<Post>
constructor({
postRepository,
}: InjectedDependencies) {
super(...arguments)
this.postRepository_ = postRepository
}
}
export default BlogModuleService
```
In this example, the `BlogModuleService` class resolves the `postRepository` from its container.
---
## Methods Reference
Learn how to use the data model repository's methods to perform database operations on the data model.
<ChildDocs showItems={["Methods"]} hideTitle />