Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(modules-sdk): Remote Query #4463

Merged
merged 30 commits into from
Jul 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
9fc6794
feat: Remote Query
carlos-r-l-rodrigues Jul 4, 2023
2d09ca0
Merge branch 'develop' of https://github.com/medusajs/medusa into fea…
carlos-r-l-rodrigues Jul 4, 2023
b6926d1
Module Alias
carlos-r-l-rodrigues Jul 4, 2023
6e86157
chore: unit tests
carlos-r-l-rodrigues Jul 5, 2023
78117b3
chore: test concurrent requests
carlos-r-l-rodrigues Jul 5, 2023
84e3e00
Chore: add new product entities
carlos-r-l-rodrigues Jul 5, 2023
7e50c22
Merge branch 'develop' into feat/modules-joiner-config
carlos-r-l-rodrigues Jul 10, 2023
0d96301
Merge branch 'develop' into feat/modules-joiner-config
carlos-r-l-rodrigues Jul 11, 2023
2f574f6
Merge branch 'develop' into feat/modules-joiner-config
carlos-r-l-rodrigues Jul 11, 2023
32f7afa
Merge branch 'develop' into feat/modules-joiner-config
carlos-r-l-rodrigues Jul 12, 2023
0035b58
Merge branch 'feat/modules-joiner-config' of https://github.com/medus…
carlos-r-l-rodrigues Jul 12, 2023
1762039
chore: bump orchestration dependency
carlos-r-l-rodrigues Jul 12, 2023
ba13d11
Merge branch 'develop' into feat/modules-joiner-config
carlos-r-l-rodrigues Jul 13, 2023
716a7e9
Merge branch 'develop' into feat/modules-joiner-config
carlos-r-l-rodrigues Jul 14, 2023
2fcca54
Merge branch 'feat/modules-joiner-config' of https://github.com/medus…
carlos-r-l-rodrigues Jul 14, 2023
5a8c023
chore: add metadata if paginating
carlos-r-l-rodrigues Jul 14, 2023
9623fe3
Merge branch 'develop' of https://github.com/medusajs/medusa into fea…
carlos-r-l-rodrigues Jul 17, 2023
440624a
fix: revert plugin loader
carlos-r-l-rodrigues Jul 17, 2023
014caeb
fix: revert load plugins
carlos-r-l-rodrigues Jul 17, 2023
7d09d3a
fix: types
carlos-r-l-rodrigues Jul 17, 2023
d60c802
fix: imports
carlos-r-l-rodrigues Jul 17, 2023
0c6044f
Merge branch 'develop' into feat/modules-joiner-config
carlos-r-l-rodrigues Jul 17, 2023
3b55986
Merge branch 'feat/modules-joiner-config' of https://github.com/medus…
carlos-r-l-rodrigues Jul 17, 2023
cba7fcb
fix: joiner config path
carlos-r-l-rodrigues Jul 17, 2023
31935f4
Chore: improve method names
carlos-r-l-rodrigues Jul 17, 2023
0c57d34
Merge branch 'develop' into feat/modules-joiner-config
carlos-r-l-rodrigues Jul 19, 2023
c70bf6a
Merge branch 'feat/modules-joiner-config' of https://github.com/medus…
carlos-r-l-rodrigues Jul 19, 2023
aad7cb0
fix: interface update
carlos-r-l-rodrigues Jul 19, 2023
96e1766
Merge branch 'develop' of https://github.com/medusajs/medusa into fea…
carlos-r-l-rodrigues Jul 19, 2023
e03072b
fix: types version
carlos-r-l-rodrigues Jul 19, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/cache-inmemory/src/initialize/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ export const initialize = async (
options?: InMemoryCacheModuleOptions | ExternalModuleDeclaration
): Promise<ICacheService> => {
const serviceKey = Modules.CACHE
const loaded = await MedusaModule.bootstrap(
const loaded = await MedusaModule.bootstrap<ICacheService>(
serviceKey,
"@medusajs/cache-inmemory",
options as InternalModuleDeclaration | ExternalModuleDeclaration,
undefined
)

return loaded[serviceKey] as ICacheService
return loaded[serviceKey]
}
2 changes: 1 addition & 1 deletion packages/cache-inmemory/tsconfig.spec.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"extends": "./tsconfig.json",
"include": ["src"],
"include": ["src", "integration-tests"],
"exclude": ["node_modules"]
}
4 changes: 2 additions & 2 deletions packages/cache-redis/src/initialize/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ export const initialize = async (
options?: RedisCacheModuleOptions | ExternalModuleDeclaration
): Promise<ICacheService> => {
const serviceKey = Modules.CACHE
const loaded = await MedusaModule.bootstrap(
const loaded = await MedusaModule.bootstrap<ICacheService>(
serviceKey,
"@medusajs/cache-redis",
options as InternalModuleDeclaration | ExternalModuleDeclaration,
undefined
)

return loaded[serviceKey] as ICacheService
return loaded[serviceKey]
}
4 changes: 2 additions & 2 deletions packages/event-bus-local/src/initialize/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ import { IEventBusService } from "@medusajs/types"

export const initialize = async (): Promise<IEventBusService> => {
const serviceKey = Modules.EVENT_BUS
const loaded = await MedusaModule.bootstrap(
const loaded = await MedusaModule.bootstrap<IEventBusService>(
serviceKey,
"@medusajs/event-bus-local"
)

return loaded[serviceKey] as IEventBusService
return loaded[serviceKey]
}
4 changes: 2 additions & 2 deletions packages/event-bus-redis/src/initialize/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ export const initialize = async (
options?: EventBusRedisModuleOptions | ExternalModuleDeclaration
): Promise<IEventBusService> => {
const serviceKey = Modules.EVENT_BUS
const loaded = await MedusaModule.bootstrap(
const loaded = await MedusaModule.bootstrap<IEventBusService>(
serviceKey,
"@medusajs/event-bus-redis",
options as InternalModuleDeclaration | ExternalModuleDeclaration,
undefined
)

return loaded[serviceKey] as IEventBusService
return loaded[serviceKey]
}
4 changes: 2 additions & 2 deletions packages/inventory/src/initialize/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ export const initialize = async (
}
): Promise<IInventoryService> => {
const serviceKey = Modules.INVENTORY
const loaded = await MedusaModule.bootstrap(
const loaded = await MedusaModule.bootstrap<IInventoryService>(
serviceKey,
"@medusajs/inventory",
options as InternalModuleDeclaration | ExternalModuleDeclaration,
moduleDefinition,
injectedDependencies
)

return loaded[serviceKey] as IInventoryService
return loaded[serviceKey]
}
51 changes: 51 additions & 0 deletions packages/inventory/src/joiner-config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { Modules } from "@medusajs/modules-sdk"
import { JoinerServiceConfig } from "@medusajs/types"

export const joinerConfig: JoinerServiceConfig = {
serviceName: Modules.INVENTORY,
primaryKeys: ["id"],
alias: [
{
name: "inventory_items",
},
{
name: "inventory",
},
{
name: "inventory_level",
args: {
methodSuffix: "InventoryLevels",
},
},
{
name: "inventory_levels",
args: {
methodSuffix: "InventoryLevels",
},
},
{
name: "reservation_items",
args: {
methodSuffix: "ReservationItems",
},
},
{
name: "reservation_item",
args: {
methodSuffix: "ReservationItems",
},
},
{
name: "reservation",
args: {
methodSuffix: "ReservationItems",
},
},
{
name: "reservations",
args: {
methodSuffix: "ReservationItems",
},
},
],
}
13 changes: 13 additions & 0 deletions packages/inventory/src/services/inventory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
IInventoryService,
InventoryItemDTO,
InventoryLevelDTO,
JoinerServiceConfig,
MODULE_RESOURCE_TYPE,
ReservationItemDTO,
SharedContext,
Expand All @@ -23,6 +24,7 @@ import {
MedusaError,
} from "@medusajs/utils"
import { EntityManager } from "typeorm"
import { joinerConfig } from "../joiner-config"
import InventoryItemService from "./inventory-item"
import InventoryLevelService from "./inventory-level"
import ReservationItemService from "./reservation-item"
Expand Down Expand Up @@ -57,6 +59,10 @@ export default class InventoryService implements IInventoryService {
this.reservationItemService_ = reservationItemService
}

__joinerConfig(): JoinerServiceConfig {
return joinerConfig
}

/**
* Lists inventory items that match the given selector
* @param selector - the selector to filter inventory items by
Expand All @@ -75,6 +81,13 @@ export default class InventoryService implements IInventoryService {
context
)
}
async list(
selector: FilterableInventoryItemProps,
config: FindConfig<InventoryItemDTO> = { relations: [], skip: 0, take: 10 },
context: SharedContext = {}
): Promise<InventoryItemDTO[]> {
return await this.inventoryItemService_.list(selector, config, context)
}

/**
* Lists inventory levels that match the given selector
Expand Down
1 change: 0 additions & 1 deletion packages/medusa/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
"test": "jest"
},
"peerDependencies": {
"@medusajs/types": "^1.8.7",
"medusa-interfaces": "^1.3.7",
"typeorm": "^0.3.16"
},
Expand Down
6 changes: 3 additions & 3 deletions packages/medusa/src/loaders/__tests__/models.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ describe("models loader", () => {

beforeAll(async () => {
try {
models = modelsLoader({
models = await modelsLoader({
container,
isTest: true,
coreTestPathGlob: "../models/{product,product-variant}.ts",
Expand All @@ -30,9 +30,9 @@ describe("models loader", () => {
})

it("ensure that the product model is an extended model", () => {
const productModel = container.resolve("productModel")
const productModel = models.find((model) => model.name === "Product")

expect(productModel.custom_attribute).toEqual("test")
expect(new productModel().custom_attribute).toEqual("test")
})

it("ensure that the extended product model is registered in db_entities", () => {
Expand Down
4 changes: 1 addition & 3 deletions packages/medusa/src/loaders/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import path from "path"
import { ClassConstructor, MedusaContainer } from "../types/global"
import { EntitySchema } from "typeorm"
import { asClass, asValue } from "awilix"
import { upperCaseFirst } from "@medusajs/utils"

type ModelLoaderParams = {
container: MedusaContainer
Expand Down Expand Up @@ -63,9 +62,8 @@ export default (
// If an extension file is found, override it with that instead
if (mappedExtensionModel) {
const coreModel = require(modelPath)
const modelName = upperCaseFirst(
const modelName =
formatRegistrationNameWithoutNamespace(modelPath)
)

coreModel[modelName] = mappedExtensionModel
val = mappedExtensionModel
Expand Down
37 changes: 19 additions & 18 deletions packages/medusa/src/loaders/plugins.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,3 @@
import { SearchUtils, upperCaseFirst } from "@medusajs/utils"
import { aliasTo, asFunction, asValue, Lifetime } from "awilix"
import { Express } from "express"
import fs from "fs"
import { sync as existsSync } from "fs-exists-cached"
import glob from "glob"
import _ from "lodash"
import { createRequireFromPath } from "medusa-core-utils"
import {
FileService,
FulfillmentService,
OauthService,
} from "medusa-interfaces"
import { trackInstallation } from "medusa-telemetry"
import path from "path"
import { EntitySchema } from "typeorm"
import {
AbstractTaxService,
isBatchJobStrategy,
Expand All @@ -23,23 +7,40 @@ import {
isPriceSelectionStrategy,
isTaxCalculationStrategy,
} from "../interfaces"
import { MiddlewareService } from "../services"
import {
ClassConstructor,
ConfigModule,
Logger,
MedusaContainer,
} from "../types/global"
import {
FileService,
FulfillmentService,
OauthService,
} from "medusa-interfaces"
import { Lifetime, aliasTo, asFunction, asValue } from "awilix"
import { SearchUtils, upperCaseFirst } from "@medusajs/utils"
import {
formatRegistrationName,
formatRegistrationNameWithoutNamespace,
} from "../utils/format-registration-name"
import { getModelExtensionsMap } from "./helpers/get-model-extension-map"
import {
registerPaymentProcessorFromClass,
registerPaymentServiceFromClass,
} from "./helpers/plugins"

import { EntitySchema } from "typeorm"
import { Express } from "express"
import { MiddlewareService } from "../services"
import _ from "lodash"
import { createRequireFromPath } from "medusa-core-utils"
import { sync as existsSync } from "fs-exists-cached"
import fs from "fs"
import { getModelExtensionsMap } from "./helpers/get-model-extension-map"
import glob from "glob"
import logger from "./logger"
import path from "path"
import { trackInstallation } from "medusa-telemetry"

type Options = {
rootDirectory: string
Expand Down
3 changes: 2 additions & 1 deletion packages/modules-sdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
"typescript": "^4.4.4"
},
"dependencies": {
"@medusajs/types": "^1.8.8",
"@medusajs/orchestration": "^0.0.2",
"@medusajs/types": "^1.8.11",
"@medusajs/utils": "^1.9.1",
"awilix": "^8.0.0",
"resolve-cwd": "^3.0.0"
Expand Down
7 changes: 5 additions & 2 deletions packages/modules-sdk/src/definitions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export enum Modules {
STOCK_LOCATION = "stockLocationService",
INVENTORY = "inventoryService",
CACHE = "cacheService",
PRODUCT = "productModuleService",
PRODUCT = "productService",
}

export const ModulesDefinition: { [key: string]: ModuleDefinition } = {
Expand All @@ -33,6 +33,7 @@ export const ModulesDefinition: { [key: string]: ModuleDefinition } = {
label: "StockLocationService",
isRequired: false,
canOverride: true,
isQueryable: true,
dependencies: ["eventBusService"],
defaultModuleDeclaration: {
scope: MODULE_SCOPE.INTERNAL,
Expand All @@ -46,6 +47,7 @@ export const ModulesDefinition: { [key: string]: ModuleDefinition } = {
label: "InventoryService",
isRequired: false,
canOverride: true,
isQueryable: true,
dependencies: ["eventBusService"],
defaultModuleDeclaration: {
scope: MODULE_SCOPE.INTERNAL,
Expand All @@ -66,11 +68,12 @@ export const ModulesDefinition: { [key: string]: ModuleDefinition } = {
},
[Modules.PRODUCT]: {
key: Modules.PRODUCT,
registrationName: Modules.PRODUCT,
registrationName: "productModuleService",
defaultPackage: false,
label: "ProductModuleService",
isRequired: false,
canOverride: true,
isQueryable: true,
dependencies: [],
defaultModuleDeclaration: {
scope: MODULE_SCOPE.EXTERNAL,
Expand Down
1 change: 1 addition & 0 deletions packages/modules-sdk/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ export * from "./definitions"
export * from "./loaders"
export * from "./medusa-module"
export * from "./module-helper"
export * from "./remote-query"
Loading