lupine.api 1.1.58 → 1.1.60
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/README.md +3 -3
- package/admin/admin-about.tsx +12 -16
- package/admin/admin-config.tsx +47 -44
- package/admin/admin-css.tsx +3 -3
- package/admin/admin-db.tsx +75 -75
- package/admin/admin-frame-helper.tsx +364 -364
- package/admin/admin-frame.tsx +164 -164
- package/admin/admin-index.tsx +65 -65
- package/admin/admin-login.tsx +111 -111
- package/admin/admin-menu-edit.tsx +637 -637
- package/admin/admin-menu-list.tsx +87 -87
- package/admin/admin-page-edit.tsx +564 -564
- package/admin/admin-page-list.tsx +83 -83
- package/admin/admin-performance.tsx +28 -28
- package/admin/admin-release.tsx +427 -426
- package/admin/admin-resources.tsx +382 -382
- package/admin/admin-shell.tsx +89 -89
- package/admin/admin-table-data.tsx +146 -146
- package/admin/admin-table-list.tsx +230 -230
- package/admin/admin-test-animations.tsx +395 -395
- package/admin/admin-test-component.tsx +823 -808
- package/admin/admin-test-edit.tsx +319 -319
- package/admin/admin-test-themes.tsx +56 -56
- package/admin/admin-tokens.tsx +338 -338
- package/admin/design/admin-design.tsx +174 -174
- package/admin/design/block-grid.tsx +36 -36
- package/admin/design/block-grid1.tsx +21 -21
- package/admin/design/block-paragraph.tsx +19 -19
- package/admin/design/block-title.tsx +19 -19
- package/admin/design/design-block-box.tsx +140 -140
- package/admin/design/drag-data.tsx +24 -24
- package/admin/index.ts +9 -9
- package/admin/package.json +15 -15
- package/admin/tsconfig.json +127 -127
- package/dev/copy-folder.js +32 -32
- package/dev/cp-index-html.js +69 -69
- package/dev/file-utils.js +12 -12
- package/dev/index.js +18 -19
- package/dev/package.json +12 -12
- package/dev/plugin-ifelse.js +168 -168
- package/dev/plugin-ifelse.test.js +37 -37
- package/dev/run-cmd.js +14 -14
- package/dev/send-request.js +12 -12
- package/package.json +55 -55
- package/src/admin-api/admin-api-helper.ts +210 -205
- package/src/admin-api/admin-api.ts +65 -65
- package/src/admin-api/admin-auth.ts +152 -146
- package/src/admin-api/admin-config.ts +94 -84
- package/src/admin-api/admin-csv.ts +94 -94
- package/src/admin-api/admin-db.ts +269 -269
- package/src/admin-api/admin-menu.ts +135 -135
- package/src/admin-api/admin-page.ts +135 -135
- package/src/admin-api/admin-performance.ts +128 -128
- package/src/admin-api/admin-release.ts +706 -700
- package/src/admin-api/admin-resources.ts +318 -318
- package/src/admin-api/admin-token-helper.ts +82 -79
- package/src/admin-api/admin-tokens.ts +90 -90
- package/src/admin-api/index.ts +2 -2
- package/src/admin-api/web-config-api.ts +19 -19
- package/src/api/api-cache.ts +103 -103
- package/src/api/api-helper.ts +44 -44
- package/src/api/api-module.ts +67 -60
- package/src/api/api-router.ts +177 -177
- package/src/api/api-shared-storage.ts +64 -64
- package/src/api/async-storage.ts +5 -5
- package/src/api/debug-service.ts +56 -56
- package/src/api/encode-html.ts +27 -27
- package/src/api/handle-status.ts +75 -75
- package/src/api/index.ts +15 -16
- package/src/api/mini-web-socket.ts +270 -270
- package/src/api/server-content-type.ts +82 -82
- package/src/api/server-render.ts +235 -215
- package/src/api/shell-service.ts +74 -74
- package/src/api/simple-storage.ts +80 -80
- package/src/api/static-server.ts +128 -125
- package/src/api/to-client-delivery.ts +26 -26
- package/src/app/app-cache.ts +55 -55
- package/src/app/app-helper.ts +62 -62
- package/src/app/app-message.ts +109 -109
- package/src/app/app-shared-storage.ts +363 -363
- package/src/app/app-start.ts +136 -136
- package/src/app/cleanup-exit.ts +16 -16
- package/src/app/host-to-path.ts +38 -38
- package/src/app/index.ts +11 -11
- package/src/app/process-dev-requests.ts +130 -130
- package/src/app/web-listener.ts +294 -294
- package/src/app/web-processor.ts +47 -42
- package/src/app/web-server.ts +100 -100
- package/src/common-js/web-env.js +104 -104
- package/src/index.ts +7 -7
- package/src/lang/api-lang-en.ts +26 -26
- package/src/lang/api-lang-zh-cn.ts +27 -27
- package/src/lang/index.ts +2 -2
- package/src/lang/lang-helper.ts +76 -76
- package/src/lang/lang-props.ts +6 -6
- package/src/lib/db/db-helper.ts +23 -23
- package/src/lib/db/db-mysql.ts +249 -250
- package/src/lib/db/db-sqlite.ts +101 -101
- package/src/lib/db/db.spec.ts +28 -28
- package/src/lib/db/db.ts +325 -325
- package/src/lib/db/index.ts +5 -5
- package/src/lib/index.ts +3 -3
- package/src/lib/logger.spec.ts +214 -214
- package/src/lib/logger.ts +281 -281
- package/src/lib/runtime-require.ts +37 -37
- package/src/lib/utils/cookie-util.ts +34 -34
- package/src/lib/utils/crypto.ts +58 -58
- package/src/lib/utils/date-utils.ts +317 -317
- package/src/lib/utils/deep-merge.ts +37 -37
- package/src/lib/utils/delay.ts +12 -12
- package/src/lib/utils/file-setting.ts +55 -55
- package/src/lib/utils/format-bytes.ts +11 -11
- package/src/lib/utils/fs-utils.ts +158 -158
- package/src/lib/utils/get-env.ts +27 -27
- package/src/lib/utils/index.ts +12 -12
- package/src/lib/utils/is-type.ts +48 -48
- package/src/lib/utils/load-env.ts +14 -14
- package/src/lib/utils/pad.ts +6 -6
- package/src/models/api-base.ts +5 -5
- package/src/models/api-module-props.ts +10 -11
- package/src/models/api-router-props.ts +26 -26
- package/src/models/app-cache-props.ts +33 -33
- package/src/models/app-data-props.ts +10 -10
- package/src/models/app-helper-props.ts +6 -6
- package/src/models/app-shared-storage-props.ts +38 -38
- package/src/models/app-start-props.ts +18 -18
- package/src/models/async-storage-props.ts +13 -13
- package/src/models/db-config.ts +30 -30
- package/src/models/host-to-path-props.ts +12 -12
- package/src/models/index.ts +16 -16
- package/src/models/json-object.ts +8 -8
- package/src/models/locals-props.ts +36 -36
- package/src/models/logger-props.ts +84 -84
- package/src/models/simple-storage-props.ts +13 -14
- package/src/models/to-client-delivery-props.ts +6 -6
- package/tsconfig.json +115 -115
- package/dev/plugin-gen-versions.js +0 -20
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
import { ServerResponse } from 'http';
|
|
2
|
-
import { IApiBase, Logger, apiCache, ServerRequest, ApiRouter, ApiHelper } from 'lupine.api';
|
|
3
|
-
|
|
4
|
-
const logger = new Logger('admin-menu');
|
|
5
|
-
export class AdminMenu implements IApiBase {
|
|
6
|
-
protected router = new ApiRouter();
|
|
7
|
-
adminUser: any;
|
|
8
|
-
|
|
9
|
-
constructor() {
|
|
10
|
-
this.mountDashboard();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public getRouter(): ApiRouter {
|
|
14
|
-
return this.router;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
protected mountDashboard() {
|
|
18
|
-
this.router.use('/list', this.list.bind(this));
|
|
19
|
-
this.router.use('/add', this.add.bind(this));
|
|
20
|
-
this.router.use('/save', this.save.bind(this));
|
|
21
|
-
this.router.use('/get/:id', this.getRecord.bind(this));
|
|
22
|
-
this.router.use('/delete/:id', this.delete.bind(this));
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async list(req: ServerRequest, res: ServerResponse) {
|
|
26
|
-
const db = apiCache.getDb();
|
|
27
|
-
const result = await db.selectObject('$__s_menu');
|
|
28
|
-
const response = {
|
|
29
|
-
status: Array.isArray(result) ? 'ok' : 'error',
|
|
30
|
-
message: 'Menu List.',
|
|
31
|
-
result: result,
|
|
32
|
-
};
|
|
33
|
-
ApiHelper.sendJson(req, res, response);
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async add(req: ServerRequest, res: ServerResponse) {
|
|
38
|
-
const db = apiCache.getDb();
|
|
39
|
-
const data = req.locals.json() as any;
|
|
40
|
-
delete data['id'];
|
|
41
|
-
const result = await db.insertObject('$__st_user', data);
|
|
42
|
-
const response = {
|
|
43
|
-
status: Array.isArray(result) ? 'ok' : 'error',
|
|
44
|
-
message: 'User List.',
|
|
45
|
-
result: result,
|
|
46
|
-
};
|
|
47
|
-
ApiHelper.sendJson(req, res, response);
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async save(req: ServerRequest, res: ServerResponse) {
|
|
52
|
-
const db = apiCache.getDb();
|
|
53
|
-
const data = req.locals.json() as any;
|
|
54
|
-
|
|
55
|
-
const id = data['id'];
|
|
56
|
-
if (!data['idReadonly']) {
|
|
57
|
-
// save as
|
|
58
|
-
const result = await db.selectObject('$__s_menu', ['menuid'], {
|
|
59
|
-
menuid: id,
|
|
60
|
-
});
|
|
61
|
-
if (result && result.length > 0) {
|
|
62
|
-
const response = {
|
|
63
|
-
status: 'ID_EXISTS',
|
|
64
|
-
message: `Menu id: ${id} exists`,
|
|
65
|
-
};
|
|
66
|
-
ApiHelper.sendJson(req, res, response);
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
await db.deleteObject('$__s_menu', { menuid: id });
|
|
72
|
-
const result = await db.insertObject('$__s_menu', {
|
|
73
|
-
menuid: id,
|
|
74
|
-
title: data['title'],
|
|
75
|
-
note: data['note'],
|
|
76
|
-
package: data['package'],
|
|
77
|
-
items: JSON.stringify(data['items']),
|
|
78
|
-
updateduserid: 1,
|
|
79
|
-
updatedstamp: new Date().toISOString(),
|
|
80
|
-
});
|
|
81
|
-
const response = {
|
|
82
|
-
status: 'ok',
|
|
83
|
-
result: result,
|
|
84
|
-
message: 'Menu Saved.',
|
|
85
|
-
};
|
|
86
|
-
ApiHelper.sendJson(req, res, response);
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
async getRecord(req: ServerRequest, res: ServerResponse) {
|
|
91
|
-
const db = apiCache.getDb();
|
|
92
|
-
const id = req.locals.urlParameters.get('id', '');
|
|
93
|
-
|
|
94
|
-
const response = {
|
|
95
|
-
status: 'error',
|
|
96
|
-
message: 'Get a menu item.',
|
|
97
|
-
result: {},
|
|
98
|
-
};
|
|
99
|
-
if (id) {
|
|
100
|
-
const result = await db.selectObject('$__s_menu', undefined, {
|
|
101
|
-
menuid: id,
|
|
102
|
-
});
|
|
103
|
-
if (result && result.length > 0) {
|
|
104
|
-
response.result = {
|
|
105
|
-
menuid: result[0]['menuid'],
|
|
106
|
-
title: result[0]['title'],
|
|
107
|
-
note: result[0]['note'],
|
|
108
|
-
package: result[0]['package'],
|
|
109
|
-
items: JSON.parse(result[0]['items']),
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
response.status = 'ok';
|
|
113
|
-
}
|
|
114
|
-
ApiHelper.sendJson(req, res, response);
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
async delete(req: ServerRequest, res: ServerResponse) {
|
|
119
|
-
const db = apiCache.getDb();
|
|
120
|
-
const id = req.locals.urlParameters.get('id', '');
|
|
121
|
-
|
|
122
|
-
const response = {
|
|
123
|
-
status: 'ok',
|
|
124
|
-
message: 'Delete a menu.',
|
|
125
|
-
result: null,
|
|
126
|
-
};
|
|
127
|
-
if (id) {
|
|
128
|
-
const result = await db.deleteObject('$__s_menu', { menuid: id });
|
|
129
|
-
response.result = result;
|
|
130
|
-
response.status = 'ok';
|
|
131
|
-
}
|
|
132
|
-
ApiHelper.sendJson(req, res, response);
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
1
|
+
import { ServerResponse } from 'http';
|
|
2
|
+
import { IApiBase, Logger, apiCache, ServerRequest, ApiRouter, ApiHelper } from 'lupine.api';
|
|
3
|
+
|
|
4
|
+
const logger = new Logger('admin-menu');
|
|
5
|
+
export class AdminMenu implements IApiBase {
|
|
6
|
+
protected router = new ApiRouter();
|
|
7
|
+
adminUser: any;
|
|
8
|
+
|
|
9
|
+
constructor() {
|
|
10
|
+
this.mountDashboard();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public getRouter(): ApiRouter {
|
|
14
|
+
return this.router;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
protected mountDashboard() {
|
|
18
|
+
this.router.use('/list', this.list.bind(this));
|
|
19
|
+
this.router.use('/add', this.add.bind(this));
|
|
20
|
+
this.router.use('/save', this.save.bind(this));
|
|
21
|
+
this.router.use('/get/:id', this.getRecord.bind(this));
|
|
22
|
+
this.router.use('/delete/:id', this.delete.bind(this));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async list(req: ServerRequest, res: ServerResponse) {
|
|
26
|
+
const db = apiCache.getDb();
|
|
27
|
+
const result = await db.selectObject('$__s_menu');
|
|
28
|
+
const response = {
|
|
29
|
+
status: Array.isArray(result) ? 'ok' : 'error',
|
|
30
|
+
message: 'Menu List.',
|
|
31
|
+
result: result,
|
|
32
|
+
};
|
|
33
|
+
ApiHelper.sendJson(req, res, response);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async add(req: ServerRequest, res: ServerResponse) {
|
|
38
|
+
const db = apiCache.getDb();
|
|
39
|
+
const data = req.locals.json() as any;
|
|
40
|
+
delete data['id'];
|
|
41
|
+
const result = await db.insertObject('$__st_user', data);
|
|
42
|
+
const response = {
|
|
43
|
+
status: Array.isArray(result) ? 'ok' : 'error',
|
|
44
|
+
message: 'User List.',
|
|
45
|
+
result: result,
|
|
46
|
+
};
|
|
47
|
+
ApiHelper.sendJson(req, res, response);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async save(req: ServerRequest, res: ServerResponse) {
|
|
52
|
+
const db = apiCache.getDb();
|
|
53
|
+
const data = req.locals.json() as any;
|
|
54
|
+
|
|
55
|
+
const id = data['id'];
|
|
56
|
+
if (!data['idReadonly']) {
|
|
57
|
+
// save as
|
|
58
|
+
const result = await db.selectObject('$__s_menu', ['menuid'], {
|
|
59
|
+
menuid: id,
|
|
60
|
+
});
|
|
61
|
+
if (result && result.length > 0) {
|
|
62
|
+
const response = {
|
|
63
|
+
status: 'ID_EXISTS',
|
|
64
|
+
message: `Menu id: ${id} exists`,
|
|
65
|
+
};
|
|
66
|
+
ApiHelper.sendJson(req, res, response);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
await db.deleteObject('$__s_menu', { menuid: id });
|
|
72
|
+
const result = await db.insertObject('$__s_menu', {
|
|
73
|
+
menuid: id,
|
|
74
|
+
title: data['title'],
|
|
75
|
+
note: data['note'],
|
|
76
|
+
package: data['package'],
|
|
77
|
+
items: JSON.stringify(data['items']),
|
|
78
|
+
updateduserid: 1,
|
|
79
|
+
updatedstamp: new Date().toISOString(),
|
|
80
|
+
});
|
|
81
|
+
const response = {
|
|
82
|
+
status: 'ok',
|
|
83
|
+
result: result,
|
|
84
|
+
message: 'Menu Saved.',
|
|
85
|
+
};
|
|
86
|
+
ApiHelper.sendJson(req, res, response);
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async getRecord(req: ServerRequest, res: ServerResponse) {
|
|
91
|
+
const db = apiCache.getDb();
|
|
92
|
+
const id = req.locals.urlParameters.get('id', '');
|
|
93
|
+
|
|
94
|
+
const response = {
|
|
95
|
+
status: 'error',
|
|
96
|
+
message: 'Get a menu item.',
|
|
97
|
+
result: {},
|
|
98
|
+
};
|
|
99
|
+
if (id) {
|
|
100
|
+
const result = await db.selectObject('$__s_menu', undefined, {
|
|
101
|
+
menuid: id,
|
|
102
|
+
});
|
|
103
|
+
if (result && result.length > 0) {
|
|
104
|
+
response.result = {
|
|
105
|
+
menuid: result[0]['menuid'],
|
|
106
|
+
title: result[0]['title'],
|
|
107
|
+
note: result[0]['note'],
|
|
108
|
+
package: result[0]['package'],
|
|
109
|
+
items: JSON.parse(result[0]['items']),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
response.status = 'ok';
|
|
113
|
+
}
|
|
114
|
+
ApiHelper.sendJson(req, res, response);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async delete(req: ServerRequest, res: ServerResponse) {
|
|
119
|
+
const db = apiCache.getDb();
|
|
120
|
+
const id = req.locals.urlParameters.get('id', '');
|
|
121
|
+
|
|
122
|
+
const response = {
|
|
123
|
+
status: 'ok',
|
|
124
|
+
message: 'Delete a menu.',
|
|
125
|
+
result: null,
|
|
126
|
+
};
|
|
127
|
+
if (id) {
|
|
128
|
+
const result = await db.deleteObject('$__s_menu', { menuid: id });
|
|
129
|
+
response.result = result;
|
|
130
|
+
response.status = 'ok';
|
|
131
|
+
}
|
|
132
|
+
ApiHelper.sendJson(req, res, response);
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
import { ServerResponse } from 'http';
|
|
2
|
-
import { IApiBase, Logger, apiCache, ServerRequest, ApiRouter, ApiHelper } from 'lupine.api';
|
|
3
|
-
|
|
4
|
-
const logger = new Logger('admin-page');
|
|
5
|
-
export class AdminPage implements IApiBase {
|
|
6
|
-
protected router = new ApiRouter();
|
|
7
|
-
adminUser: any;
|
|
8
|
-
|
|
9
|
-
constructor() {
|
|
10
|
-
this.mountDashboard();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public getRouter(): ApiRouter {
|
|
14
|
-
return this.router;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
protected mountDashboard() {
|
|
18
|
-
this.router.use('/list', this.list.bind(this));
|
|
19
|
-
this.router.use('/add', this.add.bind(this));
|
|
20
|
-
this.router.use('/save', this.save.bind(this));
|
|
21
|
-
this.router.use('/get/:id', this.getRecord.bind(this));
|
|
22
|
-
this.router.use('/delete/:id', this.delete.bind(this));
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async list(req: ServerRequest, res: ServerResponse) {
|
|
26
|
-
const db = apiCache.getDb();
|
|
27
|
-
const result = await db.selectObject('$__s_page');
|
|
28
|
-
const response = {
|
|
29
|
-
status: Array.isArray(result) ? 'ok' : 'error',
|
|
30
|
-
message: 'Menu List.',
|
|
31
|
-
result: result,
|
|
32
|
-
};
|
|
33
|
-
ApiHelper.sendJson(req, res, response);
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async add(req: ServerRequest, res: ServerResponse) {
|
|
38
|
-
const db = apiCache.getDb();
|
|
39
|
-
const data = req.locals.json() as any;
|
|
40
|
-
delete data['id'];
|
|
41
|
-
const result = await db.insertObject('$__st_user', data);
|
|
42
|
-
const response = {
|
|
43
|
-
status: Array.isArray(result) ? 'ok' : 'error',
|
|
44
|
-
message: 'User List.',
|
|
45
|
-
result: result,
|
|
46
|
-
};
|
|
47
|
-
ApiHelper.sendJson(req, res, response);
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async save(req: ServerRequest, res: ServerResponse) {
|
|
52
|
-
const db = apiCache.getDb();
|
|
53
|
-
const data = req.locals.json() as any;
|
|
54
|
-
|
|
55
|
-
const id = data['id'];
|
|
56
|
-
if (!data['idReadonly']) {
|
|
57
|
-
// save as
|
|
58
|
-
const result = await db.selectObject('$__s_page', ['menuid'], {
|
|
59
|
-
menuid: id,
|
|
60
|
-
});
|
|
61
|
-
if (result && result.length > 0) {
|
|
62
|
-
const response = {
|
|
63
|
-
status: 'ID_EXISTS',
|
|
64
|
-
message: `Menu id: ${id} exists`,
|
|
65
|
-
};
|
|
66
|
-
ApiHelper.sendJson(req, res, response);
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
await db.deleteObject('$__s_page', { menuid: id });
|
|
72
|
-
const result = await db.insertObject('$__s_page', {
|
|
73
|
-
menuid: id,
|
|
74
|
-
title: data['title'],
|
|
75
|
-
note: data['note'],
|
|
76
|
-
package: data['package'],
|
|
77
|
-
items: JSON.stringify(data['items']),
|
|
78
|
-
updateduserid: 1,
|
|
79
|
-
updatedstamp: new Date().toISOString(),
|
|
80
|
-
});
|
|
81
|
-
const response = {
|
|
82
|
-
status: 'ok',
|
|
83
|
-
result: result,
|
|
84
|
-
message: 'Menu Saved.',
|
|
85
|
-
};
|
|
86
|
-
ApiHelper.sendJson(req, res, response);
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
async getRecord(req: ServerRequest, res: ServerResponse) {
|
|
91
|
-
const db = apiCache.getDb();
|
|
92
|
-
const id = req.locals.urlParameters.get('id', '');
|
|
93
|
-
|
|
94
|
-
const response = {
|
|
95
|
-
status: 'error',
|
|
96
|
-
message: 'Get a menu item.',
|
|
97
|
-
result: {},
|
|
98
|
-
};
|
|
99
|
-
if (id) {
|
|
100
|
-
const result = await db.selectObject('$__s_page', undefined, {
|
|
101
|
-
menuid: id,
|
|
102
|
-
});
|
|
103
|
-
if (result && result.length > 0) {
|
|
104
|
-
response.result = {
|
|
105
|
-
menuid: result[0]['menuid'],
|
|
106
|
-
title: result[0]['title'],
|
|
107
|
-
note: result[0]['note'],
|
|
108
|
-
package: result[0]['package'],
|
|
109
|
-
items: JSON.parse(result[0]['items']),
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
response.status = 'ok';
|
|
113
|
-
}
|
|
114
|
-
ApiHelper.sendJson(req, res, response);
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
async delete(req: ServerRequest, res: ServerResponse) {
|
|
119
|
-
const db = apiCache.getDb();
|
|
120
|
-
const id = req.locals.urlParameters.get('id', '');
|
|
121
|
-
|
|
122
|
-
const response = {
|
|
123
|
-
status: 'ok',
|
|
124
|
-
message: 'Delete a page.',
|
|
125
|
-
result: null,
|
|
126
|
-
};
|
|
127
|
-
if (id) {
|
|
128
|
-
const result = await db.deleteObject('$__s_page', { menuid: id });
|
|
129
|
-
response.result = result;
|
|
130
|
-
response.status = 'ok';
|
|
131
|
-
}
|
|
132
|
-
ApiHelper.sendJson(req, res, response);
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
1
|
+
import { ServerResponse } from 'http';
|
|
2
|
+
import { IApiBase, Logger, apiCache, ServerRequest, ApiRouter, ApiHelper } from 'lupine.api';
|
|
3
|
+
|
|
4
|
+
const logger = new Logger('admin-page');
|
|
5
|
+
export class AdminPage implements IApiBase {
|
|
6
|
+
protected router = new ApiRouter();
|
|
7
|
+
adminUser: any;
|
|
8
|
+
|
|
9
|
+
constructor() {
|
|
10
|
+
this.mountDashboard();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public getRouter(): ApiRouter {
|
|
14
|
+
return this.router;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
protected mountDashboard() {
|
|
18
|
+
this.router.use('/list', this.list.bind(this));
|
|
19
|
+
this.router.use('/add', this.add.bind(this));
|
|
20
|
+
this.router.use('/save', this.save.bind(this));
|
|
21
|
+
this.router.use('/get/:id', this.getRecord.bind(this));
|
|
22
|
+
this.router.use('/delete/:id', this.delete.bind(this));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async list(req: ServerRequest, res: ServerResponse) {
|
|
26
|
+
const db = apiCache.getDb();
|
|
27
|
+
const result = await db.selectObject('$__s_page');
|
|
28
|
+
const response = {
|
|
29
|
+
status: Array.isArray(result) ? 'ok' : 'error',
|
|
30
|
+
message: 'Menu List.',
|
|
31
|
+
result: result,
|
|
32
|
+
};
|
|
33
|
+
ApiHelper.sendJson(req, res, response);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async add(req: ServerRequest, res: ServerResponse) {
|
|
38
|
+
const db = apiCache.getDb();
|
|
39
|
+
const data = req.locals.json() as any;
|
|
40
|
+
delete data['id'];
|
|
41
|
+
const result = await db.insertObject('$__st_user', data);
|
|
42
|
+
const response = {
|
|
43
|
+
status: Array.isArray(result) ? 'ok' : 'error',
|
|
44
|
+
message: 'User List.',
|
|
45
|
+
result: result,
|
|
46
|
+
};
|
|
47
|
+
ApiHelper.sendJson(req, res, response);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async save(req: ServerRequest, res: ServerResponse) {
|
|
52
|
+
const db = apiCache.getDb();
|
|
53
|
+
const data = req.locals.json() as any;
|
|
54
|
+
|
|
55
|
+
const id = data['id'];
|
|
56
|
+
if (!data['idReadonly']) {
|
|
57
|
+
// save as
|
|
58
|
+
const result = await db.selectObject('$__s_page', ['menuid'], {
|
|
59
|
+
menuid: id,
|
|
60
|
+
});
|
|
61
|
+
if (result && result.length > 0) {
|
|
62
|
+
const response = {
|
|
63
|
+
status: 'ID_EXISTS',
|
|
64
|
+
message: `Menu id: ${id} exists`,
|
|
65
|
+
};
|
|
66
|
+
ApiHelper.sendJson(req, res, response);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
await db.deleteObject('$__s_page', { menuid: id });
|
|
72
|
+
const result = await db.insertObject('$__s_page', {
|
|
73
|
+
menuid: id,
|
|
74
|
+
title: data['title'],
|
|
75
|
+
note: data['note'],
|
|
76
|
+
package: data['package'],
|
|
77
|
+
items: JSON.stringify(data['items']),
|
|
78
|
+
updateduserid: 1,
|
|
79
|
+
updatedstamp: new Date().toISOString(),
|
|
80
|
+
});
|
|
81
|
+
const response = {
|
|
82
|
+
status: 'ok',
|
|
83
|
+
result: result,
|
|
84
|
+
message: 'Menu Saved.',
|
|
85
|
+
};
|
|
86
|
+
ApiHelper.sendJson(req, res, response);
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async getRecord(req: ServerRequest, res: ServerResponse) {
|
|
91
|
+
const db = apiCache.getDb();
|
|
92
|
+
const id = req.locals.urlParameters.get('id', '');
|
|
93
|
+
|
|
94
|
+
const response = {
|
|
95
|
+
status: 'error',
|
|
96
|
+
message: 'Get a menu item.',
|
|
97
|
+
result: {},
|
|
98
|
+
};
|
|
99
|
+
if (id) {
|
|
100
|
+
const result = await db.selectObject('$__s_page', undefined, {
|
|
101
|
+
menuid: id,
|
|
102
|
+
});
|
|
103
|
+
if (result && result.length > 0) {
|
|
104
|
+
response.result = {
|
|
105
|
+
menuid: result[0]['menuid'],
|
|
106
|
+
title: result[0]['title'],
|
|
107
|
+
note: result[0]['note'],
|
|
108
|
+
package: result[0]['package'],
|
|
109
|
+
items: JSON.parse(result[0]['items']),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
response.status = 'ok';
|
|
113
|
+
}
|
|
114
|
+
ApiHelper.sendJson(req, res, response);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async delete(req: ServerRequest, res: ServerResponse) {
|
|
119
|
+
const db = apiCache.getDb();
|
|
120
|
+
const id = req.locals.urlParameters.get('id', '');
|
|
121
|
+
|
|
122
|
+
const response = {
|
|
123
|
+
status: 'ok',
|
|
124
|
+
message: 'Delete a page.',
|
|
125
|
+
result: null,
|
|
126
|
+
};
|
|
127
|
+
if (id) {
|
|
128
|
+
const result = await db.deleteObject('$__s_page', { menuid: id });
|
|
129
|
+
response.result = result;
|
|
130
|
+
response.status = 'ok';
|
|
131
|
+
}
|
|
132
|
+
ApiHelper.sendJson(req, res, response);
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
}
|