zet-lib 1.0.0

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/zCache.js ADDED
@@ -0,0 +1,326 @@
1
+ const myCache = require("./cache");
2
+ const connection = require('./connection');
3
+ const Util = require('./Util');
4
+ const path = require('path');
5
+ const fs = require('fs-extra');
6
+ const directory = "./";
7
+ const zRoute = require('./zRoute');
8
+
9
+ const zCache = {};
10
+
11
+ //constants
12
+ zCache.KEYS = {
13
+ ROUTES: "ROUTES",
14
+ TABLES: "TABLES",
15
+ MYMODELS: "MYMODELS",
16
+ ROLES: "ROLES",
17
+ CONFIG: "CONFIG",
18
+ MENU: "MENU",
19
+ MENU_SYSTEMS: "MENU_SYSTEMS",
20
+ ZFUNCTIONS:"ZFUNCTIONS",
21
+ VERSIONS:"VERSIONS",
22
+ MODELS_RELATIONS:"MODELS_RELATIONS"
23
+ };
24
+
25
+ zCache.STATICS = zCache.KEYS;
26
+ zCache.myCache = myCache;
27
+
28
+ zCache.get = (name) => {
29
+ if (!myCache.has(name)) {
30
+ zCache[name]();
31
+ } else {
32
+ return myCache.get(name);
33
+ }
34
+ };
35
+
36
+ zCache.set = (X, Y) => {
37
+ myCache.set(X, Y);
38
+ };
39
+
40
+ zCache.cache = async(req, res, next) => {
41
+ await cache();
42
+ next();
43
+ };
44
+
45
+ const cache = async()=> {
46
+ zCache.VERSIONS();
47
+ let i = 0;
48
+ if (myCache.has("ROLES")) {
49
+ //console.log("cache ROLES has exist " + i)
50
+ i = i + 1;
51
+ } else {
52
+ //console.log("cache ROLES not exist " + i)
53
+ await zCache.ROLES();
54
+ }
55
+ if (myCache.has("ROUTES")) {
56
+ i = i + 1;
57
+ } else {
58
+ await zCache.ROUTES();
59
+ }
60
+ if (myCache.has("TABLES")) {
61
+ i = i + 1;
62
+ } else {
63
+ //console.log("cache TABLES not exist " + i)
64
+ await zCache.TABLES();
65
+ }
66
+ if (myCache.has("CONFIG")) {
67
+ i = i + 1;
68
+ } else {
69
+ //console.log("cache CONFIG not exist " + i)
70
+ await zCache.CONFIG();
71
+ }
72
+ if (myCache.has("MENU")) {
73
+ i = i + 1;
74
+ } else {
75
+ //console.log("cache MENU not exist " + i);
76
+ //zup.menu();
77
+ await zCache.MENU();
78
+ }
79
+ if (myCache.has("MENU_SYSTEMS")) {
80
+ //i = i + 1;
81
+ } else {
82
+ await zCache.MENU_SYSTEMS();
83
+ }
84
+ //console.log(i)
85
+ if (myCache.has("ZFUNCTIONS")) {
86
+ //i = i + 1;
87
+ } else {
88
+ await zCache.ZFUNCTIONS();
89
+ }
90
+ //await zCache.CURRENCIES();
91
+ //console.log(i)
92
+ if (i < 5) {
93
+ await cache();
94
+ } else {
95
+ return i;
96
+ }
97
+ //cache relations on startup
98
+ await zCache.MODELS_RELATIONS();
99
+ };
100
+
101
+ zCache.renew = async()=> {
102
+ zCache.VERSIONS();
103
+ await zCache.ROLES();
104
+ await zCache.MENU();
105
+ await zCache.CONFIG();
106
+ await zCache.TABLES();
107
+ await zCache.ROUTES();
108
+ await zCache.MENU_SYSTEMS();
109
+ await zCache.MODELS_RELATIONS();
110
+ };
111
+
112
+ zCache.ROUTES = () => {
113
+ if(myCache.has("ROUTES")) {
114
+ return myCache.get("ROUTES");
115
+ } else {
116
+ const routes = zRoute.ROUTES();
117
+ myCache.set("ROUTES", routes);
118
+ return routes;
119
+ }
120
+ };
121
+
122
+ zCache.TABLES = () => {
123
+ let routes = zCache.get("ROUTES");
124
+ let modelsDirectory = path.join(directory, 'models');
125
+ let tables = [], obj = {};
126
+ routes.forEach((table) => {
127
+ if (fs.existsSync(modelsDirectory + "/" + table + ".js")) {
128
+ tables.push(table);
129
+ let MYMODEL = require("./../models/" + table);
130
+ obj[table] = MYMODEL;
131
+ }
132
+ });
133
+ myCache.set("TABLES", tables);
134
+ myCache.set("MYMODELS", obj);
135
+ //add to version after set
136
+ zCache.updateVersions("TABLES")
137
+ zCache.updateVersions("MYMODELS")
138
+
139
+ };
140
+
141
+ zCache.ROLES = async() => {
142
+ let r = 0;
143
+ let results = await connection.results({table: "zrole"});
144
+ let obj = Util.arrayToObject(results, "id");
145
+ await myCache.set("ROLES", obj);
146
+ //add to version after set
147
+ zCache.updateVersions("ROLES");
148
+ r = 1;
149
+ return r;
150
+ };
151
+
152
+ zCache.ZFUNCTIONS = async() => {
153
+ let query = await connection.results({
154
+ table : "zfunction",
155
+ where : {
156
+ active : 1
157
+ }
158
+ })
159
+ if (query.length) {
160
+ let results = await connection.results({table: "zfunction"});
161
+ let obj = Util.arrayToObject(results, "title");
162
+ await myCache.set("ZFUNCTIONS", obj);
163
+ //add to version after set
164
+ zCache.updateVersions("ZFUNCTIONS")
165
+ }
166
+ };
167
+
168
+ zCache.VERSIONS = () => {
169
+ if(myCache.has("VERSIONS")) {
170
+ //console.log("VERSIONS")
171
+ return myCache.get("VERSIONS")
172
+ } else {
173
+ let obj = {}
174
+ for(let key in zCache.KEYS) {
175
+ obj[key] = 0;
176
+ }
177
+ myCache.set("VERSIONS",obj);
178
+ //console.log(JSON.stringify(myCache.get("VERSIONS")))
179
+ return obj;
180
+ }
181
+ };
182
+
183
+ zCache.CONFIG = async() => {
184
+ let results = async() => {
185
+ return await connection.results({
186
+ table: "zconfig"
187
+ });
188
+ };
189
+ let companies = await connection.results({
190
+ table: "zcompany"
191
+ });
192
+ let r = await results();
193
+ let configObj = Util.arrayToObject(r, "company_id");
194
+ for (let i = 0; i < companies.length; i++) {
195
+ let item = companies[i];
196
+ if (!configObj[item.id]) {
197
+ await connection.insert({
198
+ table: "zconfig",
199
+ data: {
200
+ company_id: item.id,
201
+ layout: 0,
202
+ json: JSON.stringify(CONFIG),
203
+ created_at: Util.now(),
204
+ updated_at: Util.now()
205
+ }
206
+ });
207
+ }
208
+ }
209
+
210
+ myCache.set(zCache.KEYS.CONFIG, Util.arrayToObject(await results(), "company_id"));
211
+ //add to version after set
212
+ zCache.updateVersions(zCache.KEYS.CONFIG)
213
+ };
214
+
215
+ zCache.MYMODELS = () => {
216
+ zCache.TABLES();
217
+ }
218
+
219
+ zCache.MENU = async() => {
220
+ let results = async() => {
221
+ return await connection.results({
222
+ table: "zmenu",
223
+ where: {
224
+ active: 1
225
+ }
226
+ });
227
+ };
228
+ const r = await results();
229
+ const builder = async() => {
230
+ let obj = {}
231
+ let arr = await results();
232
+ arr.map((item)=> {
233
+ obj[item.company_id] = item.json || [];
234
+ });
235
+ myCache.set("MENU", obj);
236
+ //add to version after set
237
+ zCache.updateVersions("MENU")
238
+ };
239
+ if (r.length) {
240
+ await builder();
241
+ }
242
+ };
243
+
244
+ zCache.MENU_SYSTEMS = () => {
245
+ let obj = {};
246
+ obj.users = [{
247
+ text: "Users",
248
+ href: "zuser",
249
+ },
250
+ {
251
+ text: "Company",
252
+ href: "zcompany",
253
+ },
254
+ {
255
+ text: "User Access",
256
+ href: "zuser_company",
257
+ },
258
+ {
259
+ text: "Access Role",
260
+ href: "zrole",
261
+ }];
262
+ obj.systems = [
263
+ {
264
+ text: "Generator",
265
+ href: "zgenerator",
266
+ },
267
+ {
268
+ text: "Menu Generator",
269
+ href: "zmenu",
270
+ },
271
+ {
272
+ text: "Grid Default",
273
+ href: "zgrid_default",
274
+ },
275
+ {
276
+ text: "Routers",
277
+ href: "zpage",
278
+ },
279
+ {
280
+ text: "Functions",
281
+ href: "zfunction",
282
+ },
283
+ {
284
+ text: "Layouts",
285
+ href: "zlayout",
286
+ },
287
+ {
288
+ text: "Custom Report",
289
+ href: "zreport",
290
+ },
291
+ {
292
+ text: "Menu Collections",
293
+ href: "zmenu_collections",
294
+ },
295
+ {
296
+ text: "Log Errors",
297
+ href: "zerror",
298
+ }
299
+ ];
300
+ myCache.set("MENU_SYSTEMS", obj);
301
+ };
302
+
303
+ zCache.updateVersions = (name)=> {
304
+ let obj = myCache.get("VERSIONS") || {}
305
+ if(!obj.ROLES){
306
+ zCache.VERSIONS();
307
+ obj = myCache.get("VERSIONS");
308
+ }
309
+ let value = obj[name] || 0;
310
+ value++;
311
+ obj[name] = value;
312
+ myCache.set("VERSIONS",obj);
313
+ };
314
+
315
+
316
+ zCache.MODELS_RELATIONS = async() => {
317
+ if(myCache.has("MODELS_RELATIONS")) {
318
+ return myCache.get("MODELS_RELATIONS")
319
+ } else {
320
+ const obj = await zRoute.modelsCache();
321
+ myCache.set('MODELS_RELATIONS',obj);
322
+ return obj;
323
+ }
324
+ };
325
+
326
+ module.exports = zCache;
@@ -0,0 +1,27 @@
1
+ const zFn = require('./zFn');
2
+ const connection = require('./connection');
3
+
4
+ const components = async (...args) => {
5
+ let title = "", params = [];
6
+ for (let i = 0; i < args.length; i++) {
7
+ if(i == 0) {
8
+ title = args[i];
9
+ } else {
10
+ params.push(args[i])
11
+ }
12
+ }
13
+ const result = await connection.result({
14
+ table : "zcomponent",
15
+ where : {
16
+ title : title,
17
+ active : 1
18
+ }
19
+ });
20
+ if(result.id) {
21
+ return await zFn(result.code, params);
22
+ } else {
23
+ return;
24
+ }
25
+ };
26
+
27
+ module.exports = components;
package/lib/zFn.js ADDED
@@ -0,0 +1,59 @@
1
+ const moment = require('moment');
2
+ const zRoute = require('./zRoute');
3
+ const io = require("./io");
4
+ const qs = require('qs');
5
+ const axios = require('axios');
6
+ const myCache = require("./cache");
7
+ const connection = require('./connection');
8
+ const Util = require("./Util");
9
+ const moduleLib = require('./moduleLib');
10
+ const zCache = require('./zCache');
11
+
12
+ const running = (scripts, params, obj={}) => {
13
+ const MYMODELS = zRoute.MYMODELS();
14
+ let stringParams = "";
15
+ const defaultCall = {
16
+ Util: Util,
17
+ connection: connection,
18
+ io: io,
19
+ qs: qs,
20
+ moment:moment,
21
+ axios:axios,
22
+ myCache:myCache,
23
+ zCache:zCache,
24
+ params:params,
25
+ MYMODELS:MYMODELS,
26
+ moduleLib:moduleLib
27
+ };
28
+
29
+ const CALL = Object.assign(defaultCall,obj);
30
+
31
+ stringParams = "";
32
+ for (const keys in CALL) {
33
+ stringParams += `var ${keys} = this.${keys};`
34
+ }
35
+
36
+ const AsyncFunction = Object.getPrototypeOf(async function () {
37
+ }).constructor;
38
+
39
+ try {
40
+ return AsyncFunction(`
41
+ try {
42
+ ${stringParams};
43
+ ${scripts};
44
+ } catch(error) {
45
+ console.log('error in zfn', error.toString());
46
+ return {
47
+ error:true,
48
+ status : 0,
49
+ message:error.toString()
50
+ };
51
+ }
52
+ `).call(CALL);
53
+ } catch (e) {
54
+ throw new Error(e);
55
+ return;
56
+ }
57
+ };
58
+
59
+ module.exports = running;
@@ -0,0 +1,20 @@
1
+ const zFn = require('./zFn');
2
+ const myCache = require("./cache");
3
+
4
+ module.exports = (...args) => {
5
+ let title = "", params = [];
6
+ for (let i = 0; i < args.length; i++) {
7
+ if(i == 0) {
8
+ title = args[i];
9
+ } else {
10
+ params.push(args[i])
11
+ }
12
+ }
13
+ let results = myCache.get('ZFUNCTIONS');
14
+ let result = results[title];
15
+ if(result.id) {
16
+ return zFn(result.code, params);
17
+ } else {
18
+ return;
19
+ }
20
+ };
@@ -0,0 +1,62 @@
1
+ module.exports = (req, res, next) => {
2
+
3
+ function menu0() {
4
+ function mainMenu(obj) {
5
+ let html = "", span = "", dropdown = "", test = "";
6
+ const parent = (obj, classname = "") => {
7
+ let href = obj.href ? "/" + obj.href : "#";
8
+ let hassub = "", sidebarlink = "", aClass = "", span = obj.text;
9
+ if (obj.hasOwnProperty("children")) {
10
+ hassub = "has-sub";
11
+ sidebarlink = "sidebar-link";
12
+ aClass = `class="${sidebarlink}"`;
13
+ span = `<span>${obj.text}</span>`;
14
+ }
15
+ let html = '';
16
+ let icon = obj.icon ? obj.icon.replace('tabler-', '') : '';
17
+ let aicon = '';
18
+ if(icon && icon != "empty"){
19
+ aicon = icon ? `<img src="/assets/icons/${icon}.svg" class="tabler-icons icons-black-color" >` : `<i class="${obj.icon}"></i>`;
20
+ }
21
+ html += `<li class="${classname}">
22
+ <a href="${href}" ${aClass} >
23
+ ${aicon}
24
+ ${span}
25
+ </a>`;
26
+ if (hassub != "") {
27
+ html += child(obj.children);
28
+ }
29
+ html += `</li>`;
30
+
31
+ return html;
32
+ };
33
+
34
+ const child = (arr) => {
35
+ let html = '<div class="submenu"><ul>';
36
+ arr.map((item) => {
37
+ html += parent(item, "submenu-item");
38
+ });
39
+ html += `</ul></div>`;
40
+ return html;
41
+ };
42
+ let arr = obj.items;
43
+ html += `<ul class="main-menu">`;
44
+ arr.map((item) => {
45
+ let classname = "";
46
+ if (item.hasOwnProperty("children")) {
47
+ classname = "has-submenu ";
48
+ } else {
49
+ classname = "";
50
+ }
51
+ html += parent(item, classname);
52
+ });
53
+ html += `</ul>`;
54
+ return html;
55
+ }
56
+
57
+ const html = mainMenu({items: res.locals.MENU_ALL, options: {class: "sidebar-nav"}});
58
+ res.locals.menu_vertical = html;
59
+ }
60
+ menu0();
61
+ next();
62
+ };