storemw-core-api 1.0.171 → 1.0.173

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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const child_process_1 = require("child_process");
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const dotenv_1 = __importDefault(require("dotenv"));
10
+ // read --env flag from args, default to development
11
+ const args = process.argv.slice(2);
12
+ const envFlag = args.find(a => a.startsWith('--env='));
13
+ const envName = envFlag ? envFlag.split('=')[1] : 'development';
14
+ const envFile = path_1.default.resolve(process.cwd(), `.env.${envName}`);
15
+ if (!fs_1.default.existsSync(envFile)) {
16
+ console.error(`❌ ${envFile} not found`);
17
+ process.exit(1);
18
+ }
19
+ dotenv_1.default.config({ path: envFile });
20
+ if (!process.env.DATABASE_URL) {
21
+ console.error(`❌ DATABASE_URL is not set in .env.${envName}`);
22
+ process.exit(1);
23
+ }
24
+ console.log(`🔧 Using environment: ${envName}`);
25
+ console.log(`🔧 Loaded: .env.${envName}`);
26
+ const corePrismaSchema = path_1.default.resolve(__dirname, '../../prisma/schema.prisma');
27
+ const consumerMigrationsDir = path_1.default.resolve(process.cwd(), 'prisma/migrations');
28
+ const consumerSchemaDir = path_1.default.resolve(process.cwd(), 'prisma');
29
+ // 1. ensure consumer prisma folder exists
30
+ fs_1.default.mkdirSync(consumerSchemaDir, { recursive: true });
31
+ fs_1.default.mkdirSync(consumerMigrationsDir, { recursive: true });
32
+ // 2. copy core schema.prisma into consumer prisma folder
33
+ const tempSchema = path_1.default.resolve(consumerSchemaDir, 'schema.prisma');
34
+ fs_1.default.copyFileSync(corePrismaSchema, tempSchema);
35
+ // 3. run prisma migrate dev
36
+ (0, child_process_1.execSync)('npx prisma migrate dev --name init_core', {
37
+ stdio: 'inherit',
38
+ cwd: process.cwd(),
39
+ env: { ...process.env }
40
+ });
41
+ console.log('✅ Core migration generated successfully');
42
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/scripts/migrate.ts"],"names":[],"mappings":";;;;;AAAA,iDAAwC;AACxC,gDAAuB;AACvB,4CAAmB;AACnB,oDAA2B;AAE3B,oDAAoD;AACpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;AACtD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;AAE/D,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,OAAO,EAAE,CAAC,CAAA;AAE9D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,YAAY,CAAC,CAAA;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAEhC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAA;IAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAA;AAC/C,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAA;AAEzC,MAAM,gBAAgB,GAAG,cAAI,CAAC,OAAO,CACjC,SAAS,EAAE,4BAA4B,CAC1C,CAAA;AAED,MAAM,qBAAqB,GAAG,cAAI,CAAC,OAAO,CACtC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CACrC,CAAA;AAED,MAAM,iBAAiB,GAAG,cAAI,CAAC,OAAO,CAClC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAC1B,CAAA;AAED,0CAA0C;AAC1C,YAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACpD,YAAE,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAExD,yDAAyD;AACzD,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;AACnE,YAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAA;AAE7C,4BAA4B;AAC5B,IAAA,wBAAQ,EAAC,yCAAyC,EAAE;IAChD,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAClB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;CAC1B,CAAC,CAAA;AAEF,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA","sourcesContent":["import { execSync } from 'child_process'\nimport path from 'path'\nimport fs from 'fs'\nimport dotenv from 'dotenv'\n\n// read --env flag from args, default to development\nconst args = process.argv.slice(2)\nconst envFlag = args.find(a => a.startsWith('--env='))\nconst envName = envFlag ? envFlag.split('=')[1] : 'development'\n\nconst envFile = path.resolve(process.cwd(), `.env.${envName}`)\n\nif (!fs.existsSync(envFile)) {\n console.error(`❌ ${envFile} not found`)\n process.exit(1)\n}\n\ndotenv.config({ path: envFile })\n\nif (!process.env.DATABASE_URL) {\n console.error(`❌ DATABASE_URL is not set in .env.${envName}`)\n process.exit(1)\n}\n\nconsole.log(`🔧 Using environment: ${envName}`)\nconsole.log(`🔧 Loaded: .env.${envName}`)\n\nconst corePrismaSchema = path.resolve(\n __dirname, '../../prisma/schema.prisma'\n)\n\nconst consumerMigrationsDir = path.resolve(\n process.cwd(), 'prisma/migrations'\n)\n\nconst consumerSchemaDir = path.resolve(\n process.cwd(), 'prisma'\n)\n\n// 1. ensure consumer prisma folder exists\nfs.mkdirSync(consumerSchemaDir, { recursive: true })\nfs.mkdirSync(consumerMigrationsDir, { recursive: true })\n\n// 2. copy core schema.prisma into consumer prisma folder\nconst tempSchema = path.resolve(consumerSchemaDir, 'schema.prisma')\nfs.copyFileSync(corePrismaSchema, tempSchema)\n\n// 3. run prisma migrate dev\nexecSync('npx prisma migrate dev --name init_core', {\n stdio: 'inherit',\n cwd: process.cwd(),\n env: { ...process.env }\n})\n\nconsole.log('✅ Core migration generated successfully')"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const child_process_1 = require("child_process");
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const corePrismaSchema = path_1.default.resolve(__dirname, '../../prisma/schema.prisma');
10
+ const migrationDir = path_1.default.resolve(process.cwd(), 'prisma/migrations');
11
+ // generate datetime string e.g. 20240101_120000
12
+ const now = new Date();
13
+ const datetime = now.getFullYear().toString() +
14
+ String(now.getMonth() + 1).padStart(2, '0') +
15
+ String(now.getDate()).padStart(2, '0') +
16
+ '_' +
17
+ String(now.getHours()).padStart(2, '0') +
18
+ String(now.getMinutes()).padStart(2, '0') +
19
+ String(now.getSeconds()).padStart(2, '0');
20
+ const fileName = `migration_core-${datetime}.sql`;
21
+ const migrationFile = path_1.default.resolve(migrationDir, fileName);
22
+ // 1. create migrations folder
23
+ fs_1.default.mkdirSync(migrationDir, { recursive: true });
24
+ // 2. generate SQL from core schema — no DB needed
25
+ (0, child_process_1.execSync)(`npx prisma migrate diff --from-empty --to-schema-datamodel "${corePrismaSchema}" --script > "${migrationFile}"`, {
26
+ stdio: 'inherit',
27
+ cwd: process.cwd(),
28
+ env: {
29
+ ...process.env,
30
+ DATABASE_URL: 'postgresql://dummy:dummy@localhost:5432/dummy'
31
+ }
32
+ });
33
+ console.log(`✅ Core migration SQL generated at:`);
34
+ console.log(` prisma/migrations/${fileName}`);
35
+ console.log('');
36
+ console.log('👉 Next steps:');
37
+ console.log(' 1. Run the SQL against your database');
38
+ console.log(' 2. Add your own tables');
39
+ console.log(' 3. Run: npx prisma db pull');
40
+ console.log(' 4. Run: npx prisma generate');
41
+ //# sourceMappingURL=migrate_core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate_core.js","sourceRoot":"","sources":["../../src/scripts/migrate_core.ts"],"names":[],"mappings":";;;;;AAAA,iDAAwC;AACxC,gDAAuB;AACvB,4CAAmB;AAEnB,MAAM,gBAAgB,GAAG,cAAI,CAAC,OAAO,CACjC,SAAS,EAAE,4BAA4B,CAC1C,CAAA;AAED,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAC7B,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CACrC,CAAA;AAED,gDAAgD;AAChD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;AACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACzC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAC3C,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACtC,GAAG;IACH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAE7C,MAAM,QAAQ,GAAG,kBAAkB,QAAQ,MAAM,CAAA;AACjD,MAAM,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AAE1D,8BAA8B;AAC9B,YAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAE/C,kDAAkD;AAClD,IAAA,wBAAQ,EACJ,+DAA+D,gBAAgB,iBAAiB,aAAa,GAAG,EAChH;IACI,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAClB,GAAG,EAAE;QACD,GAAG,OAAO,CAAC,GAAG;QACd,YAAY,EAAE,+CAA+C;KAChE;CACJ,CACJ,CAAA;AAED,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;AACjD,OAAO,CAAC,GAAG,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAA;AAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACf,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAC7B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;AACtD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;AACxC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;AAC5C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA","sourcesContent":["import { execSync } from 'child_process'\nimport path from 'path'\nimport fs from 'fs'\n\nconst corePrismaSchema = path.resolve(\n __dirname, '../../prisma/schema.prisma'\n)\n\nconst migrationDir = path.resolve(\n process.cwd(), 'prisma/migrations'\n)\n\n// generate datetime string e.g. 20240101_120000\nconst now = new Date()\nconst datetime = now.getFullYear().toString() +\n String(now.getMonth() + 1).padStart(2, '0') +\n String(now.getDate()).padStart(2, '0') +\n '_' +\n String(now.getHours()).padStart(2, '0') +\n String(now.getMinutes()).padStart(2, '0') +\n String(now.getSeconds()).padStart(2, '0')\n\nconst fileName = `migration_core-${datetime}.sql`\nconst migrationFile = path.resolve(migrationDir, fileName)\n\n// 1. create migrations folder\nfs.mkdirSync(migrationDir, { recursive: true })\n\n// 2. generate SQL from core schema — no DB needed\nexecSync(\n `npx prisma migrate diff --from-empty --to-schema-datamodel \"${corePrismaSchema}\" --script > \"${migrationFile}\"`,\n {\n stdio: 'inherit',\n cwd: process.cwd(),\n env: {\n ...process.env,\n DATABASE_URL: 'postgresql://dummy:dummy@localhost:5432/dummy'\n }\n }\n)\n\nconsole.log(`✅ Core migration SQL generated at:`)\nconsole.log(` prisma/migrations/${fileName}`)\nconsole.log('')\nconsole.log('👉 Next steps:')\nconsole.log(' 1. Run the SQL against your database')\nconsole.log(' 2. Add your own tables')\nconsole.log(' 3. Run: npx prisma db pull')\nconsole.log(' 4. Run: npx prisma generate')"]}
@@ -122,6 +122,17 @@ const ItemProductService = (props) => {
122
122
  const injectionFieldService = (0, services_1.InjectionFieldService)({ ...rest, injectionFieldType: "item" });
123
123
  const productModel = (0, models_1.ProductModel)({ ...rest });
124
124
  const createItemProduct = async ({ data }) => {
125
+ // validate product code
126
+ const validateCode = await productModel.get({
127
+ where: {
128
+ [`${models_1.ModelProductFields.product_code}`]: data.product.productCode,
129
+ [`${models_1.ModelProductFields.accountid}`]: rest.accountId,
130
+ [`${models_1.ModelProductFields.isdelete}`]: false,
131
+ }
132
+ });
133
+ if (validateCode?.product_id) {
134
+ throw new Error(`Product code existed: ${validateCode.product_code} (${validateCode.product_id})`);
135
+ }
125
136
  const _data = getCreatePayload(data);
126
137
  if (!_data) {
127
138
  throw new Error(`Invalid create product payload: ${JSON.stringify(_data)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"ItemProductService.js","sourceRoot":"","sources":["../../../src/services/item/ItemProductService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n ProductModel,\n ModelProductFields,\n ModelCategoryFields,\n ModelBrandFields,\n ModelUomFields,\n ModelItemFields,\n ModelFileFields,\n} from \"@/models\";\n\nimport { InjectionFieldService } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport type ItemType = \"product\"\n\nexport const productDataTypes = {\n productInjectionFields: \"product_injection_fields\",\n itemInjectionFields: \"item_injection_fields\",\n allCategory: \"all_category\",\n allSupplier: \"all_supplier\",\n file: \"file\",\n product: \"product\"\n}\n\nexport type ItemProductDataType = keyof typeof productDataTypes;\n\nexport type ItemProductServiceProps = DefaultServiceProps & {};\n\nexport type ItemProductGetProps = QueryGet & {\n id: number,\n datatypes: ItemProductDataType[]\n};\n\nexport type ItemProductListProps = QueryList & {\n datatypes: ItemProductDataType[]\n};\n\nexport type ItemProductRemoveProps = {\n productIds: BigInt[]\n};\n\nexport type ItemProductCreateProps = {\n data:\n // product\n {\n product: {\n brandId: number\n categoryId: number\n productName: string\n model: string\n productCode: string\n description: string\n summary: string\n status: Boolean\n }\n }\n}\n\nexport type ItemProductUpdateProps = {\n productId: number,\n data:\n // product\n {\n product: {\n brandId: number\n categoryId: number\n productName: string\n model: string\n productCode: string\n description: string\n summary: string\n status: Boolean\n }\n }\n}\n\nconst getCreatePayload = (data: ItemProductCreateProps[\"data\"]) => {\n\n if (\"product\" in data) {\n\n return {\n [`${ModelProductFields.brand_id}`]: data.product.brandId,\n [`${ModelProductFields.category_id}`]: data.product.categoryId,\n [`${ModelProductFields.description}`]: data.product.description,\n [`${ModelProductFields.product_name}`]: data.product.productName,\n [`${ModelProductFields.model}`]: data.product.model,\n [`${ModelProductFields.product_code}`]: data.product.productCode,\n [`${ModelProductFields.summary}`]: data.product.summary,\n [`${ModelProductFields.status}`]: Boolean(data.product.status)\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: ItemProductUpdateProps[\"data\"]) => {\n\n if (\"product\" in data) {\n\n return {\n [`${ModelProductFields.brand_id}`]: data.product.brandId,\n [`${ModelProductFields.category_id}`]: data.product.categoryId,\n [`${ModelProductFields.description}`]: data.product.description,\n [`${ModelProductFields.product_name}`]: data.product.productName,\n [`${ModelProductFields.model}`]: data.product.model,\n [`${ModelProductFields.product_code}`]: data.product.productCode,\n [`${ModelProductFields.summary}`]: data.product.summary,\n [`${ModelProductFields.status}`]: Boolean(data.product.status)\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`prd.${ModelProductFields.product_id}`]: \"product_id\",\n [`prd.${ModelProductFields.brand_id}`]: \"brand_id\",\n [`prd.${ModelProductFields.category_id}`]: \"category_id\",\n [`prd.${ModelProductFields.description}`]: \"description\",\n [`prd.${ModelProductFields.product_name}`]: \"product_name\",\n [`prd.${ModelProductFields.model}`]: \"model\",\n [`prd.${ModelProductFields.product_code}`]: \"product_code\",\n [`prd.${ModelProductFields.status}`]: \"status\",\n [`prd.${ModelProductFields.summary}`]: \"summary\",\n}\n\nlet itemSqlSelect = {\n [`catg.${ModelCategoryFields.category_name}`]: \"category_name\",\n [`catg.${ModelCategoryFields.status}`]: \"category_status\",\n [`catg.${ModelCategoryFields.description}`]: \"category_description\",\n [`catg.${ModelCategoryFields.parent_category_id}`]: \"parent_category_id\",\n [`brd.${ModelBrandFields.brand_name}`]: \"brand_name\",\n [`brd.${ModelBrandFields.status}`]: \"brand_status\",\n [`brd.${ModelBrandFields.description}`]: \"brand_description\"\n}\n\nconst getItemsSqlSelect = async (datatypes: any, injectionFieldService: any) => {\n\n let iif2Select = ``\n\n if (datatypes.includes(productDataTypes.itemInjectionFields)) {\n\n const currentActiveFields = await injectionFieldService.listActiveInjectionFields(\"item\", \"item\")\n\n let bbb = currentActiveFields.map((col: any) => `'inf_${col}', iif2.${col}`).join(\", \")\n\n iif2Select = bbb.length > 0 ? `, ${bbb}` : ``\n\n }\n\n let itemsSqlSelect = {\n [`COALESCE(\n JSON_AGG(\n DISTINCT JSONB_BUILD_OBJECT(\n '${ModelItemFields.item_id}', itm.item_id,\n '${ModelItemFields.cbm}', itm.cbm,\n '${ModelItemFields.item_code}', itm.item_code,\n '${ModelItemFields.item_cost}', itm.item_cost,\n '${ModelItemFields.dimension_height}', itm.dimension_height::float,\n '${ModelItemFields.dimension_length}', itm.dimension_length::float,\n '${ModelItemFields.dimension_width}', itm.dimension_width::float,\n '${ModelItemFields.floor_price}', itm.floor_price::float,\n '${ModelItemFields.gross_weight}', itm.gross_weight::float,\n '${ModelItemFields.is_package}', itm.is_package,\n '${ModelItemFields.item_description}', itm.item_description,\n '${ModelItemFields.net_weight}', itm.net_weight::float,\n '${ModelItemFields.remark}', itm.remark,\n '${ModelItemFields.status}', itm.status,\n '${ModelItemFields.summary}', itm.summary,\n '${ModelItemFields.uom_id}', itm.uom_id,\n '${ModelItemFields.uom_name}', itm.uom_name,\n '${ModelItemFields.uom_code}', itm.uom_code,\n '${ModelItemFields.item_price}', itm.item_price::float,\n '${ModelItemFields.balance_quantity}', itm.balance_quantity::float,\n /*'uom_description', uom.${ModelUomFields.description},\n 'uom_decimal_digit', uom.${ModelUomFields.decimal_digit}::float,\n 'uom_status', uom.${ModelUomFields.status},\n 'uom_metric_type', uom.${ModelUomFields.metric_type},\n 'uom_metric_type_display_name', uom.${ModelUomFields.metric_type_display_name},*/\n '${ModelItemFields.volume_weight}', itm.volume_weight\n ${iif2Select}\n )\n ) FILTER (WHERE itm.item_id IS NOT NULL AND itm.isdelete = false AND itm.istrash = false),\n '[]'\n )`]: \"items\"\n }\n\n return itemsSqlSelect\n}\n\nlet defaultSqlSelect = {\n [`prd.${ModelProductFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`prd.${ModelProductFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`prd.${ModelProductFields.isdelete}`]: \"isdelete\",\n [`prd.${ModelProductFields.istrash}`]: \"istrash\",\n [`prd.${ModelProductFields.accountid}`]: \"accountid\",\n}\n\nexport const ItemProductService = (props: ItemProductServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"item\" })\n\n const productModel = ProductModel({ ...rest })\n\n const createItemProduct = async ({ data }: ItemProductCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create product payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await productModel.create({ data: _data })\n\n return response\n }\n\n const updateItemProduct = async ({ productId, data }: ItemProductUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update product payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await productModel.update({ where: { [`${ModelProductFields.product_id}`]: productId }, data: _data })\n\n return response\n }\n\n const getItemProduct = async ({ id, datatypes = [] }: ItemProductGetProps) => {\n\n let { data } = await listItemProducts({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelProductFields.product_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelProductFields.product_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listItemProducts = async ({\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = []\n }: ItemProductListProps) => {\n\n let itemsSqlSelect = await getItemsSqlSelect(datatypes, injectionFieldService)\n\n let data = []\n\n let sqlSelect = [\n `COUNT(*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, itemSqlSelect),\n buildSqlSelect(``, itemsSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"prd\", \"categories\", \"catg\", [\"prd.category_id = catg.category_id\", \"catg.isdelete = false\", \"catg.istrash = false\"]),\n buildSqlRelation(\"left\", \"prd\", \"brands\", \"brd\", [\"prd.brand_id = brd.brand_id\", \"brd.isdelete = false\", \"brd.istrash = false\"]),\n buildSqlRelation(\"left\", \"prd\", \"items\", \"itm\", [\"prd.product_id = itm.product_id\", \"itm.isdelete = false\", \"itm.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"uoms\", \"uom\", [\"itm.uom_id = uom.uom_id\", \"uom.isdelete = false\", \"uom.istrash = false\"]),\n buildSqlRelation(\"left\", \"prd\", \"users\", \"creator\", [\"prd.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"prd\", \"users\", \"updater\", [\"prd.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(itemSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...itemSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(productDataTypes.productInjectionFields)) {\n\n let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"item\", \"product\")\n\n const productInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"iif\", activeInjectionFields)\n\n filterColumns = { ...filterColumns, ...productInjectionFieldSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, productInjectionFieldSqlSelect)]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"prd\", \"item_injection_fields\", \"iif\", [\"prd.product_id = iif.product_id\", \"iif.field_ref = 'item'\", \"iif.field_module = 'product'\", \"iif.isdelete = false\", \"iif.istrash = false\"])]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(productInjectionFieldSqlSelect)]\n }\n\n // if (datatypes.includes(productDataTypes.itemInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"item\", \"item\")\n\n // const productItemInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"iif2\", activeInjectionFields)\n\n // filterColumns = { ...filterColumns, ...productItemInjectionFieldSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, productItemInjectionFieldSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"itm\", \"item_injection_fields\", \"iif2\", [\"itm.item_id = iif2.item_id\", \"iif2.field_ref = 'item'\", \"iif2.field_module = 'item'\", \"iif2.isdelete = false\", \"iif2.istrash = false\"])]\n // // sqlGroupBy = [...sqlGroupBy, ...Object.keys(itemInjectionFieldSqlSelect)]\n // }\n\n // if (datatypes.includes(productDataTypes.location)) {\n\n // let locationSqlSelect = {\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelLocationFields.location_id}', location.location_id,\n // '${ModelLocationFields.location_code}', location.location_code,\n // '${ModelLocationFields.location_name}', location.location_name,\n // '${ModelLocationFields.location_type}', location.location_type,\n // '${ModelLocationFields.address_1}', location.address_1,\n // '${ModelLocationFields.address_2}', location.address_2,\n // '${ModelLocationFields.area}', location.area,\n // '${ModelLocationFields.area_id}', location.area_id,\n // '${ModelLocationFields.country_id}', location.country_id,\n // '${ModelLocationFields.state_id}', location.state_id,\n // '${ModelLocationFields.postcode}', location.postcode,\n // '${ModelLocationFields.is_default}', location.is_default,\n // '${ModelLocationFields.person_contact}', location.person_contact,\n // '${ModelLocationFields.person_name}', location.person_contact,\n // '${ModelLocationFields.person_email}', location.person_email,\n // '${ModelLocationFields.isdelete}', location.isdelete,\n // '${ModelLocationFields.istrash}', location.istrash\n // )\n // ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n // '[]'\n // )`]: \"locations\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"prd.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n // }\n\n if (datatypes.includes(productDataTypes.file)) {\n\n let fileSqlSelect = {\n [`COALESCE(\n JSON_AGG(\n DISTINCT JSONB_BUILD_OBJECT(\n '${ModelFileFields.file_id}', files.file_id,\n '${ModelFileFields.asset_url}', files.asset_url,\n '${ModelFileFields.asset_path}', files.asset_path,\n '${ModelFileFields.batch_code}', files.batch_code,\n '${ModelFileFields.content_type}', files.content_type,\n '${ModelFileFields.description}', files.description,\n '${ModelFileFields.field_module}', files.field_module,\n '${ModelFileFields.field_ref}', files.field_ref,\n '${ModelFileFields.file_compress_format}', files.file_compress_format,\n '${ModelFileFields.file_label}', files.file_label,\n '${ModelFileFields.file_name}', files.file_name,\n '${ModelFileFields.file_size_bytes}', files.file_size_bytes,\n '${ModelFileFields.foldername_day}', files.foldername_day,\n '${ModelFileFields.foldername_month}', files.foldername_month,\n '${ModelFileFields.foldername_year}', files.foldername_year,\n '${ModelFileFields.input_file_name}', files.input_file_name,\n '${ModelFileFields.input_file_size_bytes}', files.input_file_size_bytes,\n '${ModelFileFields.input_type}', files.input_type,\n '${ModelFileFields.refer_id_1}', files.refer_id_1,\n '${ModelFileFields.refer_id_2}', files.refer_id_2,\n '${ModelFileFields.remark}', files.remark,\n '${ModelFileFields.storage_provider_name}', files.storage_provider_name,\n '${ModelFileFields.tag_name}', files.tag_name\n )\n ) FILTER (WHERE files.file_id IS NOT NULL AND files.isdelete = false AND files.istrash = false), \n '[]'\n )`]: \"files\"\n }\n\n // filterColumns = { ...filterColumns, ...fileSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, fileSqlSelect)]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"prd\", \"files\", \"files\", [\"prd.product_id = files.refer_id_1\", \"files.field_ref = 'item'\", \"files.field_module = 'product'\", \"files.isdelete = false\", \"files.istrash = false\"])]\n\n }\n\n // if (datatypes.includes(customerDataTypes.branchUserCount)) {\n\n // let branchUserCountSqlSelect = {\n // [`COUNT(DISTINCT brnusrcount.${ModelBranchUserFields.branch_user_id})::INT`]: \"branch_user_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...branchUserCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, branchUserCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branch_users\", \"brnusrcount\", [\"prd.user_id = brnusrcount.user_id\", \"brnusrcount.isdelete = false\", \"brnusrcount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `prd.isdelete = false`,\n `prd.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"products\",\n mainAlias: \"prd\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n data = await productModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeProducts = async ({ productIds }: ItemProductRemoveProps) => {\n\n if (!productIds.length) throwError('productIds is required');\n\n const response = await productModel.remove({ where: { [`${ModelProductFields.product_id}`]: { in: productIds } } });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(productDataTypes);\n }\n\n return {\n createItemProduct,\n updateItemProduct,\n getItemProduct,\n listItemProducts,\n removeProducts,\n getDataTypes\n }\n\n}\n\n"]}
1
+ {"version":3,"file":"ItemProductService.js","sourceRoot":"","sources":["../../../src/services/item/ItemProductService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n ProductModel,\n ModelProductFields,\n ModelCategoryFields,\n ModelBrandFields,\n ModelUomFields,\n ModelItemFields,\n ModelFileFields,\n} from \"@/models\";\n\nimport { InjectionFieldService } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nexport type ItemType = \"product\"\n\nexport const productDataTypes = {\n productInjectionFields: \"product_injection_fields\",\n itemInjectionFields: \"item_injection_fields\",\n allCategory: \"all_category\",\n allSupplier: \"all_supplier\",\n file: \"file\",\n product: \"product\"\n}\n\nexport type ItemProductDataType = keyof typeof productDataTypes;\n\nexport type ItemProductServiceProps = DefaultServiceProps & {};\n\nexport type ItemProductGetProps = QueryGet & {\n id: number,\n datatypes: ItemProductDataType[]\n};\n\nexport type ItemProductListProps = QueryList & {\n datatypes: ItemProductDataType[]\n};\n\nexport type ItemProductRemoveProps = {\n productIds: BigInt[]\n};\n\nexport type ItemProductCreateProps = {\n data:\n // product\n {\n product: {\n brandId: number\n categoryId: number\n productName: string\n model: string\n productCode: string\n description: string\n summary: string\n status: Boolean\n }\n }\n}\n\nexport type ItemProductUpdateProps = {\n productId: number,\n data:\n // product\n {\n product: {\n brandId: number\n categoryId: number\n productName: string\n model: string\n productCode: string\n description: string\n summary: string\n status: Boolean\n }\n }\n}\n\nconst getCreatePayload = (data: ItemProductCreateProps[\"data\"]) => {\n\n if (\"product\" in data) {\n\n return {\n [`${ModelProductFields.brand_id}`]: data.product.brandId,\n [`${ModelProductFields.category_id}`]: data.product.categoryId,\n [`${ModelProductFields.description}`]: data.product.description,\n [`${ModelProductFields.product_name}`]: data.product.productName,\n [`${ModelProductFields.model}`]: data.product.model,\n [`${ModelProductFields.product_code}`]: data.product.productCode,\n [`${ModelProductFields.summary}`]: data.product.summary,\n [`${ModelProductFields.status}`]: Boolean(data.product.status)\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: ItemProductUpdateProps[\"data\"]) => {\n\n if (\"product\" in data) {\n\n return {\n [`${ModelProductFields.brand_id}`]: data.product.brandId,\n [`${ModelProductFields.category_id}`]: data.product.categoryId,\n [`${ModelProductFields.description}`]: data.product.description,\n [`${ModelProductFields.product_name}`]: data.product.productName,\n [`${ModelProductFields.model}`]: data.product.model,\n [`${ModelProductFields.product_code}`]: data.product.productCode,\n [`${ModelProductFields.summary}`]: data.product.summary,\n [`${ModelProductFields.status}`]: Boolean(data.product.status)\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`prd.${ModelProductFields.product_id}`]: \"product_id\",\n [`prd.${ModelProductFields.brand_id}`]: \"brand_id\",\n [`prd.${ModelProductFields.category_id}`]: \"category_id\",\n [`prd.${ModelProductFields.description}`]: \"description\",\n [`prd.${ModelProductFields.product_name}`]: \"product_name\",\n [`prd.${ModelProductFields.model}`]: \"model\",\n [`prd.${ModelProductFields.product_code}`]: \"product_code\",\n [`prd.${ModelProductFields.status}`]: \"status\",\n [`prd.${ModelProductFields.summary}`]: \"summary\",\n}\n\nlet itemSqlSelect = {\n [`catg.${ModelCategoryFields.category_name}`]: \"category_name\",\n [`catg.${ModelCategoryFields.status}`]: \"category_status\",\n [`catg.${ModelCategoryFields.description}`]: \"category_description\",\n [`catg.${ModelCategoryFields.parent_category_id}`]: \"parent_category_id\",\n [`brd.${ModelBrandFields.brand_name}`]: \"brand_name\",\n [`brd.${ModelBrandFields.status}`]: \"brand_status\",\n [`brd.${ModelBrandFields.description}`]: \"brand_description\"\n}\n\nconst getItemsSqlSelect = async (datatypes: any, injectionFieldService: any) => {\n\n let iif2Select = ``\n\n if (datatypes.includes(productDataTypes.itemInjectionFields)) {\n\n const currentActiveFields = await injectionFieldService.listActiveInjectionFields(\"item\", \"item\")\n\n let bbb = currentActiveFields.map((col: any) => `'inf_${col}', iif2.${col}`).join(\", \")\n\n iif2Select = bbb.length > 0 ? `, ${bbb}` : ``\n\n }\n\n let itemsSqlSelect = {\n [`COALESCE(\n JSON_AGG(\n DISTINCT JSONB_BUILD_OBJECT(\n '${ModelItemFields.item_id}', itm.item_id,\n '${ModelItemFields.cbm}', itm.cbm,\n '${ModelItemFields.item_code}', itm.item_code,\n '${ModelItemFields.item_cost}', itm.item_cost,\n '${ModelItemFields.dimension_height}', itm.dimension_height::float,\n '${ModelItemFields.dimension_length}', itm.dimension_length::float,\n '${ModelItemFields.dimension_width}', itm.dimension_width::float,\n '${ModelItemFields.floor_price}', itm.floor_price::float,\n '${ModelItemFields.gross_weight}', itm.gross_weight::float,\n '${ModelItemFields.is_package}', itm.is_package,\n '${ModelItemFields.item_description}', itm.item_description,\n '${ModelItemFields.net_weight}', itm.net_weight::float,\n '${ModelItemFields.remark}', itm.remark,\n '${ModelItemFields.status}', itm.status,\n '${ModelItemFields.summary}', itm.summary,\n '${ModelItemFields.uom_id}', itm.uom_id,\n '${ModelItemFields.uom_name}', itm.uom_name,\n '${ModelItemFields.uom_code}', itm.uom_code,\n '${ModelItemFields.item_price}', itm.item_price::float,\n '${ModelItemFields.balance_quantity}', itm.balance_quantity::float,\n /*'uom_description', uom.${ModelUomFields.description},\n 'uom_decimal_digit', uom.${ModelUomFields.decimal_digit}::float,\n 'uom_status', uom.${ModelUomFields.status},\n 'uom_metric_type', uom.${ModelUomFields.metric_type},\n 'uom_metric_type_display_name', uom.${ModelUomFields.metric_type_display_name},*/\n '${ModelItemFields.volume_weight}', itm.volume_weight\n ${iif2Select}\n )\n ) FILTER (WHERE itm.item_id IS NOT NULL AND itm.isdelete = false AND itm.istrash = false),\n '[]'\n )`]: \"items\"\n }\n\n return itemsSqlSelect\n}\n\nlet defaultSqlSelect = {\n [`prd.${ModelProductFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`prd.${ModelProductFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`prd.${ModelProductFields.isdelete}`]: \"isdelete\",\n [`prd.${ModelProductFields.istrash}`]: \"istrash\",\n [`prd.${ModelProductFields.accountid}`]: \"accountid\",\n}\n\nexport const ItemProductService = (props: ItemProductServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"item\" })\n\n const productModel = ProductModel({ ...rest })\n\n const createItemProduct = async ({ data }: ItemProductCreateProps) => {\n\n // validate product code\n const validateCode = await productModel.get({\n where: {\n [`${ModelProductFields.product_code}`]: data.product.productCode,\n [`${ModelProductFields.accountid}`]: rest.accountId,\n [`${ModelProductFields.isdelete}`]: false,\n }\n })\n\n if (validateCode?.product_id) {\n throw new Error(`Product code existed: ${validateCode.product_code} (${validateCode.product_id})`);\n }\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create product payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await productModel.create({ data: _data })\n\n return response\n }\n\n const updateItemProduct = async ({ productId, data }: ItemProductUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update product payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await productModel.update({ where: { [`${ModelProductFields.product_id}`]: productId }, data: _data })\n\n return response\n }\n\n const getItemProduct = async ({ id, datatypes = [] }: ItemProductGetProps) => {\n\n let { data } = await listItemProducts({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelProductFields.product_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelProductFields.product_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listItemProducts = async ({\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = []\n }: ItemProductListProps) => {\n\n let itemsSqlSelect = await getItemsSqlSelect(datatypes, injectionFieldService)\n\n let data = []\n\n let sqlSelect = [\n `COUNT(*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, itemSqlSelect),\n buildSqlSelect(``, itemsSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"prd\", \"categories\", \"catg\", [\"prd.category_id = catg.category_id\", \"catg.isdelete = false\", \"catg.istrash = false\"]),\n buildSqlRelation(\"left\", \"prd\", \"brands\", \"brd\", [\"prd.brand_id = brd.brand_id\", \"brd.isdelete = false\", \"brd.istrash = false\"]),\n buildSqlRelation(\"left\", \"prd\", \"items\", \"itm\", [\"prd.product_id = itm.product_id\", \"itm.isdelete = false\", \"itm.istrash = false\"]),\n buildSqlRelation(\"left\", \"itm\", \"uoms\", \"uom\", [\"itm.uom_id = uom.uom_id\", \"uom.isdelete = false\", \"uom.istrash = false\"]),\n buildSqlRelation(\"left\", \"prd\", \"users\", \"creator\", [\"prd.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"prd\", \"users\", \"updater\", [\"prd.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(itemSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...itemSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(productDataTypes.productInjectionFields)) {\n\n let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"item\", \"product\")\n\n const productInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"iif\", activeInjectionFields)\n\n filterColumns = { ...filterColumns, ...productInjectionFieldSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, productInjectionFieldSqlSelect)]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"prd\", \"item_injection_fields\", \"iif\", [\"prd.product_id = iif.product_id\", \"iif.field_ref = 'item'\", \"iif.field_module = 'product'\", \"iif.isdelete = false\", \"iif.istrash = false\"])]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(productInjectionFieldSqlSelect)]\n }\n\n // if (datatypes.includes(productDataTypes.itemInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"item\", \"item\")\n\n // const productItemInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"iif2\", activeInjectionFields)\n\n // filterColumns = { ...filterColumns, ...productItemInjectionFieldSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, productItemInjectionFieldSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"itm\", \"item_injection_fields\", \"iif2\", [\"itm.item_id = iif2.item_id\", \"iif2.field_ref = 'item'\", \"iif2.field_module = 'item'\", \"iif2.isdelete = false\", \"iif2.istrash = false\"])]\n // // sqlGroupBy = [...sqlGroupBy, ...Object.keys(itemInjectionFieldSqlSelect)]\n // }\n\n // if (datatypes.includes(productDataTypes.location)) {\n\n // let locationSqlSelect = {\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelLocationFields.location_id}', location.location_id,\n // '${ModelLocationFields.location_code}', location.location_code,\n // '${ModelLocationFields.location_name}', location.location_name,\n // '${ModelLocationFields.location_type}', location.location_type,\n // '${ModelLocationFields.address_1}', location.address_1,\n // '${ModelLocationFields.address_2}', location.address_2,\n // '${ModelLocationFields.area}', location.area,\n // '${ModelLocationFields.area_id}', location.area_id,\n // '${ModelLocationFields.country_id}', location.country_id,\n // '${ModelLocationFields.state_id}', location.state_id,\n // '${ModelLocationFields.postcode}', location.postcode,\n // '${ModelLocationFields.is_default}', location.is_default,\n // '${ModelLocationFields.person_contact}', location.person_contact,\n // '${ModelLocationFields.person_name}', location.person_contact,\n // '${ModelLocationFields.person_email}', location.person_email,\n // '${ModelLocationFields.isdelete}', location.isdelete,\n // '${ModelLocationFields.istrash}', location.istrash\n // )\n // ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n // '[]'\n // )`]: \"locations\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"prd.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n // }\n\n if (datatypes.includes(productDataTypes.file)) {\n\n let fileSqlSelect = {\n [`COALESCE(\n JSON_AGG(\n DISTINCT JSONB_BUILD_OBJECT(\n '${ModelFileFields.file_id}', files.file_id,\n '${ModelFileFields.asset_url}', files.asset_url,\n '${ModelFileFields.asset_path}', files.asset_path,\n '${ModelFileFields.batch_code}', files.batch_code,\n '${ModelFileFields.content_type}', files.content_type,\n '${ModelFileFields.description}', files.description,\n '${ModelFileFields.field_module}', files.field_module,\n '${ModelFileFields.field_ref}', files.field_ref,\n '${ModelFileFields.file_compress_format}', files.file_compress_format,\n '${ModelFileFields.file_label}', files.file_label,\n '${ModelFileFields.file_name}', files.file_name,\n '${ModelFileFields.file_size_bytes}', files.file_size_bytes,\n '${ModelFileFields.foldername_day}', files.foldername_day,\n '${ModelFileFields.foldername_month}', files.foldername_month,\n '${ModelFileFields.foldername_year}', files.foldername_year,\n '${ModelFileFields.input_file_name}', files.input_file_name,\n '${ModelFileFields.input_file_size_bytes}', files.input_file_size_bytes,\n '${ModelFileFields.input_type}', files.input_type,\n '${ModelFileFields.refer_id_1}', files.refer_id_1,\n '${ModelFileFields.refer_id_2}', files.refer_id_2,\n '${ModelFileFields.remark}', files.remark,\n '${ModelFileFields.storage_provider_name}', files.storage_provider_name,\n '${ModelFileFields.tag_name}', files.tag_name\n )\n ) FILTER (WHERE files.file_id IS NOT NULL AND files.isdelete = false AND files.istrash = false), \n '[]'\n )`]: \"files\"\n }\n\n // filterColumns = { ...filterColumns, ...fileSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, fileSqlSelect)]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"prd\", \"files\", \"files\", [\"prd.product_id = files.refer_id_1\", \"files.field_ref = 'item'\", \"files.field_module = 'product'\", \"files.isdelete = false\", \"files.istrash = false\"])]\n\n }\n\n // if (datatypes.includes(customerDataTypes.branchUserCount)) {\n\n // let branchUserCountSqlSelect = {\n // [`COUNT(DISTINCT brnusrcount.${ModelBranchUserFields.branch_user_id})::INT`]: \"branch_user_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...branchUserCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, branchUserCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branch_users\", \"brnusrcount\", [\"prd.user_id = brnusrcount.user_id\", \"brnusrcount.isdelete = false\", \"brnusrcount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `prd.isdelete = false`,\n `prd.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"products\",\n mainAlias: \"prd\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n data = await productModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeProducts = async ({ productIds }: ItemProductRemoveProps) => {\n\n if (!productIds.length) throwError('productIds is required');\n\n const response = await productModel.remove({ where: { [`${ModelProductFields.product_id}`]: { in: productIds } } });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(productDataTypes);\n }\n\n return {\n createItemProduct,\n updateItemProduct,\n getItemProduct,\n listItemProducts,\n removeProducts,\n getDataTypes\n }\n\n}\n\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "storemw-core-api",
3
- "version": "1.0.171",
3
+ "version": "1.0.173",
4
4
  "description": "STOREMW Core API",
5
5
  "main": "dist/app.js",
6
6
  "types": "dist/app.d.ts",