chore: rename extractor type to InferEntityType (#7829)

This commit is contained in:
Adrien de Peretti authored and GitHub committed 2024-06-25 13:43:11 +02:00
1 parent 11502ee2b5
commit 66d17fabde
4 files changed
+48 -57

No files matched your search

+1 -1
View File
@@ -159,6 +159,6 @@ export type InferTypeOf<T extends IDmlEntity<any>> = InstanceType<Infer<T>>
/** /**
* Used in the module sdk internal service to infer propert entity typings from DML * Used in the module sdk internal service to infer propert entity typings from DML
*/ */
export type ExtractEntityType<T extends any> = T extends IDmlEntity<any> export type InferEntityType<T extends any> = T extends IDmlEntity<any>
? InferTypeOf<T> ? InferTypeOf<T>
: T : T
@@ -7,7 +7,7 @@ import {
PerformedActions, PerformedActions,
UpsertWithReplaceConfig, UpsertWithReplaceConfig,
} from "../dal" } from "../dal"
import { ExtractEntityType } from "../dml" import { InferEntityType } from "../dml"
export interface IMedusaInternalService< export interface IMedusaInternalService<
TEntity extends {}, TEntity extends {},
@@ -19,56 +19,50 @@ export interface IMedusaInternalService<
idOrObject: string, idOrObject: string,
config?: FindConfig<any>, config?: FindConfig<any>,
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>> ): Promise<InferEntityType<TEntity>>
retrieve( retrieve(
idOrObject: object, idOrObject: object,
config?: FindConfig<any>, config?: FindConfig<any>,
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>> ): Promise<InferEntityType<TEntity>>
list( list(
filters?: FilterQuery<any> | BaseFilterable<FilterQuery<any>>, filters?: FilterQuery<any> | BaseFilterable<FilterQuery<any>>,
config?: FindConfig<any>, config?: FindConfig<any>,
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
listAndCount( listAndCount(
filters?: FilterQuery<any> | BaseFilterable<FilterQuery<any>>, filters?: FilterQuery<any> | BaseFilterable<FilterQuery<any>>,
config?: FindConfig<any>, config?: FindConfig<any>,
sharedContext?: Context sharedContext?: Context
): Promise<[ExtractEntityType<TEntity>[], number]> ): Promise<[InferEntityType<TEntity>[], number]>
create( create(
data: any[], data: any[],
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
create( create(data: any, sharedContext?: Context): Promise<InferEntityType<TEntity>>
data: any,
sharedContext?: Context
): Promise<ExtractEntityType<TEntity>>
update( update(
data: any[], data: any[],
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
update( update(data: any, sharedContext?: Context): Promise<InferEntityType<TEntity>>
data: any,
sharedContext?: Context
): Promise<ExtractEntityType<TEntity>>
update( update(
selectorAndData: { selectorAndData: {
selector: FilterQuery<any> | BaseFilterable<FilterQuery<any>> selector: FilterQuery<any> | BaseFilterable<FilterQuery<any>>
data: any data: any
}, },
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
update( update(
selectorAndData: { selectorAndData: {
selector: FilterQuery<any> | BaseFilterable<FilterQuery<any>> selector: FilterQuery<any> | BaseFilterable<FilterQuery<any>>
data: any data: any
}[], }[],
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
delete(idOrSelector: string, sharedContext?: Context): Promise<void> delete(idOrSelector: string, sharedContext?: Context): Promise<void>
delete(idOrSelector: string[], sharedContext?: Context): Promise<void> delete(idOrSelector: string[], sharedContext?: Context): Promise<void>
@@ -88,28 +82,25 @@ export interface IMedusaInternalService<
| InternalFilterQuery | InternalFilterQuery
| InternalFilterQuery[], | InternalFilterQuery[],
sharedContext?: Context sharedContext?: Context
): Promise<[ExtractEntityType<TEntity>[], Record<string, unknown[]>]> ): Promise<[InferEntityType<TEntity>[], Record<string, unknown[]>]>
restore( restore(
idsOrFilter: string[] | InternalFilterQuery, idsOrFilter: string[] | InternalFilterQuery,
sharedContext?: Context sharedContext?: Context
): Promise<[ExtractEntityType<TEntity>[], Record<string, unknown[]>]> ): Promise<[InferEntityType<TEntity>[], Record<string, unknown[]>]>
upsert( upsert(
data: any[], data: any[],
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
upsert( upsert(data: any, sharedContext?: Context): Promise<InferEntityType<TEntity>>
data: any,
sharedContext?: Context
): Promise<ExtractEntityType<TEntity>>
upsertWithReplace( upsertWithReplace(
data: any[], data: any[],
config?: UpsertWithReplaceConfig<ExtractEntityType<TEntity>>, config?: UpsertWithReplaceConfig<InferEntityType<TEntity>>,
sharedContext?: Context sharedContext?: Context
): Promise<{ ): Promise<{
entities: ExtractEntityType<TEntity>[] entities: InferEntityType<TEntity>[]
performedActions: PerformedActions performedActions: PerformedActions
}> }>
} }
@@ -1,10 +1,10 @@
import { import {
BaseFilterable, BaseFilterable,
Context, Context,
ExtractEntityType,
FilterQuery, FilterQuery,
FilterQuery as InternalFilterQuery, FilterQuery as InternalFilterQuery,
FindConfig, FindConfig,
InferEntityType,
ModulesSdkTypes, ModulesSdkTypes,
PerformedActions, PerformedActions,
UpsertWithReplaceConfig, UpsertWithReplaceConfig,
@@ -101,9 +101,9 @@ export function MedusaInternalService<TContainer extends object = object>(
@InjectManager(propertyRepositoryName) @InjectManager(propertyRepositoryName)
async retrieve( async retrieve(
idOrObject: string | object, idOrObject: string | object,
config: FindConfig<ExtractEntityType<TEntity>> = {}, config: FindConfig<InferEntityType<TEntity>> = {},
@MedusaContext() sharedContext: Context = {} @MedusaContext() sharedContext: Context = {}
): Promise<ExtractEntityType<TEntity>> { ): Promise<InferEntityType<TEntity>> {
const primaryKeys = AbstractService_.retrievePrimaryKeys(model) const primaryKeys = AbstractService_.retrievePrimaryKeys(model)
if ( if (
@@ -163,7 +163,7 @@ export function MedusaInternalService<TContainer extends object = object>(
filters: FilterQuery<any> | BaseFilterable<FilterQuery<any>> = {}, filters: FilterQuery<any> | BaseFilterable<FilterQuery<any>> = {},
config: FindConfig<any> = {}, config: FindConfig<any> = {},
@MedusaContext() sharedContext: Context = {} @MedusaContext() sharedContext: Context = {}
): Promise<ExtractEntityType<TEntity>[]> { ): Promise<InferEntityType<TEntity>[]> {
AbstractService_.applyDefaultOrdering(config) AbstractService_.applyDefaultOrdering(config)
AbstractService_.applyFreeTextSearchFilter(filters, config) AbstractService_.applyFreeTextSearchFilter(filters, config)
@@ -180,7 +180,7 @@ export function MedusaInternalService<TContainer extends object = object>(
filters: FilterQuery<any> | BaseFilterable<FilterQuery<any>> = {}, filters: FilterQuery<any> | BaseFilterable<FilterQuery<any>> = {},
config: FindConfig<any> = {}, config: FindConfig<any> = {},
@MedusaContext() sharedContext: Context = {} @MedusaContext() sharedContext: Context = {}
): Promise<[ExtractEntityType<TEntity>[], number]> { ): Promise<[InferEntityType<TEntity>[], number]> {
AbstractService_.applyDefaultOrdering(config) AbstractService_.applyDefaultOrdering(config)
AbstractService_.applyFreeTextSearchFilter(filters, config) AbstractService_.applyFreeTextSearchFilter(filters, config)
@@ -195,21 +195,21 @@ export function MedusaInternalService<TContainer extends object = object>(
create( create(
data: any, data: any,
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>> ): Promise<InferEntityType<TEntity>>
create( create(
data: any[], data: any[],
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
@InjectTransactionManager(shouldForceTransaction, propertyRepositoryName) @InjectTransactionManager(shouldForceTransaction, propertyRepositoryName)
async create( async create(
data: any | any[], data: any | any[],
@MedusaContext() sharedContext: Context = {} @MedusaContext() sharedContext: Context = {}
): Promise<ExtractEntityType<TEntity> | ExtractEntityType<TEntity>[]> { ): Promise<InferEntityType<TEntity> | InferEntityType<TEntity>[]> {
if (!isDefined(data) || (Array.isArray(data) && data.length === 0)) { if (!isDefined(data) || (Array.isArray(data) && data.length === 0)) {
return (Array.isArray(data) ? [] : void 0) as return (Array.isArray(data) ? [] : void 0) as
| ExtractEntityType<TEntity> | InferEntityType<TEntity>
| ExtractEntityType<TEntity>[] | InferEntityType<TEntity>[]
} }
const data_ = Array.isArray(data) ? data : [data] const data_ = Array.isArray(data) ? data : [data]
@@ -224,29 +224,29 @@ export function MedusaInternalService<TContainer extends object = object>(
update( update(
data: any[], data: any[],
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
update( update(
data: any, data: any,
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>> ): Promise<InferEntityType<TEntity>>
update( update(
selectorAndData: SelectorAndData, selectorAndData: SelectorAndData,
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
update( update(
selectorAndData: SelectorAndData[], selectorAndData: SelectorAndData[],
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
@InjectTransactionManager(shouldForceTransaction, propertyRepositoryName) @InjectTransactionManager(shouldForceTransaction, propertyRepositoryName)
async update( async update(
input: any | any[] | SelectorAndData | SelectorAndData[], input: any | any[] | SelectorAndData | SelectorAndData[],
@MedusaContext() sharedContext: Context = {} @MedusaContext() sharedContext: Context = {}
): Promise<ExtractEntityType<TEntity> | ExtractEntityType<TEntity>[]> { ): Promise<InferEntityType<TEntity> | InferEntityType<TEntity>[]> {
if (!isDefined(input) || (Array.isArray(input) && input.length === 0)) { if (!isDefined(input) || (Array.isArray(input) && input.length === 0)) {
return (Array.isArray(input) ? [] : void 0) as return (Array.isArray(input) ? [] : void 0) as
| ExtractEntityType<TEntity> | InferEntityType<TEntity>
| ExtractEntityType<TEntity>[] | InferEntityType<TEntity>[]
} }
const primaryKeys = AbstractService_.retrievePrimaryKeys(model) const primaryKeys = AbstractService_.retrievePrimaryKeys(model)
@@ -312,7 +312,7 @@ export function MedusaInternalService<TContainer extends object = object>(
// Only throw for missing entities when we dont have selectors involved as selector by design can return 0 entities // Only throw for missing entities when we dont have selectors involved as selector by design can return 0 entities
if (entitiesToUpdate.length !== keySelectorDataMap.size) { if (entitiesToUpdate.length !== keySelectorDataMap.size) {
const entityName = const entityName =
(model as EntityClass<ExtractEntityType<TEntity>>).name ?? model (model as EntityClass<InferEntityType<TEntity>>).name ?? model
const compositeKeysValuesForFoundEntities = new Set( const compositeKeysValuesForFoundEntities = new Set(
entitiesToUpdate.map((entity) => { entitiesToUpdate.map((entity) => {
@@ -465,7 +465,7 @@ export function MedusaInternalService<TContainer extends object = object>(
| InternalFilterQuery | InternalFilterQuery
| InternalFilterQuery[], | InternalFilterQuery[],
@MedusaContext() sharedContext: Context = {} @MedusaContext() sharedContext: Context = {}
): Promise<[ExtractEntityType<TEntity>[], Record<string, unknown[]>]> { ): Promise<[InferEntityType<TEntity>[], Record<string, unknown[]>]> {
if ( if (
(Array.isArray(idsOrFilter) && !idsOrFilter.length) || (Array.isArray(idsOrFilter) && !idsOrFilter.length) ||
(!Array.isArray(idsOrFilter) && !idsOrFilter) (!Array.isArray(idsOrFilter) && !idsOrFilter)
@@ -483,7 +483,7 @@ export function MedusaInternalService<TContainer extends object = object>(
async restore( async restore(
idsOrFilter: string[] | InternalFilterQuery, idsOrFilter: string[] | InternalFilterQuery,
@MedusaContext() sharedContext: Context = {} @MedusaContext() sharedContext: Context = {}
): Promise<[ExtractEntityType<TEntity>[], Record<string, unknown[]>]> { ): Promise<[InferEntityType<TEntity>[], Record<string, unknown[]>]> {
return await this[propertyRepositoryName].restore( return await this[propertyRepositoryName].restore(
idsOrFilter, idsOrFilter,
sharedContext sharedContext
@@ -493,17 +493,17 @@ export function MedusaInternalService<TContainer extends object = object>(
upsert( upsert(
data: any[], data: any[],
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>[]> ): Promise<InferEntityType<TEntity>[]>
upsert( upsert(
data: any, data: any,
sharedContext?: Context sharedContext?: Context
): Promise<ExtractEntityType<TEntity>> ): Promise<InferEntityType<TEntity>>
@InjectTransactionManager(propertyRepositoryName) @InjectTransactionManager(propertyRepositoryName)
async upsert( async upsert(
data: any | any[], data: any | any[],
@MedusaContext() sharedContext: Context = {} @MedusaContext() sharedContext: Context = {}
): Promise<ExtractEntityType<TEntity> | ExtractEntityType<TEntity>[]> { ): Promise<InferEntityType<TEntity> | InferEntityType<TEntity>[]> {
const data_ = Array.isArray(data) ? data : [data] const data_ = Array.isArray(data) ? data : [data]
const entities = await this[propertyRepositoryName].upsert( const entities = await this[propertyRepositoryName].upsert(
data_, data_,
@@ -514,30 +514,30 @@ export function MedusaInternalService<TContainer extends object = object>(
upsertWithReplace( upsertWithReplace(
data: any[], data: any[],
config?: UpsertWithReplaceConfig<ExtractEntityType<TEntity>>, config?: UpsertWithReplaceConfig<InferEntityType<TEntity>>,
sharedContext?: Context sharedContext?: Context
): Promise<{ ): Promise<{
entities: ExtractEntityType<TEntity>[] entities: InferEntityType<TEntity>[]
performedActions: PerformedActions performedActions: PerformedActions
}> }>
upsertWithReplace( upsertWithReplace(
data: any, data: any,
config?: UpsertWithReplaceConfig<ExtractEntityType<TEntity>>, config?: UpsertWithReplaceConfig<InferEntityType<TEntity>>,
sharedContext?: Context sharedContext?: Context
): Promise<{ ): Promise<{
entities: ExtractEntityType<TEntity> entities: InferEntityType<TEntity>
performedActions: PerformedActions performedActions: PerformedActions
}> }>
@InjectTransactionManager(propertyRepositoryName) @InjectTransactionManager(propertyRepositoryName)
async upsertWithReplace( async upsertWithReplace(
data: any | any[], data: any | any[],
config: UpsertWithReplaceConfig<ExtractEntityType<TEntity>> = { config: UpsertWithReplaceConfig<InferEntityType<TEntity>> = {
relations: [], relations: [],
}, },
@MedusaContext() sharedContext: Context = {} @MedusaContext() sharedContext: Context = {}
): Promise<{ ): Promise<{
entities: ExtractEntityType<TEntity> | ExtractEntityType<TEntity>[] entities: InferEntityType<TEntity> | InferEntityType<TEntity>[]
performedActions: PerformedActions performedActions: PerformedActions
}> { }> {
const data_ = Array.isArray(data) ? data : [data] const data_ = Array.isArray(data) ? data : [data]
@@ -17,7 +17,7 @@ import { entityNameToLinkableKeysMap, joinerConfig } from "../joiner-config"
type InjectedDependencies = { type InjectedDependencies = {
baseRepository: DAL.RepositoryService baseRepository: DAL.RepositoryService
currencyService: ModulesSdkTypes.IMedusaInternalService<any> currencyService: ModulesSdkTypes.IMedusaInternalService<typeof Currency>
} }
export default class CurrencyModuleService export default class CurrencyModuleService