Skip to content

Commit

Permalink
fix query issue
Browse files Browse the repository at this point in the history
  • Loading branch information
bahram1249 committed Feb 20, 2024
1 parent 555aa41 commit 80a4dff
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 19 deletions.
76 changes: 67 additions & 9 deletions apps/e-commerce/src/admin/product/product.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,45 +184,66 @@ export class ProductService {
model: ECInventory,
as: 'inventories',
where: {
vendorId: {
[Op.in]: vendorIds,
},
[Op.and]: [
{
vendorId: {
[Op.in]: vendorIds,
},
},
Sequelize.where(
Sequelize.fn(
'isnull',
Sequelize.col('inventories.isDeleted'),
0,
),
{
[Op.eq]: 0,
},
),
],
},
include: [
{
attributes: ['id', 'name'],
model: ECInventoryStatus,
as: 'inventoryStatus',
required: false,
},
{
attributes: ['id', 'name'],
model: ECVendor,
as: 'vendor',
required: false,
},
{
attributes: ['id', 'name', 'hexCode'],
model: ECColor,
as: 'color',
required: false,
},
{
attributes: ['id', 'name'],
model: ECGuarantee,
as: 'guarantee',
required: false,
},
{
attributes: ['id', 'name'],
model: ECGuaranteeMonth,
as: 'guaranteeMonth',
required: false,
},
{
attributes: ['id', 'name'],
model: ECProvince,
as: 'onlyProvince',
required: false,
},
{
attributes: ['id', 'vendorId', 'addressId'],
model: ECVendorAddress,
as: 'vendorAddress',
required: false,
include: [
{
attributes: [
Expand All @@ -240,35 +261,41 @@ export class ProductService {
],
model: ECAddress,
as: 'address',
required: false,
include: [
{
attributes: ['id', 'name'],
model: ECProvince,
as: 'province',
required: false,
},
{
attributes: ['id', 'name'],
model: ECCity,
as: 'city',
required: false,
},
{
attributes: ['id', 'name'],
model: ECNeighborhood,
as: 'neighborhood',
required: false,
},
],
},
{
attributes: ['id', 'name'],
model: ECVendor,
as: 'vendor',
required: false,
},
],
},
{
attributes: ['price'],
model: ECInventoryPrice,
as: 'firstPrice',
required: false,
include: [
{
attributes: ['id', 'name'],
Expand All @@ -291,6 +318,7 @@ export class ProductService {
attributes: ['price'],
model: ECInventoryPrice,
as: 'secondaryPrice',
required: false,
include: [
{
attributes: ['id', 'name'],
Expand Down Expand Up @@ -319,7 +347,7 @@ export class ProductService {
required: false,
},
])
.subQuery(false)
.subQuery(true)
.limit(filter.limit)
.offset(filter.offset)
.order({ orderBy: filter.orderBy, sortOrder: filter.sortOrder })
Expand Down Expand Up @@ -349,7 +377,7 @@ export class ProductService {
'id',
'title',
'sku',
// 'description',
'description',
'slug',
'entityTypeId',
'colorBased',
Expand Down Expand Up @@ -426,45 +454,66 @@ export class ProductService {
model: ECInventory,
as: 'inventories',
where: {
vendorId: {
[Op.in]: vendorIds,
},
[Op.and]: [
{
vendorId: {
[Op.in]: vendorIds,
},
},
Sequelize.where(
Sequelize.fn(
'isnull',
Sequelize.col('inventories.isDeleted'),
0,
),
{
[Op.eq]: 0,
},
),
],
},
include: [
{
attributes: ['id', 'name'],
model: ECInventoryStatus,
as: 'inventoryStatus',
required: false,
},
{
attributes: ['id', 'name'],
model: ECVendor,
as: 'vendor',
required: false,
},
{
attributes: ['id', 'name', 'hexCode'],
model: ECColor,
as: 'color',
required: false,
},
{
attributes: ['id', 'name'],
model: ECGuarantee,
as: 'guarantee',
required: false,
},
{
attributes: ['id', 'name'],
model: ECGuaranteeMonth,
as: 'guaranteeMonth',
required: false,
},
{
attributes: ['id', 'name'],
model: ECProvince,
as: 'onlyProvince',
required: false,
},
{
attributes: ['id', 'vendorId', 'addressId'],
model: ECVendorAddress,
as: 'vendorAddress',
required: false,
include: [
{
attributes: [
Expand All @@ -482,35 +531,41 @@ export class ProductService {
],
model: ECAddress,
as: 'address',
required: false,
include: [
{
attributes: ['id', 'name'],
model: ECProvince,
as: 'province',
required: false,
},
{
attributes: ['id', 'name'],
model: ECCity,
as: 'city',
required: false,
},
{
attributes: ['id', 'name'],
model: ECNeighborhood,
as: 'neighborhood',
required: false,
},
],
},
{
attributes: ['id', 'name'],
model: ECVendor,
as: 'vendor',
required: false,
},
],
},
{
attributes: ['price'],
model: ECInventoryPrice,
as: 'firstPrice',
required: false,
include: [
{
attributes: ['id', 'name'],
Expand All @@ -533,6 +588,7 @@ export class ProductService {
attributes: ['price'],
model: ECInventoryPrice,
as: 'secondaryPrice',
required: false,
include: [
{
attributes: ['id', 'name'],
Expand Down Expand Up @@ -561,7 +617,8 @@ export class ProductService {
required: false,
},
])
.subQuery(false)
.subQuery(true)

.filter(
Sequelize.where(
Sequelize.fn('isnull', Sequelize.col('ECProduct.isDeleted'), 0),
Expand All @@ -573,6 +630,7 @@ export class ProductService {
.filter({
id: id,
})
.order({ orderBy: 'id', sortOrder: 'desc' })
.order([
{ model: ECInventory, as: 'inventories' },
{ model: ECVendor, as: 'vendor' },
Expand Down
10 changes: 0 additions & 10 deletions libs/database/src/models/ecommerce-eav/ec-product.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,16 +144,6 @@ export class ECProduct extends Model {
@HasMany(() => ECInventory, {
as: 'inventories',
foreignKey: 'productId',
scope: {
[Op.and]: [
Sequelize.where(
Sequelize.fn('isnull', Sequelize.col('[inventories].isDeleted'), 0),
{
[Op.eq]: 0,
},
),
],
},
})
inventories?: ECInventory[];

Expand Down

0 comments on commit 80a4dff

Please sign in to comment.