zet-lib 1.2.20 → 1.2.22

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/lib/connection.js CHANGED
@@ -1,13 +1,24 @@
1
- const { Pool } = require('pg')
1
+ const { Pool } = require('postgres-pool')
2
2
  const config = require('dotenv').config()
3
3
  const Util = require('./Util')
4
4
 
5
- const pool = new Pool({
5
+ const configPG = {
6
6
  user: process.env.PGUSER,
7
7
  host: process.env.PGHOST,
8
8
  database: process.env.PGDATABASE,
9
9
  password: process.env.PGPASSWORD,
10
10
  port: process.env.PGPORT,
11
+ max: 20, // set pool max size to 20
12
+ idleTimeoutMillis: 1000, // close idle clients after 1 second
13
+ connectionTimeoutMillis: 10000, // return an error after 10 second if connection could not be established
14
+ maxUses: 7500, // close (and replace) a connection after it has been used 7500 times (see below for discussion)
15
+ poolSize: 50, // Default is 10 connections
16
+ }
17
+
18
+ const pool = new Pool(configPG)
19
+
20
+ pool.on('error', (err) => {
21
+ console.error('Unexpected error on idle client', err)
11
22
  })
12
23
 
13
24
  const connection = {}
package/lib/zCache.js CHANGED
@@ -296,12 +296,18 @@ zCache.updateVersions = (name) => {
296
296
  }
297
297
 
298
298
  zCache.MODELS_RELATIONS = async () => {
299
- if (myCache.has('MODELS_RELATIONS')) {
300
- return myCache.get('MODELS_RELATIONS')
299
+ if (process.env.APP_IS_CACHE == 1) {
300
+ console.log('cache models')
301
+ if (myCache.has('MODELS_RELATIONS')) {
302
+ return myCache.get('MODELS_RELATIONS')
303
+ } else {
304
+ const obj = await zRoute.modelsCache()
305
+ myCache.set('MODELS_RELATIONS', obj)
306
+ return obj
307
+ }
301
308
  } else {
302
- const obj = await zRoute.modelsCache()
303
- myCache.set('MODELS_RELATIONS', obj)
304
- return obj
309
+ console.log('not cache models')
310
+ return {}
305
311
  }
306
312
  }
307
313
 
package/lib/zRoute.js CHANGED
@@ -3666,110 +3666,113 @@ cache models in so it's no need call database repeatly
3666
3666
  */
3667
3667
 
3668
3668
  zRoute.modelsCache = async () => {
3669
- let models = zRoute.MYMODELS() || {}
3670
- delete models.zrole
3671
- delete models.zuser_company
3672
3669
  let obj = {}
3673
- let companies
3674
- let mustCaches = ['relation', 'typeahead', 'multi_line_editor', 'dropdown_multi']
3675
- let nots = ['created_by', 'updated_by']
3676
- for (let keys in models) {
3677
- let widgets = models[keys].widgets
3678
- for (let key in widgets) {
3679
- if (Util.in_array(widgets[key].name, mustCaches)) {
3680
- let widget = widgets[key]
3681
- let table = widget.table
3682
- if (widget.fields[1] != undefined) {
3683
- if (!obj[table]) {
3684
- obj[table] = {}
3685
- }
3686
- if (!Util.in_array(key, nots)) {
3687
- obj[table][`${keys}___${key}`] = `${widgets[key].fields[1]} as ${key}`
3670
+ if (process.env.APP_IS_CACHE == 1) {
3671
+ let models = zRoute.MYMODELS() || {}
3672
+ delete models.zrole
3673
+ delete models.zuser_company
3674
+ let companies
3675
+ let mustCaches = ['relation', 'typeahead', 'multi_line_editor', 'dropdown_multi']
3676
+ let nots = ['created_by', 'updated_by']
3677
+ for (let keys in models) {
3678
+ let widgets = models[keys].widgets
3679
+ for (let key in widgets) {
3680
+ if (Util.in_array(widgets[key].name, mustCaches)) {
3681
+ let widget = widgets[key]
3682
+ let table = widget.table
3683
+ if (widget.fields[1] != undefined) {
3684
+ if (!obj[table]) {
3685
+ obj[table] = {}
3686
+ }
3687
+ if (!Util.in_array(key, nots)) {
3688
+ obj[table][`${keys}___${key}`] = `${widgets[key].fields[1]} as ${key}`
3689
+ }
3688
3690
  }
3689
3691
  }
3690
3692
  }
3691
3693
  }
3692
- }
3693
- companies = await connection.results({
3694
- table: 'zcompany',
3695
- })
3696
- obj.zuser = {}
3697
- obj.zuser = {
3698
- created_by: 'fullname as created_by',
3699
- updated_by: 'fullname as updated_by',
3700
- }
3694
+ companies = await connection.results({
3695
+ table: 'zcompany',
3696
+ })
3697
+ obj.zuser = {}
3698
+ obj.zuser = {
3699
+ created_by: 'fullname as created_by',
3700
+ updated_by: 'fullname as updated_by',
3701
+ }
3701
3702
 
3702
- try {
3703
- for (let keys in obj) {
3704
- let checks = await connection.query(`SELECT EXISTS ( SELECT 1 FROM pg_tables WHERE tablename = '${keys}') AS oke;`)
3705
- if (checks[0].oke) {
3706
- if (!Util.in_array(keys, zRoute.tableHasNoCompanyId)) {
3707
- let selects = ``
3708
- for (let key in obj[keys]) {
3709
- selects += `${obj[keys][key]},`
3710
- }
3711
- selects += `id, company_id`
3712
- for (const company of companies) {
3713
- const results = await connection.results({
3714
- table: keys,
3715
- select: selects,
3716
- where: {
3717
- company_id: company.id,
3718
- },
3719
- })
3703
+ try {
3704
+ for (let keys in obj) {
3705
+ let checks = await connection.query(`SELECT EXISTS ( SELECT 1 FROM pg_tables WHERE tablename = '${keys}') AS oke;`)
3706
+ if (checks[0].oke) {
3707
+ if (!Util.in_array(keys, zRoute.tableHasNoCompanyId)) {
3708
+ let selects = ``
3720
3709
  for (let key in obj[keys]) {
3721
- const splits = key.split('___') || []
3722
- let item = splits.length > 1 ? splits[1] : key
3723
- let arr = []
3724
- for (const result of results) {
3725
- arr.push({ id: result.id, zname: result[item] })
3710
+ selects += `${obj[keys][key]},`
3711
+ }
3712
+ selects += `id, company_id`
3713
+ for (const company of companies) {
3714
+ const results = await connection.results({
3715
+ table: keys,
3716
+ select: selects,
3717
+ where: {
3718
+ company_id: company.id,
3719
+ },
3720
+ })
3721
+ for (let key in obj[keys]) {
3722
+ const splits = key.split('___') || []
3723
+ let item = splits.length > 1 ? splits[1] : key
3724
+ let arr = []
3725
+ for (const result of results) {
3726
+ arr.push({ id: result.id, zname: result[item] })
3727
+ }
3728
+ const myarray = Util.sortArray(arr, 'zname')
3729
+ myCache.set(`${keys}_${key}_${company.id}`, myarray)
3726
3730
  }
3727
- const myarray = Util.sortArray(arr, 'zname')
3728
- myCache.set(`${keys}_${key}_${company.id}`, myarray)
3729
3731
  }
3730
3732
  }
3731
3733
  }
3732
3734
  }
3735
+ } catch (e) {
3736
+ //debug(req,res,e.toString());
3737
+ console.log('modelsCache :', e + '')
3733
3738
  }
3734
- } catch (e) {
3735
- //debug(req,res,e.toString());
3736
- console.log('modelsCache :', e + '')
3737
3739
  }
3738
-
3739
3740
  return obj
3740
3741
  }
3741
3742
 
3742
3743
  zRoute.modelsCacheRenew = (table, companyId) => {
3743
- if (myCache.has('MODELS_RELATIONS')) {
3744
- let MODELS = myCache.get('MODELS_RELATIONS')
3745
- let arr = Object.keys(MODELS) || []
3746
- let obj = MODELS[table] || {}
3747
- if (Util.in_array(table, arr)) {
3748
- let selects = ''
3749
- for (let key in obj) {
3750
- selects += `${obj[key]},`
3751
- }
3752
- selects += `id`
3753
- connection
3754
- .results({
3755
- select: selects,
3756
- table: table,
3757
- where: {
3758
- company_id: companyId,
3759
- },
3760
- })
3761
- .then(function (results) {
3762
- for (let key in obj) {
3763
- const splits = key.split('___') || []
3764
- let item = splits.length > 1 ? splits[1] : key
3765
- let arr = []
3766
- for (const result of results) {
3767
- arr.push({ id: result.id, zname: result[item] })
3744
+ if (process.env.APP_IS_CACHE == 1) {
3745
+ if (myCache.has('MODELS_RELATIONS')) {
3746
+ let MODELS = myCache.get('MODELS_RELATIONS')
3747
+ let arr = Object.keys(MODELS) || []
3748
+ let obj = MODELS[table] || {}
3749
+ if (Util.in_array(table, arr)) {
3750
+ let selects = ''
3751
+ for (let key in obj) {
3752
+ selects += `${obj[key]},`
3753
+ }
3754
+ selects += `id`
3755
+ connection
3756
+ .results({
3757
+ select: selects,
3758
+ table: table,
3759
+ where: {
3760
+ company_id: companyId,
3761
+ },
3762
+ })
3763
+ .then(function (results) {
3764
+ for (let key in obj) {
3765
+ const splits = key.split('___') || []
3766
+ let item = splits.length > 1 ? splits[1] : key
3767
+ let arr = []
3768
+ for (const result of results) {
3769
+ arr.push({ id: result.id, zname: result[item] })
3770
+ }
3771
+ const myarray = Util.sortArray(arr, 'zname')
3772
+ myCache.set(`${table}_${key}_${companyId}`, myarray)
3768
3773
  }
3769
- const myarray = Util.sortArray(arr, 'zname')
3770
- myCache.set(`${table}_${key}_${companyId}`, myarray)
3771
- }
3772
- })
3774
+ })
3775
+ }
3773
3776
  }
3774
3777
  }
3775
3778
  }
@@ -3790,7 +3793,6 @@ module.exports = (req, res, next) => {`
3790
3793
  templateSystem += ` next();
3791
3794
  };
3792
3795
  `
3793
-
3794
3796
  Util.writeFile(fileSystem, templateSystem)
3795
3797
  if (process.env.NODE_ENV === 'production') {
3796
3798
  setTimeout(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zet-lib",
3
- "version": "1.2.20",
3
+ "version": "1.2.22",
4
4
  "description": "zet is a library that part of zet generator.",
5
5
  "engines": {
6
6
  "node": ">=18"
@@ -41,6 +41,7 @@
41
41
  "nodemailer": "^6.9.4",
42
42
  "pg": "^8.11.2",
43
43
  "pm2": "^5.3.0",
44
+ "postgres-pool": "^8.1.4",
44
45
  "puppeteer": "^21.0.1",
45
46
  "qs": "^6.11.2",
46
47
  "randomstring": "^1.3.0",
@@ -49,4 +50,4 @@
49
50
  "uuid": "^9.0.0",
50
51
  "xlsx": "^0.18.5"
51
52
  }
52
- }
53
+ }