feat: event aggregator (#6218)
What: - Event Aggregator Util - Preparation for normalizing event in a new format (backward compatible with the current format) - GQL Schema to joiner config and some Entities configured - Link modules emmiting events
This commit is contained in:
1 parent
73fd92a1af
commit
884428a1b5
66 files changed
+1407
-749
No files matched your search
@@ -1,6 +1,7 @@
|
||||
import { Modules } from "@medusajs/modules-sdk"
|
||||
import { ModuleJoinerConfig } from "@medusajs/types"
|
||||
import { InventoryItem, InventoryLevel, ReservationItem } from "./models"
|
||||
import moduleSchema from "./schema"
|
||||
|
||||
export const joinerConfig: ModuleJoinerConfig = {
|
||||
serviceName: Modules.INVENTORY,
|
||||
@@ -10,46 +11,30 @@ export const joinerConfig: ModuleJoinerConfig = {
|
||||
inventory_level_id: InventoryLevel.name,
|
||||
reservation_item_id: ReservationItem.name,
|
||||
},
|
||||
schema: moduleSchema,
|
||||
alias: [
|
||||
{
|
||||
name: "inventory_items",
|
||||
},
|
||||
{
|
||||
name: "inventory",
|
||||
},
|
||||
{
|
||||
name: "inventory_level",
|
||||
name: ["inventory_items", "inventory"],
|
||||
args: {
|
||||
entity: "InventoryItem",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: ["inventory_level", "inventory_levels"],
|
||||
args: {
|
||||
entity: "InventoryLevel",
|
||||
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",
|
||||
name: [
|
||||
"reservation",
|
||||
"reservations",
|
||||
"reservation_item",
|
||||
"reservation_items",
|
||||
],
|
||||
args: {
|
||||
entity: "ReservationItem",
|
||||
methodSuffix: "ReservationItems",
|
||||
},
|
||||
},
|
||||
|
||||
@@ -6,9 +6,11 @@ import {
|
||||
DeleteDateColumn,
|
||||
Entity,
|
||||
Index,
|
||||
OneToMany,
|
||||
PrimaryColumn,
|
||||
UpdateDateColumn,
|
||||
} from "typeorm"
|
||||
import { InventoryLevel } from "./inventory-level"
|
||||
|
||||
@Entity()
|
||||
export class InventoryItem {
|
||||
@@ -67,6 +69,12 @@ export class InventoryItem {
|
||||
@Column({ type: "jsonb", nullable: true })
|
||||
metadata: Record<string, unknown> | null
|
||||
|
||||
@OneToMany(
|
||||
() => InventoryLevel,
|
||||
(inventoryLevel) => inventoryLevel.inventory_item
|
||||
)
|
||||
inventory_levels!: InventoryLevel[]
|
||||
|
||||
@BeforeInsert()
|
||||
private beforeInsert(): void {
|
||||
this.id = generateEntityId(this.id, "iitem")
|
||||
|
||||
@@ -6,9 +6,12 @@ import {
|
||||
DeleteDateColumn,
|
||||
Entity,
|
||||
Index,
|
||||
JoinColumn,
|
||||
ManyToOne,
|
||||
PrimaryColumn,
|
||||
UpdateDateColumn,
|
||||
} from "typeorm"
|
||||
import { InventoryItem } from "./inventory-item"
|
||||
|
||||
@Entity()
|
||||
@Index(["inventory_item_id", "location_id"], { unique: true })
|
||||
@@ -45,6 +48,10 @@ export class InventoryLevel {
|
||||
@Column({ type: "jsonb", nullable: true })
|
||||
metadata: Record<string, unknown> | null
|
||||
|
||||
@ManyToOne(() => InventoryItem)
|
||||
@JoinColumn({ name: "inventory_item_id" })
|
||||
inventory_item: InventoryItem
|
||||
|
||||
@BeforeInsert()
|
||||
private beforeInsert(): void {
|
||||
this.id = generateEntityId(this.id, "ilev")
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
export default `
|
||||
scalar DateTime
|
||||
scalar JSON
|
||||
|
||||
type InventoryItem {
|
||||
id: ID!
|
||||
created_at: DateTime!
|
||||
updated_at: DateTime!
|
||||
deleted_at: DateTime
|
||||
sku: String
|
||||
origin_country: String
|
||||
hs_code: String
|
||||
mid_code: String
|
||||
material: String
|
||||
weight: Int
|
||||
length: Int
|
||||
height: Int
|
||||
width: Int
|
||||
requires_shipping: Boolean!
|
||||
description: String
|
||||
title: String
|
||||
thumbnail: String
|
||||
metadata: JSON
|
||||
|
||||
inventory_levels: [InventoryLevel]
|
||||
}
|
||||
|
||||
type InventoryLevel {
|
||||
id: ID!
|
||||
created_at: DateTime!
|
||||
updated_at: DateTime!
|
||||
deleted_at: DateTime
|
||||
inventory_item_id: String!
|
||||
location_id: String!
|
||||
stocked_quantity: Int!
|
||||
reserved_quantity: Int!
|
||||
incoming_quantity: Int!
|
||||
metadata: JSON
|
||||
}
|
||||
|
||||
type ReservationItem {
|
||||
id: ID!
|
||||
created_at: DateTime!
|
||||
updated_at: DateTime!
|
||||
deleted_at: DateTime
|
||||
line_item_id: String
|
||||
inventory_item_id: String!
|
||||
location_id: String!
|
||||
quantity: Int!
|
||||
external_id: String
|
||||
description: String
|
||||
created_by: String
|
||||
metadata: JSON
|
||||
}
|
||||
`
|
||||
Reference in new issue
Block a user