@vendure/core 1.5.1 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/common/configurable-operation-codec.js +2 -2
- package/dist/api/common/configurable-operation-codec.js.map +1 -1
- package/dist/api/config/generate-permissions.js +29 -29
- package/dist/api/decorators/relations.decorator.d.ts +102 -0
- package/dist/api/decorators/relations.decorator.js +187 -0
- package/dist/api/decorators/relations.decorator.js.map +1 -0
- package/dist/api/decorators/request-context.decorator.js +9 -2
- package/dist/api/decorators/request-context.decorator.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/middleware/transaction-interceptor.d.ts +9 -0
- package/dist/api/middleware/transaction-interceptor.js +16 -1
- package/dist/api/middleware/transaction-interceptor.js.map +1 -1
- package/dist/api/resolvers/admin/administrator.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/administrator.resolver.js +10 -6
- package/dist/api/resolvers/admin/administrator.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/asset.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/asset.resolver.js +10 -6
- package/dist/api/resolvers/admin/asset.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/collection.resolver.d.ts +5 -3
- package/dist/api/resolvers/admin/collection.resolver.js +25 -7
- package/dist/api/resolvers/admin/collection.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/country.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/country.resolver.js +10 -6
- package/dist/api/resolvers/admin/country.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/customer-group.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/customer-group.resolver.js +8 -4
- package/dist/api/resolvers/admin/customer-group.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/customer.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/customer.resolver.js +10 -6
- package/dist/api/resolvers/admin/customer.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/facet.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/facet.resolver.js +10 -6
- package/dist/api/resolvers/admin/facet.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/order.resolver.d.ts +6 -5
- package/dist/api/resolvers/admin/order.resolver.js +25 -11
- package/dist/api/resolvers/admin/order.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/payment-method.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/payment-method.resolver.js +10 -6
- package/dist/api/resolvers/admin/payment-method.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/product-option.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/product-option.resolver.js +8 -4
- package/dist/api/resolvers/admin/product-option.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/product.resolver.d.ts +4 -3
- package/dist/api/resolvers/admin/product.resolver.js +16 -10
- package/dist/api/resolvers/admin/product.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/promotion.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/promotion.resolver.js +9 -6
- package/dist/api/resolvers/admin/promotion.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/role.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/role.resolver.js +10 -6
- package/dist/api/resolvers/admin/role.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/shipping-method.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/shipping-method.resolver.js +10 -6
- package/dist/api/resolvers/admin/shipping-method.resolver.js.map +1 -1
- package/dist/api/resolvers/admin/tax-rate.resolver.d.ts +3 -2
- package/dist/api/resolvers/admin/tax-rate.resolver.js +10 -6
- package/dist/api/resolvers/admin/tax-rate.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/collection-entity.resolver.d.ts +2 -1
- package/dist/api/resolvers/entity/collection-entity.resolver.js +5 -3
- package/dist/api/resolvers/entity/collection-entity.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/customer-entity.resolver.d.ts +2 -1
- package/dist/api/resolvers/entity/customer-entity.resolver.js +5 -3
- package/dist/api/resolvers/entity/customer-entity.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/order-line-entity.resolver.d.ts +2 -1
- package/dist/api/resolvers/entity/order-line-entity.resolver.js +6 -3
- package/dist/api/resolvers/entity/order-line-entity.resolver.js.map +1 -1
- package/dist/api/resolvers/entity/product-entity.resolver.d.ts +3 -2
- package/dist/api/resolvers/entity/product-entity.resolver.js +10 -6
- package/dist/api/resolvers/entity/product-entity.resolver.js.map +1 -1
- package/dist/api/resolvers/shop/shop-order.resolver.d.ts +4 -3
- package/dist/api/resolvers/shop/shop-order.resolver.js +16 -8
- package/dist/api/resolvers/shop/shop-order.resolver.js.map +1 -1
- package/dist/api/resolvers/shop/shop-products.resolver.d.ts +8 -8
- package/dist/api/resolvers/shop/shop-products.resolver.js +32 -21
- package/dist/api/resolvers/shop/shop-products.resolver.js.map +1 -1
- package/dist/api/schema/admin-api/collection.api.graphql +7 -0
- package/dist/bootstrap.js +2 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/common/calculated-decorator.d.ts +16 -3
- package/dist/common/calculated-decorator.js +3 -0
- package/dist/common/calculated-decorator.js.map +1 -1
- package/dist/common/constants.d.ts +1 -0
- package/dist/common/constants.js +2 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/types/entity-relation-paths.d.ts +1 -1
- package/dist/config/catalog/collection-filter.d.ts +32 -0
- package/dist/config/catalog/collection-filter.js +32 -0
- package/dist/config/catalog/collection-filter.js.map +1 -1
- package/dist/config/catalog/default-collection-filters.d.ts +100 -0
- package/dist/config/catalog/default-collection-filters.js +154 -21
- package/dist/config/catalog/default-collection-filters.js.map +1 -1
- package/dist/config/config.module.js +2 -0
- package/dist/config/config.module.js.map +1 -1
- package/dist/config/config.service.d.ts +2 -1
- package/dist/config/config.service.js +3 -0
- package/dist/config/config.service.js.map +1 -1
- package/dist/config/custom-field/custom-field-types.d.ts +3 -0
- package/dist/config/default-config.js +5 -0
- package/dist/config/default-config.js.map +1 -1
- package/dist/config/entity-metadata/add-foreign-key-indices.d.ts +12 -0
- package/dist/config/entity-metadata/add-foreign-key-indices.js +33 -0
- package/dist/config/entity-metadata/add-foreign-key-indices.js.map +1 -0
- package/dist/config/entity-metadata/entity-metadata-modifier.d.ts +55 -0
- package/dist/config/entity-metadata/entity-metadata-modifier.js +3 -0
- package/dist/config/entity-metadata/entity-metadata-modifier.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/payment/dummy-payment-method-handler.js +2 -2
- package/dist/config/payment/dummy-payment-method-handler.js.map +1 -1
- package/dist/config/payment/example-payment-method-handler.js +2 -2
- package/dist/config/payment/example-payment-method-handler.js.map +1 -1
- package/dist/config/payment/payment-method-eligibility-checker.d.ts +3 -3
- package/dist/config/payment/payment-method-eligibility-checker.js +2 -2
- package/dist/config/payment/payment-method-eligibility-checker.js.map +1 -1
- package/dist/config/payment/payment-method-handler.d.ts +7 -8
- package/dist/config/payment/payment-method-handler.js +6 -6
- package/dist/config/payment/payment-method-handler.js.map +1 -1
- package/dist/config/shipping-method/shipping-calculator.d.ts +3 -3
- package/dist/config/shipping-method/shipping-calculator.js +2 -2
- package/dist/config/shipping-method/shipping-calculator.js.map +1 -1
- package/dist/config/shipping-method/shipping-eligibility-checker.d.ts +4 -4
- package/dist/config/shipping-method/shipping-eligibility-checker.js +5 -5
- package/dist/config/shipping-method/shipping-eligibility-checker.js.map +1 -1
- package/dist/config/system/health-check-strategy.d.ts +47 -0
- package/dist/config/system/health-check-strategy.js +3 -0
- package/dist/config/system/health-check-strategy.js.map +1 -0
- package/dist/config/vendure-config.d.ts +39 -0
- package/dist/connection/transaction-wrapper.d.ts +5 -1
- package/dist/connection/transaction-wrapper.js +9 -3
- package/dist/connection/transaction-wrapper.js.map +1 -1
- package/dist/connection/transactional-connection.d.ts +7 -3
- package/dist/connection/transactional-connection.js +8 -3
- package/dist/connection/transactional-connection.js.map +1 -1
- package/dist/data-import/providers/importer/importer.d.ts +3 -2
- package/dist/data-import/providers/importer/importer.js +1 -0
- package/dist/data-import/providers/importer/importer.js.map +1 -1
- package/dist/entity/order/order.entity.js +3 -2
- package/dist/entity/order/order.entity.js.map +1 -1
- package/dist/entity/order-line/order-line.entity.js +22 -22
- package/dist/entity/order-line/order-line.entity.js.map +1 -1
- package/dist/entity/register-custom-entity-fields.js +8 -0
- package/dist/entity/register-custom-entity-fields.js.map +1 -1
- package/dist/entity/run-entity-metadata-modifiers.d.ts +2 -0
- package/dist/entity/run-entity-metadata-modifiers.js +15 -0
- package/dist/entity/run-entity-metadata-modifiers.js.map +1 -0
- package/dist/entity/shipping-method/shipping-method.entity.js +2 -2
- package/dist/entity/shipping-method/shipping-method.entity.js.map +1 -1
- package/dist/event-bus/event-bus.js +12 -3
- package/dist/event-bus/event-bus.js.map +1 -1
- package/dist/event-bus/events/role-event.d.ts +1 -1
- package/dist/event-bus/events/role-event.js +1 -1
- package/dist/event-bus/events/search-event.d.ts +20 -0
- package/dist/event-bus/events/search-event.js +21 -0
- package/dist/event-bus/events/search-event.js.map +1 -0
- package/dist/event-bus/index.d.ts +1 -0
- package/dist/event-bus/index.js +1 -0
- package/dist/event-bus/index.js.map +1 -1
- package/dist/health-check/health-check-registry.service.d.ts +7 -1
- package/dist/health-check/health-check-registry.service.js +7 -1
- package/dist/health-check/health-check-registry.service.js.map +1 -1
- package/dist/health-check/health-check.module.d.ts +1 -3
- package/dist/health-check/health-check.module.js +6 -5
- package/dist/health-check/health-check.module.js.map +1 -1
- package/dist/health-check/http-health-check-strategy.d.ts +36 -0
- package/dist/health-check/http-health-check-strategy.js +41 -0
- package/dist/health-check/http-health-check-strategy.js.map +1 -0
- package/dist/health-check/index.d.ts +2 -0
- package/dist/health-check/index.js +2 -0
- package/dist/health-check/index.js.map +1 -1
- package/dist/health-check/typeorm-health-check-strategy.d.ts +36 -0
- package/dist/health-check/typeorm-health-check-strategy.js +44 -0
- package/dist/health-check/typeorm-health-check-strategy.js.map +1 -0
- package/dist/job-queue/subscribable-job.js +1 -1
- package/dist/plugin/default-search-plugin/default-search-plugin.d.ts +9 -3
- package/dist/plugin/default-search-plugin/default-search-plugin.js +25 -2
- package/dist/plugin/default-search-plugin/default-search-plugin.js.map +1 -1
- package/dist/plugin/default-search-plugin/fulltext-search.service.d.ts +3 -1
- package/dist/plugin/default-search-plugin/fulltext-search.service.js +29 -19
- package/dist/plugin/default-search-plugin/fulltext-search.service.js.map +1 -1
- package/dist/plugin/default-search-plugin/indexer/search-index.service.js +1 -1
- package/dist/plugin/default-search-plugin/indexer/search-index.service.js.map +1 -1
- package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.d.ts +4 -4
- package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.js +7 -3
- package/dist/plugin/default-search-plugin/search-strategy/mysql-search-strategy.js.map +1 -1
- package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.d.ts +4 -4
- package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.js +7 -3
- package/dist/plugin/default-search-plugin/search-strategy/postgres-search-strategy.js.map +1 -1
- package/dist/plugin/default-search-plugin/search-strategy/search-strategy.d.ts +2 -1
- package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.d.ts +4 -4
- package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.js +7 -3
- package/dist/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.js.map +1 -1
- package/dist/plugin/default-search-plugin/types.d.ts +84 -0
- package/dist/service/helpers/list-query-builder/list-query-builder.d.ts +28 -0
- package/dist/service/helpers/list-query-builder/list-query-builder.js +118 -17
- package/dist/service/helpers/list-query-builder/list-query-builder.js.map +1 -1
- package/dist/service/helpers/list-query-builder/parse-channel-param.d.ts +1 -1
- package/dist/service/helpers/list-query-builder/parse-channel-param.js +2 -2
- package/dist/service/helpers/list-query-builder/parse-channel-param.js.map +1 -1
- package/dist/service/helpers/list-query-builder/parse-filter-params.d.ts +1 -1
- package/dist/service/helpers/list-query-builder/parse-filter-params.js +3 -2
- package/dist/service/helpers/list-query-builder/parse-filter-params.js.map +1 -1
- package/dist/service/helpers/list-query-builder/parse-sort-params.d.ts +1 -1
- package/dist/service/helpers/list-query-builder/parse-sort-params.js +4 -3
- package/dist/service/helpers/list-query-builder/parse-sort-params.js.map +1 -1
- package/dist/service/helpers/order-modifier/order-modifier.js +2 -1
- package/dist/service/helpers/order-modifier/order-modifier.js.map +1 -1
- package/dist/service/helpers/order-state-machine/order-state-machine.js +1 -1
- package/dist/service/helpers/order-state-machine/order-state-machine.js.map +1 -1
- package/dist/service/helpers/slug-validator/slug-validator.js +15 -6
- package/dist/service/helpers/slug-validator/slug-validator.js.map +1 -1
- package/dist/service/helpers/utils/translate-entity.js +1 -2
- package/dist/service/helpers/utils/translate-entity.js.map +1 -1
- package/dist/service/services/administrator.service.d.ts +4 -3
- package/dist/service/services/administrator.service.js +6 -5
- package/dist/service/services/administrator.service.js.map +1 -1
- package/dist/service/services/asset.service.d.ts +3 -2
- package/dist/service/services/asset.service.js +6 -4
- package/dist/service/services/asset.service.js.map +1 -1
- package/dist/service/services/collection.service.d.ts +8 -5
- package/dist/service/services/collection.service.js +42 -12
- package/dist/service/services/collection.service.js.map +1 -1
- package/dist/service/services/country.service.d.ts +3 -2
- package/dist/service/services/country.service.js +4 -4
- package/dist/service/services/country.service.js.map +1 -1
- package/dist/service/services/customer-group.service.d.ts +3 -2
- package/dist/service/services/customer-group.service.js +4 -4
- package/dist/service/services/customer-group.service.js.map +1 -1
- package/dist/service/services/customer.service.d.ts +3 -2
- package/dist/service/services/customer.service.js +3 -3
- package/dist/service/services/customer.service.js.map +1 -1
- package/dist/service/services/facet.service.d.ts +3 -2
- package/dist/service/services/facet.service.js +10 -6
- package/dist/service/services/facet.service.js.map +1 -1
- package/dist/service/services/order.service.d.ts +15 -8
- package/dist/service/services/order.service.js +57 -55
- package/dist/service/services/order.service.js.map +1 -1
- package/dist/service/services/payment-method.service.d.ts +3 -2
- package/dist/service/services/payment-method.service.js +7 -5
- package/dist/service/services/payment-method.service.js.map +1 -1
- package/dist/service/services/payment.service.js +4 -4
- package/dist/service/services/payment.service.js.map +1 -1
- package/dist/service/services/product-option-group.service.d.ts +3 -2
- package/dist/service/services/product-option-group.service.js +4 -4
- package/dist/service/services/product-option-group.service.js.map +1 -1
- package/dist/service/services/product-variant.service.d.ts +10 -3
- package/dist/service/services/product-variant.service.js +43 -39
- package/dist/service/services/product-variant.service.js.map +1 -1
- package/dist/service/services/product.service.d.ts +5 -4
- package/dist/service/services/product.service.js +18 -8
- package/dist/service/services/product.service.js.map +1 -1
- package/dist/service/services/promotion.service.d.ts +3 -2
- package/dist/service/services/promotion.service.js +4 -3
- package/dist/service/services/promotion.service.js.map +1 -1
- package/dist/service/services/role.service.d.ts +3 -2
- package/dist/service/services/role.service.js +4 -4
- package/dist/service/services/role.service.js.map +1 -1
- package/dist/service/services/shipping-method.service.d.ts +3 -2
- package/dist/service/services/shipping-method.service.js +4 -4
- package/dist/service/services/shipping-method.service.js.map +1 -1
- package/dist/service/services/tax-rate.service.d.ts +3 -2
- package/dist/service/services/tax-rate.service.js +4 -4
- package/dist/service/services/tax-rate.service.js.map +1 -1
- package/dist/service/services/zone.service.d.ts +2 -2
- package/dist/service/services/zone.service.js +2 -2
- package/dist/service/services/zone.service.js.map +1 -1
- package/package.json +5 -3
|
@@ -4,6 +4,8 @@ exports.MysqlSearchStrategy = void 0;
|
|
|
4
4
|
const generated_types_1 = require("@vendure/common/lib/generated-types");
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
6
|
const errors_1 = require("../../../common/error/errors");
|
|
7
|
+
const transactional_connection_1 = require("../../../connection/transactional-connection");
|
|
8
|
+
const constants_1 = require("../constants");
|
|
7
9
|
const search_index_item_entity_1 = require("../entities/search-index-item.entity");
|
|
8
10
|
const search_strategy_common_1 = require("./search-strategy-common");
|
|
9
11
|
const search_strategy_utils_1 = require("./search-strategy-utils");
|
|
@@ -11,11 +13,13 @@ const search_strategy_utils_1 = require("./search-strategy-utils");
|
|
|
11
13
|
* A weighted fulltext search for MySQL / MariaDB.
|
|
12
14
|
*/
|
|
13
15
|
class MysqlSearchStrategy {
|
|
14
|
-
constructor(
|
|
15
|
-
this.connection = connection;
|
|
16
|
-
this.options = options;
|
|
16
|
+
constructor() {
|
|
17
17
|
this.minTermLength = 2;
|
|
18
18
|
}
|
|
19
|
+
async init(injector) {
|
|
20
|
+
this.connection = injector.get(transactional_connection_1.TransactionalConnection);
|
|
21
|
+
this.options = injector.get(constants_1.PLUGIN_INIT_OPTIONS);
|
|
22
|
+
}
|
|
19
23
|
async getFacetValueIds(ctx, input, enabledOnly) {
|
|
20
24
|
const facetValuesQb = this.connection
|
|
21
25
|
.getRepository(search_index_item_entity_1.SearchIndexItem)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql-search-strategy.js","sourceRoot":"","sources":["../../../../src/plugin/default-search-plugin/search-strategy/mysql-search-strategy.ts"],"names":[],"mappings":";;;AAAA,yEAAoF;AAEpF,qCAAuD;
|
|
1
|
+
{"version":3,"file":"mysql-search-strategy.js","sourceRoot":"","sources":["../../../../src/plugin/default-search-plugin/search-strategy/mysql-search-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { SearchResult } from '@vendure/common/lib/generated-types';
|
|
2
2
|
import { ID } from '@vendure/common/lib/shared-types';
|
|
3
3
|
import { RequestContext } from '../../../api/common/request-context';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { Injector } from '../../../common';
|
|
5
|
+
import { SearchInput } from '../types';
|
|
6
6
|
import { SearchStrategy } from './search-strategy';
|
|
7
7
|
/**
|
|
8
8
|
* A weighted fulltext search for PostgeSQL.
|
|
9
9
|
*/
|
|
10
10
|
export declare class PostgresSearchStrategy implements SearchStrategy {
|
|
11
|
+
private readonly minTermLength;
|
|
11
12
|
private connection;
|
|
12
13
|
private options;
|
|
13
|
-
|
|
14
|
-
constructor(connection: TransactionalConnection, options: DefaultSearchPluginInitOptions);
|
|
14
|
+
init(injector: Injector): Promise<void>;
|
|
15
15
|
getFacetValueIds(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<Map<ID, number>>;
|
|
16
16
|
getCollectionIds(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<Map<ID, number>>;
|
|
17
17
|
getSearchResults(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<SearchResult[]>;
|
|
@@ -4,6 +4,8 @@ exports.PostgresSearchStrategy = void 0;
|
|
|
4
4
|
const generated_types_1 = require("@vendure/common/lib/generated-types");
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
6
|
const errors_1 = require("../../../common/error/errors");
|
|
7
|
+
const transactional_connection_1 = require("../../../connection/transactional-connection");
|
|
8
|
+
const constants_1 = require("../constants");
|
|
7
9
|
const search_index_item_entity_1 = require("../entities/search-index-item.entity");
|
|
8
10
|
const search_strategy_common_1 = require("./search-strategy-common");
|
|
9
11
|
const search_strategy_utils_1 = require("./search-strategy-utils");
|
|
@@ -11,11 +13,13 @@ const search_strategy_utils_1 = require("./search-strategy-utils");
|
|
|
11
13
|
* A weighted fulltext search for PostgeSQL.
|
|
12
14
|
*/
|
|
13
15
|
class PostgresSearchStrategy {
|
|
14
|
-
constructor(
|
|
15
|
-
this.connection = connection;
|
|
16
|
-
this.options = options;
|
|
16
|
+
constructor() {
|
|
17
17
|
this.minTermLength = 2;
|
|
18
18
|
}
|
|
19
|
+
async init(injector) {
|
|
20
|
+
this.connection = injector.get(transactional_connection_1.TransactionalConnection);
|
|
21
|
+
this.options = injector.get(constants_1.PLUGIN_INIT_OPTIONS);
|
|
22
|
+
}
|
|
19
23
|
async getFacetValueIds(ctx, input, enabledOnly) {
|
|
20
24
|
const facetValuesQb = this.connection
|
|
21
25
|
.getRepository(search_index_item_entity_1.SearchIndexItem)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-search-strategy.js","sourceRoot":"","sources":["../../../../src/plugin/default-search-plugin/search-strategy/postgres-search-strategy.ts"],"names":[],"mappings":";;;AAAA,yEAAoF;AAEpF,qCAAuD;
|
|
1
|
+
{"version":3,"file":"postgres-search-strategy.js","sourceRoot":"","sources":["../../../../src/plugin/default-search-plugin/search-strategy/postgres-search-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { SearchInput, SearchResult } from '@vendure/common/lib/generated-types';
|
|
2
2
|
import { ID } from '@vendure/common/lib/shared-types';
|
|
3
3
|
import { RequestContext } from '../../../api';
|
|
4
|
+
import { InjectableStrategy } from '../../../common';
|
|
4
5
|
/**
|
|
5
6
|
* This interface defines the contract that any database-specific search implementations
|
|
6
7
|
* should follow.
|
|
7
8
|
*/
|
|
8
|
-
export interface SearchStrategy {
|
|
9
|
+
export interface SearchStrategy extends InjectableStrategy {
|
|
9
10
|
getSearchResults(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<SearchResult[]>;
|
|
10
11
|
getTotalCount(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<number>;
|
|
11
12
|
/**
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { SearchResult } from '@vendure/common/lib/generated-types';
|
|
2
2
|
import { ID } from '@vendure/common/lib/shared-types';
|
|
3
3
|
import { RequestContext } from '../../../api/common/request-context';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { Injector } from '../../../common';
|
|
5
|
+
import { SearchInput } from '../types';
|
|
6
6
|
import { SearchStrategy } from './search-strategy';
|
|
7
7
|
/**
|
|
8
8
|
* A rather naive search for SQLite / SQL.js. Rather than proper
|
|
9
9
|
* full-text searching, it uses a weighted `LIKE "%term%"` operator instead.
|
|
10
10
|
*/
|
|
11
11
|
export declare class SqliteSearchStrategy implements SearchStrategy {
|
|
12
|
+
private readonly minTermLength;
|
|
12
13
|
private connection;
|
|
13
14
|
private options;
|
|
14
|
-
|
|
15
|
-
constructor(connection: TransactionalConnection, options: DefaultSearchPluginInitOptions);
|
|
15
|
+
init(injector: Injector): Promise<void>;
|
|
16
16
|
getFacetValueIds(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<Map<ID, number>>;
|
|
17
17
|
getCollectionIds(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<Map<ID, number>>;
|
|
18
18
|
getSearchResults(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<SearchResult[]>;
|
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SqliteSearchStrategy = void 0;
|
|
4
4
|
const generated_types_1 = require("@vendure/common/lib/generated-types");
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
|
+
const __1 = require("../../..");
|
|
6
7
|
const errors_1 = require("../../../common/error/errors");
|
|
8
|
+
const transactional_connection_1 = require("../../../connection/transactional-connection");
|
|
7
9
|
const search_index_item_entity_1 = require("../entities/search-index-item.entity");
|
|
8
10
|
const search_strategy_utils_1 = require("./search-strategy-utils");
|
|
9
11
|
/**
|
|
@@ -11,11 +13,13 @@ const search_strategy_utils_1 = require("./search-strategy-utils");
|
|
|
11
13
|
* full-text searching, it uses a weighted `LIKE "%term%"` operator instead.
|
|
12
14
|
*/
|
|
13
15
|
class SqliteSearchStrategy {
|
|
14
|
-
constructor(
|
|
15
|
-
this.connection = connection;
|
|
16
|
-
this.options = options;
|
|
16
|
+
constructor() {
|
|
17
17
|
this.minTermLength = 2;
|
|
18
18
|
}
|
|
19
|
+
async init(injector) {
|
|
20
|
+
this.connection = injector.get(transactional_connection_1.TransactionalConnection);
|
|
21
|
+
this.options = injector.get(__1.PLUGIN_INIT_OPTIONS);
|
|
22
|
+
}
|
|
19
23
|
async getFacetValueIds(ctx, input, enabledOnly) {
|
|
20
24
|
const facetValuesQb = this.connection
|
|
21
25
|
.getRepository(search_index_item_entity_1.SearchIndexItem)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-search-strategy.js","sourceRoot":"","sources":["../../../../src/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.ts"],"names":[],"mappings":";;;AAAA,yEAAoF;AAEpF,qCAAuD;
|
|
1
|
+
{"version":3,"file":"sqlite-search-strategy.js","sourceRoot":"","sources":["../../../../src/plugin/default-search-plugin/search-strategy/sqlite-search-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { SearchInput as GeneratedSearchInput } from '@vendure/common/lib/generat
|
|
|
2
2
|
import { ID, JsonCompatible } from '@vendure/common/lib/shared-types';
|
|
3
3
|
import { SerializedRequestContext } from '../../api/common/request-context';
|
|
4
4
|
import { Asset } from '../../entity/asset/asset.entity';
|
|
5
|
+
import { SearchStrategy } from './search-strategy/search-strategy';
|
|
5
6
|
/**
|
|
6
7
|
* @description
|
|
7
8
|
* Options which configure the behaviour of the DefaultSearchPlugin
|
|
@@ -33,6 +34,89 @@ export interface DefaultSearchPluginInitOptions {
|
|
|
33
34
|
* @default false
|
|
34
35
|
*/
|
|
35
36
|
bufferUpdates?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* @description
|
|
39
|
+
* Set a custom search strategy that implements {@link SearchStrategy} or extends an existing search strategy
|
|
40
|
+
* such as {@link MysqlSearchStrategy}, {@link PostgresSearchStrategy} or {@link SqliteSearchStrategy}.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```Typescript
|
|
44
|
+
* export class MySearchStrategy implements SearchStrategy {
|
|
45
|
+
* private readonly minTermLength = 2;
|
|
46
|
+
* private connection: TransactionalConnection;
|
|
47
|
+
* private options: DefaultSearchPluginInitOptions;
|
|
48
|
+
*
|
|
49
|
+
* async init(injector: Injector) {
|
|
50
|
+
* this.connection = injector.get(TransactionalConnection);
|
|
51
|
+
* this.options = injector.get(PLUGIN_INIT_OPTIONS);
|
|
52
|
+
* }
|
|
53
|
+
*
|
|
54
|
+
* async getFacetValueIds(
|
|
55
|
+
* ctx: RequestContext,
|
|
56
|
+
* input: SearchInput,
|
|
57
|
+
* enabledOnly: boolean,
|
|
58
|
+
* ): Promise<Map<ID, number>> {
|
|
59
|
+
* // ...
|
|
60
|
+
* return createFacetIdCountMap(facetValuesResult);
|
|
61
|
+
* }
|
|
62
|
+
*
|
|
63
|
+
* async getCollectionIds(
|
|
64
|
+
* ctx: RequestContext,
|
|
65
|
+
* input: SearchInput,
|
|
66
|
+
* enabledOnly: boolean,
|
|
67
|
+
* ): Promise<Map<ID, number>> {
|
|
68
|
+
* // ...
|
|
69
|
+
* return createCollectionIdCountMap(collectionsResult);
|
|
70
|
+
* }
|
|
71
|
+
*
|
|
72
|
+
* async getSearchResults(
|
|
73
|
+
* ctx: RequestContext,
|
|
74
|
+
* input: SearchInput,
|
|
75
|
+
* enabledOnly: boolean,
|
|
76
|
+
* ): Promise<SearchResult[]> {
|
|
77
|
+
* const take = input.take || 25;
|
|
78
|
+
* const skip = input.skip || 0;
|
|
79
|
+
* const sort = input.sort;
|
|
80
|
+
* const qb = this.connection
|
|
81
|
+
* .getRepository(SearchIndexItem)
|
|
82
|
+
* .createQueryBuilder('si')
|
|
83
|
+
* .select(this.createMysqlSelect(!!input.groupByProduct));
|
|
84
|
+
* // ...
|
|
85
|
+
*
|
|
86
|
+
* return qb
|
|
87
|
+
* .take(take)
|
|
88
|
+
* .skip(skip)
|
|
89
|
+
* .getRawMany()
|
|
90
|
+
* .then(res => res.map(r => mapToSearchResult(r, ctx.channel.currencyCode)));
|
|
91
|
+
* }
|
|
92
|
+
*
|
|
93
|
+
* async getTotalCount(ctx: RequestContext, input: SearchInput, enabledOnly: boolean): Promise<number> {
|
|
94
|
+
* const innerQb = this.applyTermAndFilters(
|
|
95
|
+
* ctx,
|
|
96
|
+
* this.connection
|
|
97
|
+
* .getRepository(SearchIndexItem)
|
|
98
|
+
* .createQueryBuilder('si')
|
|
99
|
+
* .select(this.createMysqlSelect(!!input.groupByProduct)),
|
|
100
|
+
* input,
|
|
101
|
+
* );
|
|
102
|
+
* if (enabledOnly) {
|
|
103
|
+
* innerQb.andWhere('si.enabled = :enabled', { enabled: true });
|
|
104
|
+
* }
|
|
105
|
+
*
|
|
106
|
+
* const totalItemsQb = this.connection.rawConnection
|
|
107
|
+
* .createQueryBuilder()
|
|
108
|
+
* .select('COUNT(*) as total')
|
|
109
|
+
* .from(`(${innerQb.getQuery()})`, 'inner')
|
|
110
|
+
* .setParameters(innerQb.getParameters());
|
|
111
|
+
* return totalItemsQb.getRawOne().then(res => res.total);
|
|
112
|
+
* }
|
|
113
|
+
* }
|
|
114
|
+
* ```
|
|
115
|
+
*
|
|
116
|
+
* @since 1.6.0
|
|
117
|
+
* @default undefined
|
|
118
|
+
*/
|
|
119
|
+
searchStategy?: SearchStrategy;
|
|
36
120
|
}
|
|
37
121
|
/**
|
|
38
122
|
* Because the `inStock` field is opt-in based on the `indexStockStatus` option,
|
|
@@ -18,6 +18,14 @@ export declare type ExtendedListQueryOptions<T extends VendureEntity> = {
|
|
|
18
18
|
channelId?: ID;
|
|
19
19
|
where?: FindConditions<T>;
|
|
20
20
|
orderBy?: FindOneOptions<T>['order'];
|
|
21
|
+
/**
|
|
22
|
+
* @description
|
|
23
|
+
* Allows you to specify the alias used for the entity `T` in the generated SQL query.
|
|
24
|
+
* Defaults to the entity class name lower-cased, i.e. `ProductVariant` -> `'productvariant'`.
|
|
25
|
+
*
|
|
26
|
+
* @since 1.6.0
|
|
27
|
+
*/
|
|
28
|
+
entityAlias?: string;
|
|
21
29
|
/**
|
|
22
30
|
* @description
|
|
23
31
|
* When a RequestContext is passed, then the query will be
|
|
@@ -36,6 +44,7 @@ export declare type ExtendedListQueryOptions<T extends VendureEntity> = {
|
|
|
36
44
|
* not a column in the Order table, it exists on the Customer entity, and Order has a relation to Customer via
|
|
37
45
|
* `Order.customer`. Therefore we can define a customPropertyMap like this:
|
|
38
46
|
*
|
|
47
|
+
* @example
|
|
39
48
|
* ```GraphQL
|
|
40
49
|
* """
|
|
41
50
|
* Manually extend the filter & sort inputs to include the new
|
|
@@ -50,6 +59,7 @@ export declare type ExtendedListQueryOptions<T extends VendureEntity> = {
|
|
|
50
59
|
* }
|
|
51
60
|
* ```
|
|
52
61
|
*
|
|
62
|
+
* @example
|
|
53
63
|
* ```ts
|
|
54
64
|
* const qb = this.listQueryBuilder.build(Order, options, {
|
|
55
65
|
* relations: ['customer'],
|
|
@@ -150,6 +160,24 @@ export declare class ListQueryBuilder implements OnApplicationBootstrap {
|
|
|
150
160
|
*/
|
|
151
161
|
build<T extends VendureEntity>(entity: Type<T>, options?: ListQueryOptions<T>, extendedOptions?: ExtendedListQueryOptions<T>): SelectQueryBuilder<T>;
|
|
152
162
|
private parseTakeSkipParams;
|
|
163
|
+
/**
|
|
164
|
+
* @description
|
|
165
|
+
* As part of list optimization, we only join the minimum required relations which are needed to
|
|
166
|
+
* get the base list query. Other relations are then joined individually in the patched `getManyAndCount()`
|
|
167
|
+
* method.
|
|
168
|
+
*/
|
|
169
|
+
private getMinimumRequiredRelations;
|
|
170
|
+
private customPropertyIsBeingUsed;
|
|
171
|
+
/**
|
|
172
|
+
* @description
|
|
173
|
+
* This will monkey-patch the `getManyAndCount()` method in order to implement a more efficient
|
|
174
|
+
* parallel-query based approach to joining multiple relations. This is loosely based on the
|
|
175
|
+
* solution outlined here: https://github.com/typeorm/typeorm/issues/3857#issuecomment-633006643
|
|
176
|
+
*
|
|
177
|
+
* TODO: When upgrading to TypeORM v0.3+, this will likely become redundant due to the new
|
|
178
|
+
* `relationLoadStrategy` feature.
|
|
179
|
+
*/
|
|
180
|
+
private optimizeGetManyAndCountMethod;
|
|
153
181
|
/**
|
|
154
182
|
* If a customPropertyMap is provided, we need to take the path provided and convert it to the actual
|
|
155
183
|
* relation aliases being used by the SelectQueryBuilder.
|
|
@@ -117,24 +117,25 @@ let ListQueryBuilder = class ListQueryBuilder {
|
|
|
117
117
|
const repo = extendedOptions.ctx
|
|
118
118
|
? this.connection.getRepository(extendedOptions.ctx, entity)
|
|
119
119
|
: this.connection.getRepository(entity);
|
|
120
|
-
const qb = repo.createQueryBuilder(entity.name.toLowerCase());
|
|
120
|
+
const qb = repo.createQueryBuilder(extendedOptions.entityAlias || entity.name.toLowerCase());
|
|
121
|
+
const minimumRequiredRelations = this.getMinimumRequiredRelations(repo, options, extendedOptions);
|
|
121
122
|
FindOptionsUtils_1.FindOptionsUtils.applyFindManyOptionsOrConditionsToQueryBuilder(qb, {
|
|
122
|
-
relations:
|
|
123
|
+
relations: minimumRequiredRelations,
|
|
123
124
|
take,
|
|
124
125
|
skip,
|
|
125
126
|
where: extendedOptions.where || {},
|
|
126
127
|
});
|
|
127
128
|
// tslint:disable-next-line:no-non-null-assertion
|
|
128
129
|
FindOptionsUtils_1.FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias.metadata);
|
|
129
|
-
this.applyTranslationConditions(qb, entity, extendedOptions.ctx);
|
|
130
|
+
this.applyTranslationConditions(qb, entity, extendedOptions.ctx, extendedOptions.entityAlias);
|
|
130
131
|
// join the tables required by calculated columns
|
|
131
132
|
this.joinCalculatedColumnRelations(qb, entity, options);
|
|
132
|
-
const { customPropertyMap } = extendedOptions;
|
|
133
|
+
const { customPropertyMap, entityAlias } = extendedOptions;
|
|
133
134
|
if (customPropertyMap) {
|
|
134
|
-
this.normalizeCustomPropertyMap(customPropertyMap, qb);
|
|
135
|
+
this.normalizeCustomPropertyMap(customPropertyMap, options, qb);
|
|
135
136
|
}
|
|
136
|
-
const sort = parse_sort_params_1.parseSortParams(rawConnection, entity, Object.assign({}, options.sort, extendedOptions.orderBy), customPropertyMap);
|
|
137
|
-
const filter = parse_filter_params_1.parseFilterParams(rawConnection, entity, options.filter, customPropertyMap);
|
|
137
|
+
const sort = parse_sort_params_1.parseSortParams(rawConnection, entity, Object.assign({}, options.sort, extendedOptions.orderBy), customPropertyMap, entityAlias);
|
|
138
|
+
const filter = parse_filter_params_1.parseFilterParams(rawConnection, entity, options.filter, customPropertyMap, entityAlias);
|
|
138
139
|
if (filter.length) {
|
|
139
140
|
const filterOperator = (_c = options.filterOperator) !== null && _c !== void 0 ? _c : generated_types_1.LogicalOperator.AND;
|
|
140
141
|
if (filterOperator === generated_types_1.LogicalOperator.AND) {
|
|
@@ -151,12 +152,13 @@ let ListQueryBuilder = class ListQueryBuilder {
|
|
|
151
152
|
}
|
|
152
153
|
}
|
|
153
154
|
if (extendedOptions.channelId) {
|
|
154
|
-
const channelFilter = parse_channel_param_1.parseChannelParam(rawConnection, entity, extendedOptions.channelId);
|
|
155
|
+
const channelFilter = parse_channel_param_1.parseChannelParam(rawConnection, entity, extendedOptions.channelId, extendedOptions.entityAlias);
|
|
155
156
|
if (channelFilter) {
|
|
156
157
|
qb.andWhere(channelFilter.clause, channelFilter.parameters);
|
|
157
158
|
}
|
|
158
159
|
}
|
|
159
160
|
qb.orderBy(sort);
|
|
161
|
+
this.optimizeGetManyAndCountMethod(qb, repo, extendedOptions, minimumRequiredRelations);
|
|
160
162
|
return qb;
|
|
161
163
|
}
|
|
162
164
|
parseTakeSkipParams(apiType, options) {
|
|
@@ -175,24 +177,120 @@ let ListQueryBuilder = class ListQueryBuilder {
|
|
|
175
177
|
}
|
|
176
178
|
return { take, skip };
|
|
177
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* @description
|
|
182
|
+
* As part of list optimization, we only join the minimum required relations which are needed to
|
|
183
|
+
* get the base list query. Other relations are then joined individually in the patched `getManyAndCount()`
|
|
184
|
+
* method.
|
|
185
|
+
*/
|
|
186
|
+
getMinimumRequiredRelations(repository, options, extendedOptions) {
|
|
187
|
+
const requiredRelations = [];
|
|
188
|
+
if (extendedOptions.channelId) {
|
|
189
|
+
requiredRelations.push('channels');
|
|
190
|
+
}
|
|
191
|
+
if (extendedOptions.customPropertyMap) {
|
|
192
|
+
const metadata = repository.metadata;
|
|
193
|
+
for (const [property, path] of Object.entries(extendedOptions.customPropertyMap)) {
|
|
194
|
+
if (!this.customPropertyIsBeingUsed(property, options)) {
|
|
195
|
+
// If the custom property is not being used to filter or sort, then we don't need
|
|
196
|
+
// to join the associated relations.
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
const tableNameLower = path.split('.')[0];
|
|
200
|
+
const entityMetadata = repository.manager.connection.entityMetadatas.find(em => em.tableNameWithoutPrefix === tableNameLower);
|
|
201
|
+
if (entityMetadata) {
|
|
202
|
+
const relationMetadata = metadata.relations.find(r => r.type === entityMetadata.target);
|
|
203
|
+
if (relationMetadata) {
|
|
204
|
+
requiredRelations.push(relationMetadata.propertyName);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return unique_1.unique(requiredRelations);
|
|
210
|
+
}
|
|
211
|
+
customPropertyIsBeingUsed(property, options) {
|
|
212
|
+
var _a, _b;
|
|
213
|
+
return !!(((_a = options.sort) === null || _a === void 0 ? void 0 : _a[property]) || ((_b = options.filter) === null || _b === void 0 ? void 0 : _b[property]));
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* @description
|
|
217
|
+
* This will monkey-patch the `getManyAndCount()` method in order to implement a more efficient
|
|
218
|
+
* parallel-query based approach to joining multiple relations. This is loosely based on the
|
|
219
|
+
* solution outlined here: https://github.com/typeorm/typeorm/issues/3857#issuecomment-633006643
|
|
220
|
+
*
|
|
221
|
+
* TODO: When upgrading to TypeORM v0.3+, this will likely become redundant due to the new
|
|
222
|
+
* `relationLoadStrategy` feature.
|
|
223
|
+
*/
|
|
224
|
+
optimizeGetManyAndCountMethod(qb, repo, extendedOptions, alreadyJoined) {
|
|
225
|
+
const originalGetManyAndCount = qb.getManyAndCount.bind(qb);
|
|
226
|
+
qb.getManyAndCount = async () => {
|
|
227
|
+
var _a, _b, _c;
|
|
228
|
+
const relations = unique_1.unique((_a = extendedOptions.relations) !== null && _a !== void 0 ? _a : []);
|
|
229
|
+
const [entities, count] = await originalGetManyAndCount();
|
|
230
|
+
if (relations == null || alreadyJoined.sort().join() === (relations === null || relations === void 0 ? void 0 : relations.sort().join())) {
|
|
231
|
+
// No further relations need to be joined, so we just
|
|
232
|
+
// return the regular result.
|
|
233
|
+
return [entities, count];
|
|
234
|
+
}
|
|
235
|
+
const entityMap = new Map(entities.map(e => [e.id, e]));
|
|
236
|
+
const entitiesIds = entities.map(({ id }) => id);
|
|
237
|
+
const splitRelations = relations.map(r => r.split('.'));
|
|
238
|
+
const groupedRelationsMap = new Map();
|
|
239
|
+
for (const relationParts of splitRelations) {
|
|
240
|
+
const group = groupedRelationsMap.get(relationParts[0]);
|
|
241
|
+
if (group) {
|
|
242
|
+
group.push(relationParts.join('.'));
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
groupedRelationsMap.set(relationParts[0], [relationParts.join('.')]);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// If the extendedOptions includes relations that were already joined, then
|
|
249
|
+
// we ignore those now so as not to do the work of joining twice.
|
|
250
|
+
for (const tableName of alreadyJoined) {
|
|
251
|
+
if (((_b = groupedRelationsMap.get(tableName)) === null || _b === void 0 ? void 0 : _b.length) === 1) {
|
|
252
|
+
groupedRelationsMap.delete(tableName);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const entitiesIdsWithRelations = await Promise.all((_c = Array.from(groupedRelationsMap.values())) === null || _c === void 0 ? void 0 : _c.map(relationPaths => {
|
|
256
|
+
return repo
|
|
257
|
+
.findByIds(entitiesIds, {
|
|
258
|
+
select: ['id'],
|
|
259
|
+
relations: relationPaths,
|
|
260
|
+
loadEagerRelations: false,
|
|
261
|
+
})
|
|
262
|
+
.then(results => results.map(r => ({ relation: relationPaths[0], entity: r })));
|
|
263
|
+
})).then(all => all.flat());
|
|
264
|
+
for (const entry of entitiesIdsWithRelations) {
|
|
265
|
+
const finalEntity = entityMap.get(entry.entity.id);
|
|
266
|
+
if (finalEntity) {
|
|
267
|
+
finalEntity[entry.relation] = entry.entity[entry.relation];
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return [Array.from(entityMap.values()), count];
|
|
271
|
+
};
|
|
272
|
+
}
|
|
178
273
|
/**
|
|
179
274
|
* If a customPropertyMap is provided, we need to take the path provided and convert it to the actual
|
|
180
275
|
* relation aliases being used by the SelectQueryBuilder.
|
|
181
276
|
*
|
|
182
277
|
* This method mutates the customPropertyMap object.
|
|
183
278
|
*/
|
|
184
|
-
normalizeCustomPropertyMap(customPropertyMap, qb) {
|
|
185
|
-
for (const [
|
|
186
|
-
|
|
279
|
+
normalizeCustomPropertyMap(customPropertyMap, options, qb) {
|
|
280
|
+
for (const [property, value] of Object.entries(customPropertyMap)) {
|
|
281
|
+
if (!this.customPropertyIsBeingUsed(property, options)) {
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
const parts = customPropertyMap[property].split('.');
|
|
187
285
|
const entityPart = 2 <= parts.length ? parts[parts.length - 2] : qb.alias;
|
|
188
286
|
const columnPart = parts[parts.length - 1];
|
|
189
287
|
const relationAlias = qb.expressionMap.aliases.find(a => a.metadata.tableNameWithoutPrefix === entityPart);
|
|
190
288
|
if (relationAlias) {
|
|
191
|
-
customPropertyMap[
|
|
289
|
+
customPropertyMap[property] = `${relationAlias.name}.${columnPart}`;
|
|
192
290
|
}
|
|
193
291
|
else {
|
|
194
|
-
vendure_logger_1.Logger.error(`The customPropertyMap entry "${
|
|
195
|
-
delete customPropertyMap[
|
|
292
|
+
vendure_logger_1.Logger.error(`The customPropertyMap entry "${property}:${value}" could not be resolved to a related table`);
|
|
293
|
+
delete customPropertyMap[property];
|
|
196
294
|
}
|
|
197
295
|
}
|
|
198
296
|
}
|
|
@@ -233,14 +331,17 @@ let ListQueryBuilder = class ListQueryBuilder {
|
|
|
233
331
|
* the joined translation relations. This method applies a simple "WHERE" on the languageCode
|
|
234
332
|
* in the case of the default language, otherwise we use a more complex.
|
|
235
333
|
*/
|
|
236
|
-
applyTranslationConditions(qb, entity, ctx) {
|
|
334
|
+
applyTranslationConditions(qb, entity, ctx, entityAlias) {
|
|
237
335
|
const languageCode = (ctx === null || ctx === void 0 ? void 0 : ctx.languageCode) || this.configService.defaultLanguageCode;
|
|
238
|
-
const { columns, translationColumns, alias } = connection_utils_1.getColumnMetadata(this.connection.rawConnection, entity);
|
|
336
|
+
const { columns, translationColumns, alias: defaultAlias, } = connection_utils_1.getColumnMetadata(this.connection.rawConnection, entity);
|
|
337
|
+
const alias = entityAlias !== null && entityAlias !== void 0 ? entityAlias : defaultAlias;
|
|
239
338
|
if (translationColumns.length) {
|
|
240
339
|
const translationsAlias = qb.connection.namingStrategy.eagerJoinRelationAlias(alias, 'translations');
|
|
241
340
|
qb.andWhere(new typeorm_1.Brackets(qb1 => {
|
|
341
|
+
var _a;
|
|
242
342
|
qb1.where(`${translationsAlias}.languageCode = :languageCode`, { languageCode });
|
|
243
|
-
|
|
343
|
+
const defaultLanguageCode = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.channel.defaultLanguageCode) !== null && _a !== void 0 ? _a : this.configService.defaultLanguageCode;
|
|
344
|
+
if (languageCode !== defaultLanguageCode) {
|
|
244
345
|
// If the current languageCode is not the default, then we create a more
|
|
245
346
|
// complex WHERE clause to allow us to use the non-default translations and
|
|
246
347
|
// fall back to the default language if no translation exists.
|