@opengis/gis 0.2.145 → 0.2.146

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.
Files changed (201) hide show
  1. package/README.md +181 -181
  2. package/dist/{CardIcon-KPdJQSAj.js → CardIcon-BCll_4SB.js} +1 -1
  3. package/dist/{EntityCreatePage-Da8XgBKU.js → EntityCreatePage-Ch8NU_Yw.js} +14 -14
  4. package/dist/{EntityEditPage-QktKEAxz.js → EntityEditPage-CRRcW7FL.js} +27 -27
  5. package/dist/{EntityTablePage-D0CxSITf.js → EntityTablePage-DXJPsOx8.js} +26 -26
  6. package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-B7Nkfd7c.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BJ-zsrml.js} +1 -1
  7. package/dist/{HeaderActions.vue_vue_type_script_setup_true_lang-9kitzmJK.js → HeaderActions.vue_vue_type_script_setup_true_lang-EZGjVDor.js} +5 -5
  8. package/dist/{MapSettings-CBkp5Cfw.js → MapSettings-CG7u4F4i.js} +33 -33
  9. package/dist/{RastersTablePage-D1k_WisA.js → RastersTablePage-CN5hfj6F.js} +29 -29
  10. package/dist/cartocss-BNVXz6oJ.js +1065 -0
  11. package/dist/{import-utils-CVdAWcDL.js → import-utils-BwcMU3Gp.js} +33 -33
  12. package/dist/{index-DJKZSGVW.js → index-8aAArh78.js} +63 -63
  13. package/dist/index.css +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.umd.cjs +35 -35
  16. package/dist/raster-BN1gB-NS.js +804 -0
  17. package/dist/{register-Br5WdQas.js → register-DZ24Z6dC.js} +8 -8
  18. package/dist/{service-1sCTWkzU.js → service-DXLa4AiW.js} +392 -380
  19. package/dist/{vs-datatable-CviY_UkX.js → vs-datatable-DVC6-2mA.js} +28 -28
  20. package/module/cls.json +6 -6
  21. package/module/gis/card/gis.metadata.table/index.yml +22 -22
  22. package/module/gis/card/gis.metadata.table/main_info.hbs +20 -20
  23. package/module/gis/card/gis.metadata.table/metadata_info.hbs +27 -27
  24. package/module/gis/card/gis.metadata.table/other.hbs +25 -25
  25. package/module/gis/card/gis.rasters.table/index.yml +11 -11
  26. package/module/gis/card/gis.rasters.table/main_info.hbs +27 -27
  27. package/module/gis/card/gis.registers.table/cls.hbs +36 -36
  28. package/module/gis/card/gis.registers.table/columns.hbs +89 -89
  29. package/module/gis/card/gis.registers.table/filters.hbs +80 -80
  30. package/module/gis/card/gis.registers.table/index.yml +23 -23
  31. package/module/gis/card/gis.registers.table/main_info.hbs +35 -35
  32. package/module/gis/card/gis.registers.table/source.hbs +45 -45
  33. package/module/gis/card/gis.services.table/attributes.hbs +91 -91
  34. package/module/gis/card/gis.services.table/filters.hbs +83 -83
  35. package/module/gis/card/gis.services.table/index.yml +25 -25
  36. package/module/gis/card/gis.services.table/main_info.hbs +27 -27
  37. package/module/gis/card/gis.services.table/source.hbs +25 -25
  38. package/module/gis/cls/bool.yes_no.json +12 -12
  39. package/module/gis/cls/encoding.json +14 -14
  40. package/module/gis/cls/geom_type.json +14 -14
  41. package/module/gis/cls/gis.column_type.json +34 -34
  42. package/module/gis/cls/gis.column_view_type.json +26 -26
  43. package/module/gis/cls/gis.filter_type.json +22 -22
  44. package/module/gis/cls/language.json +10 -10
  45. package/module/gis/cls/meta.service_type.json +42 -42
  46. package/module/gis/cls/ogc.service.json +21 -21
  47. package/module/gis/cls/service_type.json +42 -42
  48. package/module/gis/cls/source_type.json +10 -10
  49. package/module/gis/cls/standarts.json +6 -6
  50. package/module/gis/cls/topic_category.json +106 -106
  51. package/module/gis/cls/update_frequency.json +29 -29
  52. package/module/gis/cls/view.json +21 -21
  53. package/module/gis/form/feedback.answer.form.json +10 -10
  54. package/module/gis/form/gis.cartocss.form.json +64 -64
  55. package/module/gis/form/gis.group_list.form.json +17 -17
  56. package/module/gis/form/gis.maps.form.json +61 -61
  57. package/module/gis/form/gis.metadata.form.json +240 -240
  58. package/module/gis/form/gis.metadata_new.form.json +195 -195
  59. package/module/gis/form/gis.ogc_service.form.json +51 -51
  60. package/module/gis/form/gis.rasters.form.json +76 -76
  61. package/module/gis/form/gis.registers.form.json +124 -124
  62. package/module/gis/form/gis.registers_column.form.json +84 -84
  63. package/module/gis/form/gis.registers_filter.form.json +65 -65
  64. package/module/gis/form/gis.services.form.json +111 -111
  65. package/module/gis/form/gis.services_attributes.form.json +75 -75
  66. package/module/gis/form/gis.services_filter.form.json +65 -65
  67. package/module/gis/menu.json +43 -43
  68. package/module/gis/select/admin.cls.name.sql +9 -9
  69. package/module/gis/select/layer_list.sql +7 -7
  70. package/module/gis/select/layer_list_text.sql +7 -7
  71. package/module/gis/select/pg.column_name.geometry.sql +12 -12
  72. package/module/gis/select/pg.columns.parent.sql +6 -6
  73. package/module/gis/select/pg.table_name.sql +17 -17
  74. package/module/gis/select/service_id.sql +1 -1
  75. package/module/gis/table/gis.cartocss.table.json +74 -74
  76. package/module/gis/table/gis.group_list.table.json +58 -58
  77. package/module/gis/table/gis.maps.table.json +110 -110
  78. package/module/gis/table/gis.metadata.table.json +70 -70
  79. package/module/gis/table/gis.metadata_new.table.json +137 -137
  80. package/module/gis/table/gis.ogc_service.table.json +100 -100
  81. package/module/gis/table/gis.rasters.table.json +101 -101
  82. package/module/gis/table/gis.registers.table.json +143 -143
  83. package/module/gis/table/gis.services.table.json +120 -120
  84. package/module/gis/table/site.gis.registers.table.json +88 -88
  85. package/module/gis/table/site.gis.services.table.json +106 -106
  86. package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
  87. package/module/gis/tokens.yml +5 -5
  88. package/module/permissions/form/permissions.users.form.json +151 -151
  89. package/module/permissions/table/gis.permissions.table.json +97 -97
  90. package/module/test/cls/bp_build_type.json +37 -37
  91. package/module/test/cls/doc_status.json +31 -31
  92. package/module/test/cls/ts.temp_status.json +18 -18
  93. package/module/test/cls/ts.temp_structure.ts_class.json +49 -49
  94. package/module/test/cls/ts.temp_type.json +9 -9
  95. package/module/test/layer/bp.json +59 -59
  96. package/module/test/layer/bp1.yml +33 -33
  97. package/module/test/layer/individual.yml +53 -53
  98. package/module/test/layer/ts.linking_passport.yml +55 -55
  99. package/module/test/layer/ts.temp_structure.yml +50 -50
  100. package/module/test/map/addr.yml +21 -21
  101. package/module/test/map/bp_myo.json +43 -43
  102. package/module/test/map/bpf.json +43 -43
  103. package/module/test/map/main.json +37 -37
  104. package/module/test/map/mbd.json +92 -92
  105. package/module/test/map/ts.json +53 -53
  106. package/module/test/select/address_id.json +2 -2
  107. package/module/test/select/address_id.sql +7 -7
  108. package/module/test/select/core.user_uid.sql +1 -1
  109. package/module/test/table/data_address.street.table.json +69 -69
  110. package/module/test/table/data_bp_myo.bp.table.json +122 -122
  111. package/package.json +75 -75
  112. package/plugin.js +55 -55
  113. package/server/migrations/array_intersect.sql +13 -13
  114. package/server/migrations/cartocss.sql +27 -27
  115. package/server/migrations/group_list.sql +74 -74
  116. package/server/migrations/maps.sql +30 -30
  117. package/server/migrations/metadata.sql +415 -415
  118. package/server/migrations/ogc.sql +106 -106
  119. package/server/migrations/rasters.sql +265 -265
  120. package/server/migrations/services.sql +247 -247
  121. package/server/migrations/services_users_rel.sql +22 -22
  122. package/server/migrations/widgets.sql +20 -20
  123. package/server/plugins/crons.js +21 -21
  124. package/server/plugins/mapnik/funcs/checkRasterFile.js +109 -109
  125. package/server/plugins/mapnik/funcs/mapnik.js +151 -151
  126. package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -8
  127. package/server/plugins/mapnik/map.proto +230 -230
  128. package/server/plugins/vite.js +74 -74
  129. package/server/routes/gis/cartocss/add.cartocss.js +42 -42
  130. package/server/routes/gis/cartocss/get.cartocss.js +59 -59
  131. package/server/routes/gis/checkXML.js +117 -117
  132. package/server/routes/gis/dashboard.js +29 -29
  133. package/server/routes/gis/index.mjs +87 -87
  134. package/server/routes/gis/metadata/editMetadata.js +34 -34
  135. package/server/routes/gis/metadata/metadataXML.js +13 -13
  136. package/server/routes/gis/ogc/map.info.point.js +124 -124
  137. package/server/routes/gis/registers/add.registry.js +35 -35
  138. package/server/routes/gis/registers/del.registry.js +14 -14
  139. package/server/routes/gis/registers/funcs/classifiers.js +100 -100
  140. package/server/routes/gis/registers/funcs/columns.js +3 -3
  141. package/server/routes/gis/registers/funcs/content.type.js +9 -9
  142. package/server/routes/gis/registers/funcs/get.info.js +89 -89
  143. package/server/routes/gis/registers/funcs/handleRegistryRequest.js +146 -146
  144. package/server/routes/gis/registers/gis.export.js +153 -153
  145. package/server/routes/gis/registers/gis.registry.js +64 -64
  146. package/server/routes/gis/registers/gis.registry.list.js +59 -59
  147. package/server/routes/gis/registers/insert.columns.js +107 -107
  148. package/server/routes/gis/registers/insert.filters.js +110 -110
  149. package/server/routes/gis/registers/map.registry.js +79 -79
  150. package/server/routes/gis/services/add.service.js +64 -64
  151. package/server/routes/gis/services/del.service.js +12 -12
  152. package/server/routes/gis/services/get.layer.geom.js +27 -27
  153. package/server/routes/gis/services/get.services.col.js +33 -33
  154. package/server/routes/gis/services/get.services.js +84 -84
  155. package/server/routes/gis/services/legend.auto.js +77 -77
  156. package/server/routes/map/controllers/clearTiles.js +34 -34
  157. package/server/routes/map/controllers/geojson.js +187 -187
  158. package/server/routes/map/controllers/jsonData.js +205 -205
  159. package/server/routes/map/controllers/layerList.js +102 -102
  160. package/server/routes/map/controllers/map.js +123 -123
  161. package/server/routes/map/controllers/mapCatalog.js +72 -72
  162. package/server/routes/map/controllers/mapCatalogAttribute.js +55 -55
  163. package/server/routes/map/controllers/mapFeatures.js +128 -128
  164. package/server/routes/map/controllers/mapFormat.js +234 -234
  165. package/server/routes/map/controllers/mapTiles.js +152 -152
  166. package/server/routes/map/controllers/maps.js +15 -15
  167. package/server/routes/map/controllers/marker_icon.js +43 -43
  168. package/server/routes/map/controllers/vtile.js +172 -172
  169. package/server/routes/map/index.mjs +169 -169
  170. package/server/routes/map/maps/add.map.js +43 -43
  171. package/server/routes/map/maps/del.map.js +18 -18
  172. package/server/routes/map/maps/get.map.js +118 -118
  173. package/server/routes/map/vtile1.js +179 -179
  174. package/server/routes/map/widgets/add.widget.js +38 -38
  175. package/server/routes/map/widgets/del.widget.js +22 -22
  176. package/server/routes/map/widgets/get.widget.js +40 -40
  177. package/server/routes/mapnik/controllers/clearTiles.js +106 -106
  178. package/server/routes/mapnik/controllers/createXml.js +67 -67
  179. package/server/routes/mapnik/controllers/createXmlMulti.js +76 -76
  180. package/server/routes/mapnik/controllers/fileSearch.js +38 -38
  181. package/server/routes/mapnik/controllers/fileStat.js +28 -28
  182. package/server/routes/mapnik/controllers/mapnikLogger.js +29 -29
  183. package/server/routes/mapnik/controllers/mapnikStat.js +19 -19
  184. package/server/routes/mapnik/controllers/pretile.js +144 -144
  185. package/server/routes/mapnik/controllers/rasterInfo.js +57 -57
  186. package/server/routes/mapnik/controllers/readDir.js +22 -22
  187. package/server/routes/mapnik/controllers/rtile.js +150 -150
  188. package/server/routes/mapnik/controllers/uploadRaster.js +157 -157
  189. package/server/routes/mapnik/functions/cartoBounds.js +32 -32
  190. package/server/routes/mapnik/functions/convertBoundToTile.js +27 -27
  191. package/server/routes/mapnik/functions/uploadXML.js +113 -113
  192. package/server/routes/mapnik/index.js +40 -40
  193. package/server/routes/permissions/controllers/catalog.permissions.edit.js +22 -22
  194. package/server/routes/permissions/controllers/catalog.permissions.js +7 -7
  195. package/server/routes/permissions/controllers/gis.catalog.js +80 -80
  196. package/server/routes/permissions/controllers/utils/get.permissions.js +59 -59
  197. package/server/routes/permissions/index.mjs +18 -18
  198. package/server/routes/root.mjs +3 -3
  199. package/utils.js +13 -13
  200. package/dist/cartocss-KfS-aCRn.js +0 -1053
  201. package/dist/raster-CKQiGAgN.js +0 -792
