From be15240909c5da4c585f30a1c3b5f0212121f8f5 Mon Sep 17 00:00:00 2001 From: Harminder Virk Date: Thu, 5 Dec 2024 19:32:08 +0530 Subject: [PATCH] refactor: migrate sales-channel to DML (#10452) Fixes: FRMW-2830 --- .changeset/slimy-bugs-smell.md | 5 ++ ...on => .snapshot-medusa-sales-channel.json} | 0 .../sales-channel/src/models/sales-channel.ts | 78 +++---------------- .../src/services/sales-channel-module.ts | 9 ++- 4 files changed, 20 insertions(+), 72 deletions(-) create mode 100644 .changeset/slimy-bugs-smell.md rename packages/modules/sales-channel/src/migrations/{.snapshot-medusa-sales-channel-tst.json => .snapshot-medusa-sales-channel.json} (100%) diff --git a/.changeset/slimy-bugs-smell.md b/.changeset/slimy-bugs-smell.md new file mode 100644 index 0000000000..ac9241c4b1 --- /dev/null +++ b/.changeset/slimy-bugs-smell.md @@ -0,0 +1,5 @@ +--- +"@medusajs/sales-channel": patch +--- + +refactor: migrate sales-channel to DML diff --git a/packages/modules/sales-channel/src/migrations/.snapshot-medusa-sales-channel-tst.json b/packages/modules/sales-channel/src/migrations/.snapshot-medusa-sales-channel.json similarity index 100% rename from packages/modules/sales-channel/src/migrations/.snapshot-medusa-sales-channel-tst.json rename to packages/modules/sales-channel/src/migrations/.snapshot-medusa-sales-channel.json diff --git a/packages/modules/sales-channel/src/models/sales-channel.ts b/packages/modules/sales-channel/src/models/sales-channel.ts index 42fe6e125d..3c597e57e1 100644 --- a/packages/modules/sales-channel/src/models/sales-channel.ts +++ b/packages/modules/sales-channel/src/models/sales-channel.ts @@ -1,71 +1,11 @@ -import { - DALUtils, - Searchable, - generateEntityId, -} from "@medusajs/framework/utils" +import { model } from "@medusajs/framework/utils" -import { DAL } from "@medusajs/framework/types" -import { - BeforeCreate, - Entity, - Filter, - Index, - OnInit, - OptionalProps, - PrimaryKey, - Property, -} from "@mikro-orm/core" +const SalesChannel = model.define("SalesChannel", { + id: model.id({ prefix: "sc" }).primaryKey(), + name: model.text().searchable(), + description: model.text().searchable().nullable(), + is_disabled: model.boolean().default(false), + metadata: model.json().nullable(), +}) -type SalesChannelOptionalProps = "is_disabled" | DAL.ModelDateColumns - -@Entity() -@Filter(DALUtils.mikroOrmSoftDeletableFilterOptions) -export default class SalesChannel { - [OptionalProps]?: SalesChannelOptionalProps - - @PrimaryKey({ columnType: "text" }) - id!: string - - @Searchable() - @Property({ columnType: "text" }) - name!: string - - @Searchable() - @Property({ columnType: "text", nullable: true }) - description: string | null = null - - @Property({ columnType: "boolean", default: false }) - is_disabled: boolean = false - - @Property({ - onCreate: () => new Date(), - columnType: "timestamptz", - defaultRaw: "now()", - }) - created_at: Date - - @Property({ columnType: "jsonb", nullable: true }) - metadata: Record | null = null - - @Property({ - onCreate: () => new Date(), - onUpdate: () => new Date(), - columnType: "timestamptz", - defaultRaw: "now()", - }) - updated_at: Date - - @Index({ name: "IDX_sales_channel_deleted_at" }) - @Property({ columnType: "timestamptz", nullable: true }) - deleted_at: Date | null = null - - @BeforeCreate() - onCreate() { - this.id = generateEntityId(this.id, "sc") - } - - @OnInit() - onInit() { - this.id = generateEntityId(this.id, "sc") - } -} +export default SalesChannel diff --git a/packages/modules/sales-channel/src/services/sales-channel-module.ts b/packages/modules/sales-channel/src/services/sales-channel-module.ts index 5f8bab37ac..3e8bddba4c 100644 --- a/packages/modules/sales-channel/src/services/sales-channel-module.ts +++ b/packages/modules/sales-channel/src/services/sales-channel-module.ts @@ -3,6 +3,7 @@ import { CreateSalesChannelDTO, DAL, FilterableSalesChannelProps, + InferEntityType, InternalModuleDeclaration, ISalesChannelModuleService, ModuleJoinerConfig, @@ -36,7 +37,9 @@ export default class SalesChannelModuleService implements ISalesChannelModuleService { protected baseRepository_: DAL.RepositoryService - protected readonly salesChannelService_: ModulesSdkTypes.IMedusaInternalService + protected readonly salesChannelService_: ModulesSdkTypes.IMedusaInternalService< + InferEntityType + > constructor( { baseRepository, salesChannelService }: InjectedDependencies, @@ -83,7 +86,7 @@ export default class SalesChannelModuleService async createSalesChannels_( data: CreateSalesChannelDTO[], @MedusaContext() sharedContext: Context - ): Promise { + ): Promise[]> { return await this.salesChannelService_.create(data, sharedContext) } @@ -163,7 +166,7 @@ export default class SalesChannelModuleService (channel): channel is CreateSalesChannelDTO => !channel.id ) - const operations: Promise[] = [] + const operations: Promise[]>[] = [] if (forCreate.length) { operations.push(this.createSalesChannels_(forCreate, sharedContext))