@opengis/admin 0.2.101 → 0.2.102

Sign up to get free protection for your applications and to get access to all the features.
@@ -24,12 +24,14 @@ export default async function widgetGet({
24
24
  const sqls = {
25
25
  comment: pg.pk['admin.users']
26
26
  ? `select communication_id, entity_id, body, subject, c.cdate, c.uid,
27
- ${username}, u.login, avatar
28
- from crm.communications c left join admin.users u on u.uid=c.uid where entity_id=$1 order by cdate desc`
27
+ ${username} as username, u.login, u.avatar
28
+ from crm.communications c
29
+ left join admin.users u on u.uid=c.uid
30
+ where entity_id=$1 order by cdate desc`
29
31
  : 'select communication_id, entity_id, body, subject, cdate, uid from crm.communications where entity_id=$1 order by cdate desc',
30
32
 
31
33
  history: `SELECT change_id, entity_id, entity_type, change_type, change_date, a.change_user_id, a.uid, a.cdate, b.json_agg as changes,
32
- ${username}, u.login
34
+ ${username} as username, u.login, u.avatar
33
35
  FROM log.table_changes a
34
36
  left join admin.users u on a.change_user_id = u.uid
35
37
  left join lateral(
@@ -46,21 +48,25 @@ export default async function widgetGet({
46
48
  limit 100`,
47
49
 
48
50
  checklist: pg.pk['admin.users']
49
- ? `SELECT checklist_id, entity_id, subject, is_done, done_date, c.uid, c.cdate, ${username}, u.login,
50
- avatar FROM crm.checklists c left join admin.users u on u.uid=c.uid where entity_id=$1 order by cdate desc`
51
+ ? `SELECT checklist_id, entity_id, subject, is_done, done_date, c.uid, c.cdate, ${username} as username, u.login, u.avatar
52
+ FROM crm.checklists c
53
+ left join admin.users u on u.uid=c.uid
54
+ where entity_id=$1 order by cdate desc`
51
55
  : 'SELECT checklist_id, entity_id, subject, is_done, done_date, uid, cdate FROM crm.checklists where entity_id=$1 order by cdate desc',
52
56
 
53
57
  file: pg.pk['admin.users']
54
- ? `SELECT file_id, entity_id, entity_type, file_path, uploaded_name, ext, size, c.uid, c.cdate, file_type, c.ismain,
55
- ${username}, u.login, isverified,
56
- avatar, c.uid as author, file_status FROM crm.files c left join admin.users u on u.uid=c.uid
58
+ ? `SELECT file_id, entity_id, entity_type, file_path, uploaded_name, ext, size, c.uid, c.cdate, file_type, c.ismain,
59
+ ${username} as username, u.login, isverified, u.avatar, u.uid as author, file_status
60
+ FROM crm.files c
61
+ left join admin.users u on u.uid=c.uid
57
62
  where entity_id=$1 and file_status<>3 order by cdate desc`
58
63
  : `SELECT file_id, entity_id, entity_type, file_path, uploaded_name, ext, size, uid, cdate, file_type, ismain,
59
64
  isverified, uid as author, file_status FROM crm.files c where entity_id=$1 and file_status<>3 order by cdate desc`,
60
65
  gallery: pg.pk['admin.users']
61
66
  ? `SELECT file_id, entity_id, entity_type, file_path, uploaded_name, ext, size, c.uid, c.cdate, file_type, c.ismain,
62
- ${username}, u.login, isverified,
63
- avatar, c.uid as author, file_status FROM crm.files c left join admin.users u on u.uid=c.uid
67
+ ${username} as username, u.login, u.avatar, isverified, u.avatar, c.uid as author, file_status
68
+ FROM crm.files c
69
+ left join admin.users u on u.uid=c.uid
64
70
  where entity_id=$1 and file_status<>3 and ext = any($2) order by cdate desc`
65
71
  : `SELECT file_id, entity_id, entity_type, file_path, uploaded_name, ext, size, c.uid, c.cdate, file_type, ismain,
66
72
  isverified, uid as author, file_status FROM crm.files c where entity_id=$1 and file_status<>3 and ext = any($2) order by cdate desc`,
@@ -8,11 +8,13 @@ import { uploadMultiPart } from '@opengis/fastify-file/utils.js';
8
8
 
9
9
  const tableList = {
10
10
  comment: 'crm.communications',
11
+ gallery: 'crm.files',
11
12
  checklist: 'crm.checklists',
12
13
  };
13
14
  const pkList = {
14
15
  comment: 'communication_id',
15
16
  checklist: 'checklist_id',
17
+ gallery: 'file_id',
16
18
  };
17
19
 
18
20
  const galleryExtList = ['png', 'svg', 'jpg', 'jpeg', 'gif', 'mp4', 'mov', 'avi'];
@@ -28,49 +30,55 @@ export default async function widgetSet(req) {
28
30
 
29
31
  const table = tableList[type];
30
32
 
33
+ // dsadasdad
34
+ if (['gallery', 'file'].includes(type) && req.headers['content-type'].split(';').shift() === "multipart/form-data") {
35
+ const file = await uploadMultiPart(req);
36
+ const extName = path.extname(file.filepath).slice(1).toLowerCase();
31
37
 
32
- if (['gallery', 'file'].includes(type)) {
33
- const file = await uploadMultiPart(req);
34
- const extName = path.extname(file.filepath).slice(1).toLowerCase();
38
+ const data = {
39
+ uploaded_name: file?.originalFilename?.toLocaleLowerCase()?.replace(/'/g, '\'\''),
40
+ file_path: file?.relativeFilepath?.replace(/\\/g, '/'),
41
+ ext: extName,
42
+ size: file?.size,
43
+ file_status: 1,
44
+ uid: user?.uid || 1,
45
+ entity_id: objectid,
46
+ };
35
47
 
36
- const data = {
37
- uploaded_name: file?.originalFilename?.toLocaleLowerCase()?.replace(/'/g, '\'\''),
38
- file_path: file?.relativeFilepath?.replace(/\\/g, '/'),
39
- ext: extName,
40
- size: file?.size,
41
- file_status: 1,
42
- uid: user?.uid || 1,
43
- entity_id: objectid,
44
- };
48
+ if (type === 'gallery' && !galleryExtList.includes(extName.toLowerCase())) {
49
+ return { message: 'invalid file extension', status: 400 };
50
+ }
45
51
 
46
- if (type === 'gallery' && !galleryExtList.includes(extName.toLowerCase())) {
47
- return { message: 'invalid file extension', status: 400 };
48
- }
52
+ const { rows = [] } = await dataInsert({
53
+ table: 'crm.files', data, uid: user?.uid,
54
+ });
55
+ return {
56
+ rowCount: 1, data: 'ok', command: 'UPLOAD', id: rows[0]?.file_id, entity_id: rows[0]?.entity_id,
57
+ };
58
+ }
59
+ const { pk } = await getMeta({ pg, table });
60
+ if (!pk) return { message: 'table not found', status: 404 };
49
61
 
50
- const { rows = [] } = await dataInsert({
51
- table: 'crm.files', data, uid: user?.uid,
52
- });
53
- return {
54
- rowCount: 1, data: 'ok', command: 'UPLOAD', id: rows[0]?.file_id, entity_id: rows[0]?.entity_id,
55
- };
56
- }
57
- const { pk } = await getMeta({ pg, table });
58
- if (!pk) return { message: 'table not found', status: 404 };
62
+ const data = { ...body, uid: user?.uid, entity_id: objectid };
59
63
 
60
- const data = { ...body, uid: user?.uid, entity_id: objectid };
64
+ await applyHook('onWidgetSet', {
65
+ link: req.path,
66
+ id,
67
+ objectid,
68
+ session,
69
+ type,
70
+ payload: data,
71
+ });
61
72
 
62
- await applyHook('onWidgetSet', {
63
- link: req.path, session, type, payload: data,
73
+ const result = id
74
+ ? await dataUpdate({
75
+ table, data, id, uid: user?.uid,
76
+ })
77
+ : await dataInsert({
78
+ table, data, uid: user?.uid,
64
79
  });
65
- const result = id
66
- ? await dataUpdate({
67
- table, data, id, uid: user?.uid,
68
- })
69
- : await dataInsert({
70
- table, data, uid: user?.uid,
71
- });
72
80
 
73
- return {
74
- rowCount: result.rowCount, data: 'ok', command: result.command, id: result.rows?.[0]?.[pkList[type]] || result?.[pkList[type]],
75
- };
81
+ return {
82
+ rowCount: result.rowCount, data: 'ok', command: result.command, id: result.rows?.[0]?.[pkList[type]] || result?.[pkList[type]],
83
+ };
76
84
  }
@@ -0,0 +1,12 @@
1
+ import { pgClients } from '@opengis/fastify-table/utils.js';
2
+
3
+ export default async function onWidgetSet({
4
+ pg = pgClients.client, id, objectid, type, payload = {},
5
+ }) {
6
+ if (!id || !objectid || type !== 'gallery') {
7
+ return null;
8
+ }
9
+ if (payload?.ismain) {
10
+ await pg.query('update crm.files set ismain=false where entity_id=$1 and file_id<>$2', [objectid, id]);
11
+ }
12
+ }
@@ -1,11 +1,16 @@
1
+ import { addHook } from '@opengis/fastify-table/utils.js';
2
+
1
3
  import widgetDel from './controllers/widget.del.js';
2
4
  import widgetSet from './controllers/widget.set.js';
3
5
  import widgetGet from './controllers/widget.get.js';
4
6
 
5
- import { tableSchema } from './schema.js'
7
+ import onWidgetSet from './hook/onWidgetSet.js';
8
+
9
+ import { tableSchema } from './schema.js';
6
10
 
7
11
  export default async function route(fastify) {
8
12
  fastify.delete(`/widget/:type/:objectid/:id`, { scheme: tableSchema }, widgetDel);
9
13
  fastify.post(`/widget/:type/:objectid/:id?`, { scheme: tableSchema }, widgetSet);
10
14
  fastify.get(`/widget/:type/:objectid`, { config: { policy: ['public'] }, scheme: tableSchema }, widgetGet);
15
+ addHook('onWidgetSet', onWidgetSet);
11
16
  }
@@ -1,13 +0,0 @@
1
- export default function obj2db(data, nonexistCol) {
2
- if (
3
- typeof data !== 'object'
4
- || Array.isArray(data)
5
- || !Object.keys(data || {}).length
6
- ) return { error: 'invalid data type' };
7
-
8
- const columns = Object.keys(data)?.filter((key) => !nonexistCol.includes(key));
9
- // const columns = existColumns?.filter((col) => data[col] || data?.[col] === 0);
10
- const args = columns?.map((col) => data[col]);
11
-
12
- return { columns, args, error: !columns?.length ? 'nothing to process' : undefined };
13
- }