fix: Use integer for variant and category ranks (#7572)

This commit is contained in:
Stevche Radevski
2024-06-01 16:25:04 +02:00
committed by GitHub
parent 97327670a5
commit 3ede9d7863
6 changed files with 68 additions and 43 deletions

View File

@@ -314,7 +314,7 @@ moduleIntegrationTestRunner({
mpath:
"electronics.computers.laptops.gaming-laptops.high-performance.",
parent_category_id: "gaming-laptops",
category_children: [
category_children: expect.arrayContaining([
{
id: "4k-gaming",
handle: "4k-gaming-laptops",
@@ -331,7 +331,7 @@ moduleIntegrationTestRunner({
parent_category_id: "high-performance",
category_children: [],
},
],
]),
},
],
},
@@ -900,10 +900,10 @@ moduleIntegrationTestRunner({
}
)
expect(productCategory).toEqual(
expect(JSON.parse(JSON.stringify(productCategory))).toEqual(
expect.objectContaining({
name: "New Category",
rank: "0",
rank: 0,
})
)
})
@@ -932,7 +932,7 @@ moduleIntegrationTestRunner({
expect(productCategoryNew).toEqual(
expect.objectContaining({
name: "New Category 2",
rank: "1",
rank: 1,
})
)
@@ -954,7 +954,7 @@ moduleIntegrationTestRunner({
expect.objectContaining({
name: "New Category 2.1",
parent_category_id: productCategoryNew.id,
rank: "0",
rank: 0,
})
)
})
@@ -1032,15 +1032,15 @@ moduleIntegrationTestRunner({
expect.arrayContaining([
expect.objectContaining({
id: productCategoryTwo.id,
rank: "0",
rank: 0,
}),
expect.objectContaining({
id: productCategoryZero.id,
rank: "1",
rank: 1,
}),
expect.objectContaining({
id: productCategoryOne.id,
rank: "2",
rank: 2,
}),
])
)
@@ -1065,19 +1065,19 @@ moduleIntegrationTestRunner({
expect.arrayContaining([
expect.objectContaining({
id: productCategoryTwo.id,
rank: "0",
rank: 0,
}),
expect.objectContaining({
id: productCategoryZeroZero.id,
rank: "1",
rank: 1,
}),
expect.objectContaining({
id: productCategoryZeroOne.id,
rank: "2",
rank: 2,
}),
expect.objectContaining({
id: productCategoryZeroTwo.id,
rank: "3",
rank: 3,
}),
])
)
@@ -1102,19 +1102,19 @@ moduleIntegrationTestRunner({
expect.arrayContaining([
expect.objectContaining({
id: productCategoryTwo.id,
rank: "0",
rank: 0,
}),
expect.objectContaining({
id: productCategoryZeroZero.id,
rank: "1",
rank: 1,
}),
expect.objectContaining({
id: productCategoryZeroOne.id,
rank: "2",
rank: 2,
}),
expect.objectContaining({
id: productCategoryZeroTwo.id,
rank: "3",
rank: 3,
}),
])
)
@@ -1182,11 +1182,11 @@ moduleIntegrationTestRunner({
expect.arrayContaining([
expect.objectContaining({
id: productCategoryZero.id,
rank: "0",
rank: 0,
}),
expect.objectContaining({
id: productCategoryTwo.id,
rank: "1",
rank: 1,
}),
])
)

View File

@@ -281,7 +281,7 @@ moduleIntegrationTestRunner({
expect(productCategory).toEqual(
expect.objectContaining({
name: "New Category",
rank: "0",
rank: 0,
})
)
})
@@ -324,7 +324,7 @@ moduleIntegrationTestRunner({
expect(productCategoryNew).toEqual(
expect.objectContaining({
name: "New Category 2",
rank: "1",
rank: 1,
})
)
@@ -346,7 +346,7 @@ moduleIntegrationTestRunner({
expect.objectContaining({
name: "New Category 2.1",
parent_category_id: productCategoryNew.id,
rank: "0",
rank: 0,
})
)
})
@@ -438,15 +438,15 @@ moduleIntegrationTestRunner({
expect.arrayContaining([
expect.objectContaining({
id: productCategoryTwo.id,
rank: "0",
rank: 0,
}),
expect.objectContaining({
id: productCategoryZero.id,
rank: "1",
rank: 1,
}),
expect.objectContaining({
id: productCategoryOne.id,
rank: "2",
rank: 2,
}),
])
)
@@ -471,19 +471,19 @@ moduleIntegrationTestRunner({
expect.arrayContaining([
expect.objectContaining({
id: productCategoryTwo.id,
rank: "0",
rank: 0,
}),
expect.objectContaining({
id: productCategoryZeroZero.id,
rank: "1",
rank: 1,
}),
expect.objectContaining({
id: productCategoryZeroOne.id,
rank: "2",
rank: 2,
}),
expect.objectContaining({
id: productCategoryZeroTwo.id,
rank: "3",
rank: 3,
}),
])
)
@@ -508,19 +508,19 @@ moduleIntegrationTestRunner({
expect.arrayContaining([
expect.objectContaining({
id: productCategoryTwo.id,
rank: "0",
rank: 0,
}),
expect.objectContaining({
id: productCategoryZeroZero.id,
rank: "1",
rank: 1,
}),
expect.objectContaining({
id: productCategoryZeroOne.id,
rank: "2",
rank: 2,
}),
expect.objectContaining({
id: productCategoryZeroTwo.id,
rank: "3",
rank: 3,
}),
])
)
@@ -600,11 +600,11 @@ moduleIntegrationTestRunner({
expect.arrayContaining([
expect.objectContaining({
id: productCategoryZero.id,
rank: "0",
rank: 0,
}),
expect.objectContaining({
id: productCategoryTwo.id,
rank: "1",
rank: 1,
}),
])
)

View File

@@ -74,13 +74,13 @@
},
"rank": {
"name": "rank",
"type": "numeric",
"type": "integer",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"default": "0",
"mappedType": "decimal"
"mappedType": "integer"
},
"parent_category_id": {
"name": "parent_category_id",
@@ -1378,13 +1378,13 @@
},
"variant_rank": {
"name": "variant_rank",
"type": "numeric",
"type": "integer",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": true,
"default": "0",
"mappedType": "decimal"
"mappedType": "integer"
},
"product_id": {
"name": "product_id",

View File

@@ -0,0 +1,23 @@
import { Migration } from "@mikro-orm/migrations"
export class Migration20240601111544 extends Migration {
async up(): Promise<void> {
this.addSql(
'alter table if exists "product_category" alter column "rank" type integer using ("rank"::integer);'
)
this.addSql(
'alter table if exists "product_variant" alter column "variant_rank" type integer using ("variant_rank"::integer);'
)
}
async down(): Promise<void> {
this.addSql(
'alter table if exists "product_category" alter column "rank" type numeric using ("rank"::numeric);'
)
this.addSql(
'alter table if exists "product_variant" alter column "variant_rank" type numeric using ("variant_rank"::numeric);'
)
}
}

View File

@@ -68,7 +68,11 @@ class ProductCategory {
@Property({ columnType: "boolean", default: false })
is_internal?: boolean
@Property({ columnType: "numeric", nullable: false, default: 0 })
@Property({
columnType: "integer",
nullable: false,
default: 0,
})
rank?: number
@ManyToOne(() => ProductCategory, {

View File

@@ -130,12 +130,10 @@ class ProductVariant {
@Property({ columnType: "jsonb", nullable: true })
metadata?: Record<string, unknown> | null
// TODO: replace with BigNumber, or in this case a normal int should work
@Property({
columnType: "numeric",
columnType: "integer",
nullable: true,
default: 0,
serializer: optionalNumericSerializer,
})
variant_rank?: number | null