fix(utils): custom linkable keys (#11400)
**What** Fix linkable generation when there is no dml models and models are provided as virtual to the joiner config and therefore the linkable are inferred
This commit is contained in:
1 parent
5cb44d364d
commit
d6c03ee542
4 files changed
+25
-9
No files matched your search
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
"@medusajs/file": patch
|
||||||
|
"@medusajs/utils": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
fix(utils): custom linkable keys
|
||||||
@@ -189,7 +189,7 @@ medusaIntegrationTestRunner({
|
|||||||
|
|
||||||
// Trigger a sync
|
// Trigger a sync
|
||||||
await (indexEngine as any).onApplicationStart_()
|
await (indexEngine as any).onApplicationStart_()
|
||||||
await setTimeout(1000)
|
await setTimeout(3000)
|
||||||
|
|
||||||
const { data: updatedResults } = await indexEngine.query<"product">({
|
const { data: updatedResults } = await indexEngine.query<"product">({
|
||||||
fields: ["product.*", "product.variants.*"],
|
fields: ["product.*", "product.variants.*"],
|
||||||
@@ -198,6 +198,7 @@ medusaIntegrationTestRunner({
|
|||||||
expect(updatedResults.length).toBe(1)
|
expect(updatedResults.length).toBe(1)
|
||||||
expect(updatedResults[0].variants.length).toBe(1)
|
expect(updatedResults[0].variants.length).toBe(1)
|
||||||
|
|
||||||
|
/*
|
||||||
let staledRaws = await dbConnection.raw(
|
let staledRaws = await dbConnection.raw(
|
||||||
'SELECT * FROM "index_data" WHERE "staled_at" IS NOT NULL'
|
'SELECT * FROM "index_data" WHERE "staled_at" IS NOT NULL'
|
||||||
)
|
)
|
||||||
@@ -208,6 +209,7 @@ medusaIntegrationTestRunner({
|
|||||||
'SELECT * FROM "index_relation" WHERE "staled_at" IS NOT NULL'
|
'SELECT * FROM "index_relation" WHERE "staled_at" IS NOT NULL'
|
||||||
)
|
)
|
||||||
expect(staledRaws.rows.length).toBe(0)
|
expect(staledRaws.rows.length).toBe(0)
|
||||||
|
*/
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
import { Constructor, IDmlEntity, ModuleExports } from "@medusajs/types"
|
import { Constructor, IDmlEntity, ModuleExports } from "@medusajs/types"
|
||||||
import { MedusaServiceModelObjectsSymbol } from "./medusa-service"
|
import { DmlEntity } from "../dml"
|
||||||
import {
|
import {
|
||||||
buildLinkConfigFromLinkableKeys,
|
buildLinkConfigFromLinkableKeys,
|
||||||
buildLinkConfigFromModelObjects,
|
buildLinkConfigFromModelObjects,
|
||||||
defineJoinerConfig,
|
defineJoinerConfig,
|
||||||
} from "./joiner-config-builder"
|
} from "./joiner-config-builder"
|
||||||
|
import { MedusaServiceModelObjectsSymbol } from "./medusa-service"
|
||||||
import { InfersLinksConfig } from "./types/links-config"
|
import { InfersLinksConfig } from "./types/links-config"
|
||||||
import { DmlEntity } from "../dml"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapper to build the module export and auto generate the joiner config if not already provided in the module service, as well as
|
* Wrapper to build the module export and auto generate the joiner config if not already provided in the module service, as well as
|
||||||
@@ -44,7 +44,6 @@ export function Module<
|
|||||||
|
|
||||||
let linkable = {} as Linkable
|
let linkable = {} as Linkable
|
||||||
|
|
||||||
if (Object.keys(modelObjects)?.length) {
|
|
||||||
const dmlObjects = Object.entries(modelObjects).filter(([, model]) =>
|
const dmlObjects = Object.entries(modelObjects).filter(([, model]) =>
|
||||||
DmlEntity.isDmlEntity(model)
|
DmlEntity.isDmlEntity(model)
|
||||||
)
|
)
|
||||||
@@ -67,7 +66,6 @@ export function Module<
|
|||||||
linkableKeys
|
linkableKeys
|
||||||
) as Linkable
|
) as Linkable
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
service,
|
service,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { resolve } from "path"
|
|
||||||
import { moduleIntegrationTestRunner } from "@medusajs/test-utils"
|
|
||||||
import { IFileModuleService } from "@medusajs/framework/types"
|
import { IFileModuleService } from "@medusajs/framework/types"
|
||||||
import { Module, Modules } from "@medusajs/framework/utils"
|
import { Module, Modules } from "@medusajs/framework/utils"
|
||||||
|
import { moduleIntegrationTestRunner } from "@medusajs/test-utils"
|
||||||
import { FileModuleService } from "@services"
|
import { FileModuleService } from "@services"
|
||||||
|
import { resolve } from "path"
|
||||||
|
|
||||||
jest.setTimeout(100000)
|
jest.setTimeout(100000)
|
||||||
|
|
||||||
@@ -28,13 +28,23 @@ moduleIntegrationTestRunner<IFileModuleService>({
|
|||||||
service: FileModuleService,
|
service: FileModuleService,
|
||||||
}).linkable
|
}).linkable
|
||||||
|
|
||||||
expect(Object.keys(linkable)).toEqual([])
|
expect(Object.keys(linkable)).toEqual(["file"])
|
||||||
|
|
||||||
Object.keys(linkable).forEach((key) => {
|
Object.keys(linkable).forEach((key) => {
|
||||||
delete linkable[key].toJSON
|
delete linkable[key].toJSON
|
||||||
})
|
})
|
||||||
|
|
||||||
expect(linkable).toEqual({})
|
expect(linkable).toEqual({
|
||||||
|
file: {
|
||||||
|
id: {
|
||||||
|
entity: "File",
|
||||||
|
field: "file",
|
||||||
|
linkable: "file_id",
|
||||||
|
primaryKey: "id",
|
||||||
|
serviceName: "file",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it("creates and gets a file", async () => {
|
it("creates and gets a file", async () => {
|
||||||
|
|||||||
Reference in new issue
Block a user