import { Context, DAL, FindConfig, InferEntityType, OrderTypes, RepositoryService, } from "@medusajs/framework/types" import { InjectManager, MedusaContext, MedusaError, ModulesSdkUtils, } from "@medusajs/framework/utils" import { Order } from "@models" type InjectedDependencies = { orderRepository: DAL.RepositoryService } export default class OrderService extends ModulesSdkUtils.MedusaInternalService< InjectedDependencies, InferEntityType >(Order) { protected readonly orderRepository_: RepositoryService< InferEntityType > constructor(container: InjectedDependencies) { // @ts-ignore super(...arguments) this.orderRepository_ = container.orderRepository } @InjectManager("orderRepository_") async retrieveOrderVersion( id: string, version: number, config: FindConfig = {}, @MedusaContext() sharedContext: Context = {} ): Promise { const queryConfig = ModulesSdkUtils.buildQuery( { id, items: { version } }, { ...config, take: 1 } as any ) const [result] = await this.orderRepository_.find( queryConfig, sharedContext ) if (!result) { throw new MedusaError( MedusaError.Types.NOT_FOUND, `Order with id: "${id}" and version: "${version}" not found` ) } return result } }