feat(core-flows,modules-sdk,types,medusa,link-modules): adds variant <> inventory item link endpoints (#7576)

what:

- adds variant inventory link management endpoints:
```
Link inventory item to variant
POST /products/:id/variants/:vid/inventory-items

Update variant's inventory item link
POST /products/:id/variants/:vid/inventory-items/:iid

Unlink variant's inventory item
DELETE /products/:id/variants/:vid/inventory-items/:iid
```

- a batch endpoint that does the above 3 across variants
```
POST /products/:id/variants/inventory-items
```
This commit is contained in:
Riqwan Thamir
2024-06-03 20:23:29 +02:00
committed by GitHub
parent 122186a78d
commit ecfbfcc707
23 changed files with 1279 additions and 126 deletions

View File

@@ -0,0 +1,37 @@
import { LoadedModule } from "@medusajs/types"
import { isPresent } from "@medusajs/utils"
import { LinkDefinition } from "../remote-link"
export const convertRecordsToLinkDefinition = (
links: object[],
service: LoadedModule
): LinkDefinition[] => {
const linkRelations = service.__joinerConfig.relationships || []
const linkDataFields = service.__joinerConfig.extraDataFields || []
const results: LinkDefinition[] = []
for (const link of links) {
const result: LinkDefinition = {}
for (const relation of linkRelations) {
result[relation.serviceName] = {
[relation.foreignKey]: link[relation.foreignKey],
}
}
const data: LinkDefinition["data"] = {}
for (const dataField of linkDataFields) {
data[dataField] = link[dataField]
}
if (isPresent(data)) {
result.data = data
}
results.push(result)
}
return results
}