@opengis/gis 0.2.184 → 0.2.186
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/dist/index.css +1 -1
- package/module/gis/card/gis.metadata.table/index.yml +22 -22
- package/module/gis/card/gis.rasters.table/index.yml +11 -11
- package/module/gis/card/gis.registers.table/index.yml +23 -23
- package/module/gis/card/gis.services.table/index.yml +25 -25
- package/module/gis/cls/bool.yes_no.json +12 -12
- package/module/gis/cls/encoding.json +14 -14
- package/module/gis/cls/geom_type.json +14 -14
- package/module/gis/cls/gis.column_type.json +34 -34
- package/module/gis/cls/gis.column_view_type.json +26 -26
- package/module/gis/cls/gis.filter_type.json +22 -22
- package/module/gis/cls/language.json +10 -10
- package/module/gis/cls/meta.service_type.json +42 -42
- package/module/gis/cls/ogc.service.json +21 -21
- package/module/gis/cls/source_type.json +10 -10
- package/module/gis/cls/standarts.json +6 -6
- package/module/gis/cls/topic_category.json +106 -106
- package/module/gis/cls/update_frequency.json +29 -29
- package/module/gis/cls/view.json +21 -21
- package/module/gis/form/feedback.answer.form.json +10 -10
- package/module/gis/form/gis.cartocss.form.json +64 -64
- package/module/gis/form/gis.group_list.form.json +17 -17
- package/module/gis/form/gis.maps.form.json +61 -61
- package/module/gis/form/gis.metadata.form.json +240 -240
- package/module/gis/form/gis.metadata_new.form.json +195 -195
- package/module/gis/form/gis.ogc_service.form.json +51 -51
- package/module/gis/form/gis.rasters.form.json +76 -76
- package/module/gis/form/gis.registers_column.form.json +84 -84
- package/module/gis/form/gis.registers_filter.form.json +65 -65
- package/module/gis/form/gis.services.form.json +111 -111
- package/module/gis/form/gis.services_attributes.form.json +75 -75
- package/module/gis/form/gis.services_filter.form.json +65 -65
- package/module/gis/menu.json +43 -43
- package/module/gis/select/admin.cls.name.sql +9 -9
- package/module/gis/select/layer_list.sql +7 -7
- package/module/gis/select/layer_list_text.sql +7 -7
- package/module/gis/select/pg.column_name.geometry.sql +12 -12
- package/module/gis/select/pg.columns.parent.sql +6 -6
- package/module/gis/select/pg.table_name.sql +17 -17
- package/module/gis/select/service_id.sql +1 -1
- package/module/gis/select/srid.sql +7 -7
- package/module/gis/table/gis.cartocss.table.json +74 -74
- package/module/gis/table/gis.group_list.table.json +58 -58
- package/module/gis/table/gis.maps.table.json +110 -110
- package/module/gis/table/gis.metadata.table.json +70 -70
- package/module/gis/table/gis.metadata_new.table.json +137 -137
- package/module/gis/table/gis.ogc_service.table.json +100 -100
- package/module/gis/table/gis.rasters.table.json +113 -113
- package/module/gis/table/gis.registers.table.json +143 -143
- package/module/gis/table/gis.services.table.json +120 -120
- package/module/gis/table/site.gis.registers.table.json +88 -88
- package/module/gis/table/site.gis.services.table.json +106 -106
- package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
- package/module/gis/tokens.yml +5 -5
- package/module/permissions/form/permissions.users.form.json +151 -151
- package/module/permissions/table/gis.permissions.table.json +97 -97
- package/package.json +1 -1
- package/server/routes/registers/functions/getTableColumnMeta.js +6 -6
- package/server/routes/registers/functions/gis.suggest.js +22 -14
- package/server/routes/registers/functions/handleRegistryRequest.js +3 -2
- package/server/routes/registers/registers.route.test.js +1 -1
- package/server/routes/services/functions/get.services.js +34 -4
- package/server/routes/services/services.route.test.js +4 -0
|
@@ -136,7 +136,7 @@ describe('GIS routes', () => {
|
|
|
136
136
|
const { table, filter } = await pg.query('select table_name as table, filters->0->>\'name\' as filter from gis.registers where register_id=$1', [testId]).then((r) => r.rows[0]);
|
|
137
137
|
expect(filter).toBeTypeOf('string');
|
|
138
138
|
const hash = 'unit-test';
|
|
139
|
-
const redisKey = `${pg.options.database}:
|
|
139
|
+
const redisKey = `${pg.options.database}:gis-suggest-filter:${hash}`;
|
|
140
140
|
await rclient.set(redisKey, JSON.stringify({ register: testId, filter }), 'EX', 1 * 60);
|
|
141
141
|
const res = await injectWithHeaders({
|
|
142
142
|
method: 'GET',
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
|
|
1
3
|
import { NotFoundError } from '@opengis/fastify-table/errors.js';
|
|
2
4
|
import {
|
|
3
|
-
dataUpdate, getMeta, pgClients, yml2json,
|
|
5
|
+
dataUpdate, getMeta, pgClients, yml2json,
|
|
6
|
+
getTemplate, getSelect, getRedis
|
|
4
7
|
} from '@opengis/fastify-table/utils.js';
|
|
5
8
|
|
|
6
9
|
const columnType = {
|
|
@@ -13,6 +16,8 @@ const columnType = {
|
|
|
13
16
|
'timestamp with time zone': 'date',
|
|
14
17
|
};
|
|
15
18
|
|
|
19
|
+
const rclient = getRedis();
|
|
20
|
+
|
|
16
21
|
export default async function getServices({ id }, pg = pgClients.client) {
|
|
17
22
|
const t = await getTemplate('layer', id);
|
|
18
23
|
if (t) return t;
|
|
@@ -79,9 +84,34 @@ export default async function getServices({ id }, pg = pgClients.client) {
|
|
|
79
84
|
?.split?.(','),
|
|
80
85
|
}));
|
|
81
86
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
|
|
88
|
+
if (id && rows.length && rows[0].filters) {
|
|
89
|
+
const activeFilters = await Promise.all((rows[0].filters || []).filter((f) => f.disabled !== true).map(async (el) => {
|
|
90
|
+
const hash = createHash('md5').update([id, el.name, el.data].filter(Boolean).join('-')).digest('hex');
|
|
91
|
+
const redisKey = `${pg?.options?.database}:gis-suggest-filter:${hash}`;
|
|
92
|
+
|
|
93
|
+
const cls = el.data ? await getSelect(el.data, pg) : undefined;
|
|
94
|
+
const { arr, sql } = cls || {};
|
|
95
|
+
|
|
96
|
+
const r = {
|
|
97
|
+
...el, id: el.name || el.id, type: el.type, api: `/api/gis-suggest/${hash}`, options: arr, select: sql
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const unique = await rclient.setnx(redisKey, 1);
|
|
101
|
+
const ttl = await rclient.ttl(redisKey);
|
|
102
|
+
|
|
103
|
+
// skip subsequent calls
|
|
104
|
+
if (!unique && ttl !== -1) {
|
|
105
|
+
return r;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
await rclient.set(redisKey, JSON.stringify({ service: id, filter: el.name }), 'EX', 15 * 60);
|
|
109
|
+
return r;
|
|
110
|
+
}));
|
|
111
|
+
Object.assign(rows[0], {
|
|
112
|
+
filters: activeFilters,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
85
115
|
|
|
86
116
|
if (id) {
|
|
87
117
|
return { ...rows[0], fields };
|
|
@@ -49,6 +49,10 @@ describe('GIS routes', () => {
|
|
|
49
49
|
expect(res1.body).toHaveProperty('service_id');
|
|
50
50
|
expect(res1.body).toHaveProperty('name');
|
|
51
51
|
expect(res1.body).toHaveProperty('service_key');
|
|
52
|
+
expect(res1.body).toHaveProperty('filters');
|
|
53
|
+
expect(res1.body.filters.length).toBeGreaterThan(0);
|
|
54
|
+
expect(res1.body.filters[0]).toHaveProperty('api');
|
|
55
|
+
expect(res1.body.filters[0].api).toMatch('/gis-suggest/');
|
|
52
56
|
|
|
53
57
|
const res2 = await injectWithHeaders({
|
|
54
58
|
url: `/api/gis-service/${res.body.rows[0].service_id}/${res.body.fields[0].name}`,
|