Files
medusa-store/packages/modules/locking/src/services/locking-module.ts
Adrien de Peretti 12a96a7c70 chore(): Move peer deps into a single package and re export from framework (#13439)
* chore(): Move peer deps into a single package and re export from framework

* WIP

* update core packages

* update cli and deps

* update medusa

* update exports path

* remove analyze

* update modules deps

* finalise changes

* fix yarn

* fix import

* Refactor peer dependencies into a single package

Consolidate peer dependencies into one package and re-export from the framework.

* update changeset

* Update .changeset/brown-cows-sleep.md

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>

* rm deps

* fix deps

* increase timeout

* upgrade version

* update versions

* update versions

* fixes

* update lock

* fix missing import

* fix missing import

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-09-22 18:36:22 +02:00

93 lines
2.4 KiB
TypeScript

import {
Context,
ILockingModule,
InternalModuleDeclaration,
Logger,
} from "@medusajs/types"
import { EntityManager } from "@medusajs/framework/mikro-orm/core"
import { LockingDefaultProvider } from "@types"
import LockingProviderService from "./locking-provider"
type InjectedDependencies = {
manager: EntityManager
lockingProviderService: LockingProviderService
logger?: Logger
[LockingDefaultProvider]: string
}
export default class LockingModuleService implements ILockingModule {
protected manager: EntityManager
protected providerService_: LockingProviderService
protected defaultProviderId: string
constructor(
container: InjectedDependencies,
protected readonly moduleDeclaration: InternalModuleDeclaration
) {
this.manager = container.manager
this.providerService_ = container.lockingProviderService
this.defaultProviderId = container[LockingDefaultProvider]
}
async execute<T>(
keys: string | string[],
job: () => Promise<T>,
args?: {
timeout?: number
provider?: string
},
sharedContext: Context = {}
): Promise<T> {
const providerId = args?.provider ?? this.defaultProviderId
const provider =
this.providerService_.retrieveProviderRegistration(providerId)
return provider.execute(keys, job, args, sharedContext)
}
async acquire(
keys: string | string[],
args?: {
ownerId?: string | null
expire?: number
provider?: string
},
sharedContext: Context = {}
): Promise<void> {
const providerId = args?.provider ?? this.defaultProviderId
const provider =
this.providerService_.retrieveProviderRegistration(providerId)
await provider.acquire(keys, args, sharedContext)
}
async release(
keys: string | string[],
args?: {
ownerId?: string | null
provider?: string
},
sharedContext: Context = {}
): Promise<boolean> {
const providerId = args?.provider ?? this.defaultProviderId
const provider =
this.providerService_.retrieveProviderRegistration(providerId)
return await provider.release(keys, args, sharedContext)
}
async releaseAll(
args?: {
ownerId?: string | null
provider?: string
},
sharedContext: Context = {}
): Promise<void> {
const providerId = args?.provider ?? this.defaultProviderId
const provider =
this.providerService_.retrieveProviderRegistration(providerId)
return await provider.releaseAll(args, sharedContext)
}
}