Skip to content

Commit

Permalink
feat(medusa): Bulk emit events (#3407)
Browse files Browse the repository at this point in the history
  • Loading branch information
adrien2p authored Mar 13, 2023
1 parent 601d20e commit f0a1355
Show file tree
Hide file tree
Showing 14 changed files with 404 additions and 166 deletions.
7 changes: 7 additions & 0 deletions .changeset/serious-avocados-rush.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@medusajs/inventory": patch
"medusa-test-utils": patch
"@medusajs/medusa": patch
---

feat(medusa): Bulk emit events
2 changes: 1 addition & 1 deletion integration-tests/plugins/__tests__/inventory/service.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const path = require("path")
const { bootstrapApp } = require("../../../helpers/bootstrap-app")
const { initDb, useDb } = require("../../../helpers/use-db")

jest.setTimeout(30000)
jest.setTimeout(50000)

describe("Inventory Module", () => {
let appContainer
Expand Down
15 changes: 8 additions & 7 deletions packages/inventory/src/services/reservation-item.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import { EntityManager } from "typeorm"
import { isDefined, MedusaError } from "medusa-core-utils"
import {
FindConfig,
buildQuery,
IEventBusService,
FilterableReservationItemProps,
CreateReservationItemInput,
FilterableReservationItemProps,
FindConfig,
IEventBusService,
TransactionBaseService,
UpdateReservationItemInput,
} from "@medusajs/medusa"

import { ReservationItem } from "../models"
import { CONNECTION_NAME } from "../config"
import { InventoryLevelService } from "."

type InjectedDependencies = {
Expand Down Expand Up @@ -278,10 +277,12 @@ export default class ReservationItemService extends TransactionBaseService {
item.quantity * -1
),
])
})

await this.eventBusService_.emit(ReservationItemService.Events.DELETED, {
id: reservationItemId,
await this.eventBusService_
.withTransaction(manager)
.emit(ReservationItemService.Events.DELETED, {
id: reservationItemId,
})
})
}
}
9 changes: 9 additions & 0 deletions packages/medusa-test-utils/src/mock-repository.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ class MockRepo {
save,
findAndCount,
del,
count,
insertBulk
}) {
this.create_ = create;
this.update_ = update;
Expand All @@ -25,12 +27,19 @@ class MockRepo {
this.save_ = save;
this.findAndCount_ = findAndCount;
this.findOneWithRelations_ = findOneWithRelations;
this.insertBulk_ = insertBulk;
}

setFindOne(fn) {
this.findOne_ = fn;
}

insertBulk = jest.fn().mockImplementation((...args) => {
if (this.insertBulk_) {
return this.insertBulk_(...args)
}
return {}
})
create = jest.fn().mockImplementation((...args) => {
if (this.create_) {
return this.create_(...args);
Expand Down
27 changes: 25 additions & 2 deletions packages/medusa/src/repositories/staged-job.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
import { EntityRepository, Repository } from "typeorm"
import { StagedJob } from "../models/staged-job"
import { QueryDeepPartialEntity } from "typeorm/query-builder/QueryPartialEntity"
import { StagedJob } from "../models"
import { rowSqlResultsToEntityTransformer } from "../utils"

@EntityRepository(StagedJob)
export class StagedJobRepository extends Repository<StagedJob> {}
export class StagedJobRepository extends Repository<StagedJob> {
async insertBulk(jobToCreates: QueryDeepPartialEntity<StagedJob>[]) {
const queryBuilder = this.createQueryBuilder()
.insert()
.into(StagedJob)
.values(jobToCreates)

// TODO: remove if statement once this issue is resolved https:/typeorm/typeorm/issues/9850
if (!queryBuilder.connection.driver.isReturningSqlSupported("insert")) {
const rawStagedJobs = await queryBuilder.execute()
return rawStagedJobs.generatedMaps
}

const rawStagedJobs = await queryBuilder.returning("*").execute()

return rowSqlResultsToEntityTransformer(
rawStagedJobs.raw,
queryBuilder,
this.queryRunner!
)
}
}
Loading

1 comment on commit f0a1355

@vercel
Copy link

@vercel vercel bot commented on f0a1355 Mar 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.