@@ -1,64 +1,64 @@
1
- import { pgClients, getTemplate } from "@opengis/fastify-table/utils.js";
2
-
3
- import { handleRegistryRequest } from './funcs/handleRegistryRequest.js';
4
-
5
- const maxLimit = 100;
6
- const defaultLimit = 9;
7
-
8
- export default async function gisRegistry({
9
- pg = pgClients.client, params = {}, query = {},
10
- }) {
11
- const { slug, objectId } = params;
12
- const { sql } = query;
13
-
14
- const limit = Math.min(query.limit || defaultLimit, maxLimit);
15
- const offset = query.page && query.page > 0 && !objectId ? (query.page - 1) * limit : 0;
16
-
17
- // if (!slug) return reply.code(404).send({ message: 'Params slug is required', status: 404 });
18
- if (!slug) throw new Error('Params slug is required');
19
-
20
- const {
21
- rows: [registry],
22
- } = await pg.query(
23
- `SELECT register_id, name, description, card, table_name,
24
- columns, filters, query, "order", pk, register_key,
25
- is_files, view, is_downloadable, is_map, is_register, service_id
26
- FROM gis.registers
27
- WHERE $1 in (register_key,register_id)`,
28
- [slug],
29
- );
30
-
31
- if (registry) {
32
- return handleRegistryRequest({
33
- settings: registry,
34
- query,
35
- object_id: objectId,
36
- offset,
37
- limit,
38
- page: query.page,
39
- pg,
40
- sql,
41
- });
42
- }
43
-
44
- const registryTemplate = await getTemplate('registry', slug);
45
- // if (!registryTemplate) return reply.code(404).send({ message: 'Template not found', status: 404 });
46
- if (!registryTemplate) throw new Error('Template not found');
47
-
48
- return handleRegistryRequest({
49
- settings: registryTemplate,
50
- query,
51
- object_id: objectId,
52
- register_key: registry.register_key,
53
- is_downloadable: registry?.is_downloadable || registryTemplate?.is_downloadable,
54
- is_map: registryTemplate.is_map,
55
- is_register: registryTemplate.is_register,
56
- is_files: registryTemplate.is_files,
57
- service_id: registryTemplate.service_id,
58
- offset,
59
- limit,
60
- page: query.page,
61
- pg,
62
- sql,
63
- });
64
- }
1
+ import { pgClients, getTemplate } from "@opengis/fastify-table/utils.js";
2
+
3
+ import { handleRegistryRequest } from './funcs/handleRegistryRequest.js';
4
+
5
+ const maxLimit = 100;
6
+ const defaultLimit = 9;
7
+
8
+ export default async function gisRegistry({
9
+ pg = pgClients.client, params = {}, query = {},
10
+ }) {
11
+ const { slug, objectId } = params;
12
+ const { sql } = query;
13
+
14
+ const limit = Math.min(query.limit || defaultLimit, maxLimit);
15
+ const offset = query.page && query.page > 0 && !objectId ? (query.page - 1) * limit : 0;
16
+
17
+ // if (!slug) return reply.code(404).send({ message: 'Params slug is required', status: 404 });
18
+ if (!slug) throw new Error('Params slug is required');
19
+
20
+ const {
21
+ rows: [registry],
22
+ } = await pg.query(
23
+ `SELECT register_id, name, description, card, table_name,
24
+ columns, filters, query, "order", pk, register_key,
25
+ is_files, view, is_downloadable, is_map, is_register, service_id
26
+ FROM gis.registers
27
+ WHERE $1 in (register_key,register_id)`,
28
+ [slug],
29
+ );
30
+
31
+ if (registry) {
32
+ return handleRegistryRequest({
33
+ settings: registry,
34
+ query,
35
+ object_id: objectId,
36
+ offset,
37
+ limit,
38
+ page: query.page,
39
+ pg,
40
+ sql,
41
+ });
42
+ }
43
+
44
+ const registryTemplate = await getTemplate('registry', slug);
45
+ // if (!registryTemplate) return reply.code(404).send({ message: 'Template not found', status: 404 });
46
+ if (!registryTemplate) throw new Error('Template not found');
47
+
48
+ return handleRegistryRequest({
49
+ settings: registryTemplate,
50
+ query,
51
+ object_id: objectId,
52
+ register_key: registry.register_key,
53
+ is_downloadable: registry?.is_downloadable || registryTemplate?.is_downloadable,
54
+ is_map: registryTemplate.is_map,
55
+ is_register: registryTemplate.is_register,
56
+ is_files: registryTemplate.is_files,
57
+ service_id: registryTemplate.service_id,
58
+ offset,
59
+ limit,
60
+ page: query.page,
61
+ pg,
62
+ sql,
63
+ });
64
+ }
@@ -1,59 +1,59 @@
1
- import { pgClients, getTemplatePath, getTemplate } from "@opengis/fastify-table/utils.js";
2
- const pg = pgClients.client;
3
-
4
- export default async function gisRegistryList(req = {}) {
5
- const { query = {} } = req;
6
- const { page = 1, limit = 9, search = '' } = query;
7
- const offset = limit * (page - 1);
8
-
9
- const dbResult = await pg.query(
10
- `SELECT register_key, name, description, keywords
11
- FROM gis.registers
12
- WHERE is_public = true AND is_active = true`
13
- );
14
-
15
- let templates = dbResult?.rows;
16
- let fromDatabase = true;
17
-
18
- if (!templates?.length) {
19
- fromDatabase = false;
20
-
21
- const registryListTemplate = await getTemplatePath('registry');
22
- if (!registryListTemplate?.length) throw new Error('Templates not found');
23
-
24
- templates = ( await Promise.all(
25
- registryListTemplate.map(async ([slug]) => {
26
- try {
27
- const tpl = await getTemplate('registry', slug);
28
- if (tpl?.visible === false) return null;
29
-
30
- const { register_key, name, description, keywords } = tpl;
31
- return { register_key, name, description, keywords };
32
- } catch {
33
- return null;
34
- }
35
- })
36
- ));
37
- }
38
-
39
- const filteredBySearch = search
40
- ? templates.filter(tpl => {
41
- const q = search.toLowerCase();
42
- return (
43
- tpl.name?.toLowerCase().includes(q) ||
44
- tpl.description?.toLowerCase().includes(q) ||
45
- tpl.keywords?.join(' ').toLowerCase().includes(q)
46
- );
47
- })
48
- : templates;
49
-
50
- const paged = filteredBySearch.slice(offset, offset + limit);
51
-
52
- return {
53
- rows: paged,
54
- total: filteredBySearch.length,
55
- page: parseInt(page, 10),
56
- limit: parseInt(limit, 10),
57
- offset
58
- };
59
- }
1
+ import { pgClients, getTemplatePath, getTemplate } from "@opengis/fastify-table/utils.js";
2
+ const pg = pgClients.client;
3
+
4
+ export default async function gisRegistryList(req = {}) {
5
+ const { query = {} } = req;
6
+ const { page = 1, limit = 9, search = '' } = query;
7
+ const offset = limit * (page - 1);
8
+
9
+ const dbResult = await pg.query(
10
+ `SELECT register_key, name, description, keywords
11
+ FROM gis.registers
12
+ WHERE is_public = true AND is_active = true`
13
+ );
14
+
15
+ let templates = dbResult?.rows;
16
+ let fromDatabase = true;
17
+
18
+ if (!templates?.length) {
19
+ fromDatabase = false;
20
+
21
+ const registryListTemplate = await getTemplatePath('registry');
22
+ if (!registryListTemplate?.length) throw new Error('Templates not found');
23
+
24
+ templates = ( await Promise.all(
25
+ registryListTemplate.map(async ([slug]) => {
26
+ try {
27
+ const tpl = await getTemplate('registry', slug);
28
+ if (tpl?.visible === false) return null;
29
+
30
+ const { register_key, name, description, keywords } = tpl;
31
+ return { register_key, name, description, keywords };
32
+ } catch {
33
+ return null;
34
+ }
35
+ })
36
+ ));
37
+ }
38
+
39
+ const filteredBySearch = search
40
+ ? templates.filter(tpl => {
41
+ const q = search.toLowerCase();
42
+ return (
43
+ tpl.name?.toLowerCase().includes(q) ||
44
+ tpl.description?.toLowerCase().includes(q) ||
45
+ tpl.keywords?.join(' ').toLowerCase().includes(q)
46
+ );
47
+ })
48
+ : templates;
49
+
50
+ const paged = filteredBySearch.slice(offset, offset + limit);
51
+
52
+ return {
53
+ rows: paged,
54
+ total: filteredBySearch.length,
55
+ page: parseInt(page, 10),
56
+ limit: parseInt(limit, 10),
57
+ offset
58
+ };
59
+ }
@@ -1,107 +1,107 @@
1
- import { getToken } from '@opengis/fastify-table/utils.js';
2
- /**
3
- * Автозаповнення колонок Реєстру
4
- *
5
- * @method put
6
- * @summary Автозаповнення колонок Реєстру
7
- * @alias gis.registers
8
- * @type api
9
- * @tag dataset
10
- * @param {String} token - токен
11
- * @returns {Number} status - номер помилки
12
- * @returns {String} error - опис помилки
13
- * @returns {String} message - повідомлення про успішне виконання і передача певних даних
14
- */
15
- export default async function insertColumns(req,reply) {
16
- const {pg, user, params} = req;
17
- const token = params.token;
18
- if (!token) return { message: 'empty token', status: 400 };
19
- try {
20
-
21
- const tokenData = await getToken({ token, uid: user?.uid });
22
- if (!tokenData) return reply.code(400).send({ message: 'access restricted', status: 400 });
23
-
24
- const { id, type } = JSON.parse(tokenData) || {};
25
- if (!id||!type) return reply.code(403).send({ message: 'access restricted', status: 403 });
26
- if (!['services','registers'].includes(type)) return reply.code(403).send({ message: 'invalid type', status: 403 });
27
-
28
- const tableColumn = (type === 'registers') ? 'table_name':'source_path';
29
- const jsonColumn = (type === 'registers') ? 'columns':'attributes';
30
- const pk = (type === 'registers')?'register_id':'service_id';
31
-
32
- const select = `update gis.${type} set ${jsonColumn}=
33
- (select
34
- jsonb_agg(row_to_json(q)) as column_list
35
- from
36
- (select
37
- q.column_name as name,
38
- case
39
- when q.column_name='editor_id' and comment is null then 'Хто редагував'
40
- when q.column_name ilike '%geom%' and comment is null then 'Геометрія'
41
- when q.column_name='editor_date' and comment is null then 'Дата редагування'
42
- when q.column_name='image' and comment is null then 'Зображення'
43
- when q.column_name='file' and comment is null then 'Файл'
44
- when q.column_name='files' and comment is null then 'Файли'
45
- else comment
46
- end as ua,
47
- case
48
- when q.data_type in ('text','character varying') then 'text'
49
- when q.data_type ='ARRAY' then 'tags'
50
- when q.data_type in ('integer','numeric','double precision') then 'number'
51
- when q.data_type ='boolean' then 'yes/no'
52
- when q.data_type='USER-DEFINED' then 'geom'
53
- when q.data_type in ('date','timestamp without time zone') then 'date'
54
- end as format,
55
- '' as data,
56
- false as hidden_register,
57
- false as hidden_card
58
- from
59
- (
60
- select
61
- column_name,
62
- data_type,
63
- table_schema || '.' || table_name as table_name
64
- from
65
- (
66
- select
67
- distinct table_name,
68
- table_schema,
69
- column_name,
70
- data_type
71
- from
72
- information_schema.columns
73
- ) q
74
- ) q
75
-
76
- left join lateral (
77
- SELECT
78
- pgd.description AS comment,
79
- pgns.nspname||'.'||pgc.relname AS table_name,
80
- pg_attribute.attname AS column_name
81
-
82
- FROM
83
- pg_catalog.pg_description pgd
84
- JOIN pg_catalog.pg_class pgc ON pgd.objoid = pgc.oid
85
- JOIN pg_catalog.pg_namespace pgns ON pgc.relnamespace = pgns.oid
86
- JOIN pg_catalog.pg_attribute pg_attribute ON pgc.oid = pg_attribute.attrelid
87
- AND pg_attribute.attnum = pgd.objsubid
88
- )b on b.column_name=q.column_name and b.table_name=q.table_name
89
- where
90
- q.table_name = (
91
- select
92
- ${tableColumn}
93
- from
94
- gis.${type}
95
- where
96
- ${pk} = '${id}'
97
- ) and q.column_name not in ('cdate','uid') and q.data_type<>'json')q
98
- )
99
- where ${pk} = '${id}'
100
- `;
101
- await pg.one(select);
102
-
103
- return { message: 'Колонки заповнені упішно', status: 200 };
104
- } catch (err) {
105
- return reply.code(500).send({ message: err.message, status: 500 });
106
- }
107
- }
1
+ import { getToken } from '@opengis/fastify-table/utils.js';
2
+ /**
3
+ * Автозаповнення колонок Реєстру
4
+ *
5
+ * @method put
6
+ * @summary Автозаповнення колонок Реєстру
7
+ * @alias gis.registers
8
+ * @type api
9
+ * @tag dataset
10
+ * @param {String} token - токен
11
+ * @returns {Number} status - номер помилки
12
+ * @returns {String} error - опис помилки
13
+ * @returns {String} message - повідомлення про успішне виконання і передача певних даних
14
+ */
15
+ export default async function insertColumns(req,reply) {
16
+ const {pg, user, params} = req;
17
+ const token = params.token;
18
+ if (!token) return { message: 'empty token', status: 400 };
19
+ try {
20
+
21
+ const tokenData = await getToken({ token, uid: user?.uid });
22
+ if (!tokenData) return reply.code(400).send({ message: 'access restricted', status: 400 });
23
+
24
+ const { id, type } = JSON.parse(tokenData) || {};
25
+ if (!id||!type) return reply.code(403).send({ message: 'access restricted', status: 403 });
26
+ if (!['services','registers'].includes(type)) return reply.code(403).send({ message: 'invalid type', status: 403 });
27
+
28
+ const tableColumn = (type === 'registers') ? 'table_name':'source_path';
29
+ const jsonColumn = (type === 'registers') ? 'columns':'attributes';
30
+ const pk = (type === 'registers')?'register_id':'service_id';
31
+
32
+ const select = `update gis.${type} set ${jsonColumn}=
33
+ (select
34
+ jsonb_agg(row_to_json(q)) as column_list
35
+ from
36
+ (select
37
+ q.column_name as name,
38
+ case
39
+ when q.column_name='editor_id' and comment is null then 'Хто редагував'
40
+ when q.column_name ilike '%geom%' and comment is null then 'Геометрія'
41
+ when q.column_name='editor_date' and comment is null then 'Дата редагування'
42
+ when q.column_name='image' and comment is null then 'Зображення'
43
+ when q.column_name='file' and comment is null then 'Файл'
44
+ when q.column_name='files' and comment is null then 'Файли'
45
+ else comment
46
+ end as ua,
47
+ case
48
+ when q.data_type in ('text','character varying') then 'text'
49
+ when q.data_type ='ARRAY' then 'tags'
50
+ when q.data_type in ('integer','numeric','double precision') then 'number'
51
+ when q.data_type ='boolean' then 'yes/no'
52
+ when q.data_type='USER-DEFINED' then 'geom'
53
+ when q.data_type in ('date','timestamp without time zone') then 'date'
54
+ end as format,
55
+ '' as data,
56
+ false as hidden_register,
57
+ false as hidden_card
58
+ from
59
+ (
60
+ select
61
+ column_name,
62
+ data_type,
63
+ table_schema || '.' || table_name as table_name
64
+ from
65
+ (
66
+ select
67
+ distinct table_name,
68
+ table_schema,
69
+ column_name,
70
+ data_type
71
+ from
72
+ information_schema.columns
73
+ ) q
74
+ ) q
75
+
76
+ left join lateral (
77
+ SELECT
78
+ pgd.description AS comment,
79
+ pgns.nspname||'.'||pgc.relname AS table_name,
80
+ pg_attribute.attname AS column_name
81
+
82
+ FROM
83
+ pg_catalog.pg_description pgd
84
+ JOIN pg_catalog.pg_class pgc ON pgd.objoid = pgc.oid
85
+ JOIN pg_catalog.pg_namespace pgns ON pgc.relnamespace = pgns.oid
86
+ JOIN pg_catalog.pg_attribute pg_attribute ON pgc.oid = pg_attribute.attrelid
87
+ AND pg_attribute.attnum = pgd.objsubid
88
+ )b on b.column_name=q.column_name and b.table_name=q.table_name
89
+ where
90
+ q.table_name = (
91
+ select
92
+ ${tableColumn}
93
+ from
94
+ gis.${type}
95
+ where
96
+ ${pk} = '${id}'
97
+ ) and q.column_name not in ('cdate','uid') and q.data_type<>'json')q
98
+ )
99
+ where ${pk} = '${id}'
100
+ `;
101
+ await pg.one(select);
102
+
103
+ return { message: 'Колонки заповнені упішно', status: 200 };
104
+ } catch (err) {
105
+ return reply.code(500).send({ message: err.message, status: 500 });
106
+ }
107
+ }