refactor: migrate promotion module (#10410)

This commit is contained in:
Harminder Virk
2024-12-11 13:12:39 +05:30
committed by GitHub
parent 777582ac43
commit fad85a9d29
22 changed files with 682 additions and 745 deletions

View File

@@ -2326,7 +2326,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
mappedBy: "user",
},
created_at: {
@@ -2508,7 +2507,7 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
onDelete: undefined,
},
created_at: {
reference: "scalar",
@@ -2595,7 +2594,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
mappedBy: "owner",
},
created_at: {
@@ -2687,7 +2685,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
mappedBy: "user",
cascade: ["persist", "soft-remove"],
onDelete: "cascade",
@@ -2851,9 +2848,7 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
mappedBy: "user",
cascade: ["persist", "soft-remove"],
onDelete: "cascade",
},
created_at: {
@@ -3040,7 +3035,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
},
email_id: {
columnType: "text",
@@ -3251,7 +3245,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
mappedBy: "owner",
},
email_id: {
@@ -3356,7 +3349,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
cascade: ["persist", "soft-remove"],
mappedBy: "user",
},
@@ -3532,7 +3524,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
cascade: ["persist", "soft-remove"],
mappedBy: "user",
},
@@ -4493,7 +4484,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
mappedBy: "user",
},
created_at: {
@@ -4691,7 +4681,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
mappedBy: "user",
},
created_at: {
@@ -5326,7 +5315,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
mappedBy: "user",
},
created_at: {
@@ -5526,7 +5514,6 @@ describe("Entity builder", () => {
reference: "1:1",
name: "email",
entity: "Email",
nullable: false,
mappedBy: "user",
},
created_at: {
@@ -5838,7 +5825,6 @@ describe("Entity builder", () => {
entity: "User",
mappedBy: "parent",
name: "child",
nullable: false,
reference: "1:1",
},
created_at: {

View File

@@ -25,6 +25,7 @@ import { HasOneWithForeignKey } from "../../relations/has-one-fk"
import { ManyToMany as DmlManyToMany } from "../../relations/many-to-many"
import { applyEntityIndexes } from "../mikro-orm/apply-indexes"
import { parseEntityName } from "./parse-entity-name"
import { BelongsTo } from "../../relations"
type Context = {
MANY_TO_MANY_TRACKED_RELATIONS: Record<string, boolean>
@@ -138,24 +139,32 @@ function validateManyToManyRelationshipWithoutMappedBy({
export function defineHasOneRelationship(
MikroORMEntity: EntityConstructor<any>,
relationship: RelationshipMetadata,
relatedEntity: DmlEntity<
Record<string, PropertyType<any> | RelationshipType<any>>,
any
>,
{ relatedModelName }: { relatedModelName: string },
cascades: EntityCascades<string[]>
) {
const shouldRemoveRelated = !!cascades.delete?.includes(relationship.name)
const { schema: relationSchema } = relatedEntity.parse()
let mappedBy: string | undefined = camelToSnakeCase(MikroORMEntity.name)
if ("mappedBy" in relationship) {
mappedBy = relationship.mappedBy
}
const isOthersideBelongsTo =
!!mappedBy && BelongsTo.isBelongsTo(relationSchema[mappedBy])
const oneToOneOptions = {
entity: relatedModelName,
nullable: relationship.nullable,
...(relationship.nullable ? { nullable: relationship.nullable } : {}),
...(mappedBy ? { mappedBy } : {}),
onDelete: shouldRemoveRelated ? "cascade" : undefined,
} as OneToOneOptions<any, any>
if (shouldRemoveRelated) {
if (shouldRemoveRelated && !isOthersideBelongsTo) {
oneToOneOptions.cascade = ["persist", "soft-remove"] as any
}
@@ -182,7 +191,7 @@ export function defineHasOneWithFKRelationship(
OneToOne({
entity: relatedModelName,
nullable: relationship.nullable,
...(relationship.nullable ? { nullable: relationship.nullable } : {}),
...(mappedBy ? { mappedBy } : {}),
cascade: shouldRemoveRelated
? (["persist", "soft-remove"] as any)
@@ -697,6 +706,7 @@ export function defineRelationship(
defineHasOneRelationship(
MikroORMEntity,
relationship,
relatedEntity,
relatedEntityInfo,
cascades
)

View File

@@ -16,6 +16,7 @@ export function applyIndexes(
) {
field.indexes.forEach((index) => {
const providerEntityIdIndexStatement = createPsqlIndexStatementHelper({
name: index.name,
tableName,
columns: [field.fieldName],
unique: index.type === "unique",