chore(order): dml (#10292)

* ../../core/types/src/dml/index.ts

* ../../core/types/src/dml/index.ts

* fix: relationships mapping

* handle nullable foreign keys types

* handle nullable foreign keys types

* handle nullable foreign keys types

* continue to update product category repository

* fix all product category repositories issues

* fix product category service types

* fix product module service types

* fix product module service types

* fix repository template type

* refactor: use a singleton DMLToMikroORM factory instance

Since the MikroORM MetadataStorage is global, we will also have to turn DML
to MikroORM entities conversion use a global bucket as well

* refactor: update product module to use DML in tests

* wip: tests

* WIP product linkable fixes

* continue type fixing and start test fixing

* test: fix more tests

* fix repository

* fix pivot table computaion + fix mikro orm repository

* fix many to many management and configuration

* fix many to many management and configuration

* fix many to many management and configuration

* update product tag relation configuration

* Introduce experimental dml hooks to fix some issues with categories

* more fixes

* fix product tests

* add missing id prefixes

* fix product category handle management

* test: fix more failing tests

* test: make it all green

* test: fix breaking tests

* fix: build issues

* fix: build issues

* fix: more breaking tests

* refactor: fix issues after merge

* refactor: fix issues after merge

* refactor: surpress types error

* test: fix DML failing tests

* improve many to many inference + tests

* Wip fix columns from product entity

* remove product model before create hook and manage handle validation and transformation at the service level

* test: fix breaking unit tests

* fix: product module service to not update handle on product update

* fix define link and joiner config

* test: fix joiner config test

* test: fix joiner config test

* fix joiner config primary keys

* Fix joiner config builder

* Fix joiner config builder

* test: remove only modifier from test

* refactor: remove hooks usage from product collection

* refactor: remove hooks usage from product-option

* refactor: remove hooks usage for computing category handle

* refactor: remove hooks usage from productCategory model

* refactor: remove hooks from DML

* refactor: remove cruft

* order dml

* cleanup

* re add foerign key indexes

* wip

* chore: remove unused types

* wip

* changes

* rm raw

* autoincrement

* wip

* rel

* refactor: cleanup

* migration and models configuration adjustments

* cleanup

* number searchable

* fix random ordering

* fix

* test: fix product-category tests

* test: update breaking DML tests

* test: array assertion to not care about ordering

* fix: temporarily apply id ordering for products

* types

* wip

* WIP type improvements

* update order models

* partially fix types temporarely

* rel

* fix: recursive type issue

* improve type inference breaks

* improve type inference breaks

* update models

* rm nullable

* default value

* repository

* update default value handling

* fix unit tests

* WIP

* toMikroORM

* fix relations

* cascades

* fix

* experimental dml hooks

* rm migration

* serial

* nullable autoincrement

* fix model

* model changes

* fix one to one DML

* order test

* fix addresses

* fix unit tests

* Re align dml entity name inference

* update model table name config

* update model table name config

* revert

* update return relation

* WIP

* hasOne

* models

* fix

* model

* initial commit

* cart service

* order module

* utils unit test

* index engine

* changeset

* merge

* fix hasOne with fk

* update

* free text filter per entity

* tests

* prod category

* property string many to many

* fix big number

* link modules migration set names

* merge

* shipping option rules

* serializer

* unit test

* fix test mikro orm init

* fix test mikro orm init

* Maintain merge object properties

* fix test mikro orm init

* prevent unit test from connecting to db

* wip

* fix test

* fix test

* link test

* schema

* models

* auto increment

* hook

* model hooks

* order

* wip

* orm version

* request return field

* fix return configuration on order model

* workflows

* core flows

* unit test

* test

* base repo

* test

* base repo

* test fix

* inventory move

* locking inventory

* test

* free text fix

* rm timeout mock

* migrate fulfillment values

* v6.4.3

* cleanup

* link-modules update sql

* revert test

* remove fake timers

---------

Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
Co-authored-by: Harminder Virk <virk.officials@gmail.com>
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
This commit is contained in:
authored and GitHub committed 2025-01-21 08:04:47 -05:00
1 parent 05c8a67d8e
commit cc73802ab3
178 files changed
+5731 -7120

No files matched your search

@@ -19,7 +19,7 @@ describe("defineMikroOrmCliConfig", () => {
expect(config).toEqual({
entities: [{}],
type: "postgresql",
driver: expect.any(Function),
host: "127.0.0.1",
user: "postgres",
password: "",
@@ -37,7 +37,7 @@ describe("defineMikroOrmCliConfig", () => {
expect(config).toEqual({
entities: [{}],
type: "postgresql",
driver: expect.any(Function),
dbName: "medusa-my-test",
host: "127.0.0.1",
user: "postgres",
@@ -2,11 +2,7 @@ import { Logger, MedusaContainer, ModulesSdkTypes } from "@medusajs/types"
import { PostgreSqlDriver, SqlEntityManager } from "@mikro-orm/postgresql"
import { asValue } from "awilix"
import { ContainerRegistrationKeys, MedusaError } from "../../common"
import {
FreeTextSearchFilterKey,
mikroOrmCreateConnection,
mikroOrmFreeTextSearchFilterOptionsFactory,
} from "../../dal"
import { mikroOrmCreateConnection } from "../../dal"
import { isSharedConnectionSymbol } from "../create-pg-connection"
import { loadDatabaseConfig } from "../load-module-database-config"
@@ -39,9 +35,6 @@ export async function mikroOrmConnectionLoader({
logger?: Logger
pathToMigrations: string
}) {
const freeTextSearchGlobalFilter =
mikroOrmFreeTextSearchFilterOptionsFactory(entities)
let manager = (
options as ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions
)?.manager
@@ -68,9 +61,6 @@ export async function mikroOrmConnectionLoader({
return await loadShared({
database: {
...dbConfig,
filters: {
[FreeTextSearchFilterKey as string]: freeTextSearchGlobalFilter,
},
},
container,
entities,
@@ -98,9 +88,6 @@ export async function mikroOrmConnectionLoader({
manager ??= await loadDefault({
database: {
...dbConfig,
filters: {
[FreeTextSearchFilterKey as string]: freeTextSearchGlobalFilter,
},
},
entities,
pathToMigrations,
@@ -2,9 +2,9 @@ import {
BaseFilterable,
Context,
FilterQuery,
FilterQuery as InternalFilterQuery,
FindConfig,
InferEntityType,
FilterQuery as InternalFilterQuery,
ModulesSdkTypes,
PerformedActions,
UpsertWithReplaceConfig,
@@ -18,7 +18,7 @@ import {
lowerCaseFirst,
MedusaError,
} from "../common"
import { FreeTextSearchFilterKey } from "../dal"
import { FreeTextSearchFilterKeyPrefix } from "../dal"
import { DmlEntity, toMikroORMEntity } from "../dml"
import { buildQuery } from "./build-query"
import {
@@ -67,7 +67,7 @@ export function MedusaInternalService<
): void {
if (isDefined(filters?.q)) {
config.filters ??= {}
config.filters[FreeTextSearchFilterKey] = {
config.filters[FreeTextSearchFilterKeyPrefix + model.name] = {
value: filters.q,
fromEntity: model.name,
}
@@ -5,6 +5,7 @@ import type {
EntitySchema,
MikroORMOptions,
} from "@mikro-orm/core"
import { defineConfig } from "@mikro-orm/postgresql"
import { kebabCase } from "../common"
import { CustomTsMigrationGenerator } from "../dal"
import { DmlEntity, toMikroOrmEntities } from "../dml"
@@ -21,7 +22,6 @@ type Options = Partial<Omit<MikroORMOptions, "entities" | "entitiesTs">> & {
type ReturnedOptions = Partial<MikroORMOptions> & {
entities: MikroORMOptions["entities"]
type: MikroORMOptions["type"]
migrations: MikroORMOptions["migrations"]
}
@@ -43,7 +43,7 @@ export function defineMikroOrmCliConfig(
const dmlEntities = options.entities.filter(DmlEntity.isDmlEntity)
const nonDmlEntities = options.entities.filter(
(entity) => !DmlEntity.isDmlEntity(entity)
(entity) => entity && !DmlEntity.isDmlEntity(entity)
)
const entities = nonDmlEntities.concat(
@@ -53,17 +53,16 @@ export function defineMikroOrmCliConfig(
const normalizedModuleName = kebabCase(moduleName.replace("Service", ""))
const databaseName = `medusa-${normalizedModuleName}`
return {
type: "postgresql",
return defineConfig({
dbName: databaseName,
host: "127.0.0.1",
user: "postgres",
password: "",
...options,
...(options as any),
entities,
migrations: {
generator: CustomTsMigrationGenerator,
...options.migrations,
},
}
}) as ReturnedOptions
}