@opengis/gis 0.2.20 → 0.2.22

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 (155) hide show
  1. package/README.md +5 -5
  2. package/dist/index.css +1 -1
  3. package/dist/index.js +1691 -1663
  4. package/dist/index.umd.cjs +20 -20
  5. package/module/cls.json +6 -6
  6. package/module/gis/card/gis.maps.table/index.yml +14 -14
  7. package/module/gis/card/gis.maps.table/main_info.hbs +25 -25
  8. package/module/gis/card/gis.maps.table/maps_layers.hbs +19 -19
  9. package/module/gis/card/gis.metadata.table/index.yml +22 -22
  10. package/module/gis/card/gis.metadata.table/main_info.hbs +20 -20
  11. package/module/gis/card/gis.metadata.table/metadata_info.hbs +27 -27
  12. package/module/gis/card/gis.metadata.table/other.hbs +25 -25
  13. package/module/gis/card/gis.rasters.table/index.yml +11 -11
  14. package/module/gis/card/gis.rasters.table/main_info.hbs +27 -27
  15. package/module/gis/card/gis.registers.table/cls.hbs +36 -36
  16. package/module/gis/card/gis.registers.table/columns.hbs +89 -89
  17. package/module/gis/card/gis.registers.table/filters.hbs +80 -80
  18. package/module/gis/card/gis.registers.table/index.yml +23 -23
  19. package/module/gis/card/gis.registers.table/main_info.hbs +35 -35
  20. package/module/gis/card/gis.registers.table/source.hbs +45 -45
  21. package/module/gis/card/gis.services.table/attributes.hbs +91 -91
  22. package/module/gis/card/gis.services.table/filters.hbs +83 -83
  23. package/module/gis/card/gis.services.table/index.yml +25 -25
  24. package/module/gis/card/gis.services.table/main_info.hbs +27 -27
  25. package/module/gis/card/gis.services.table/source.hbs +25 -25
  26. package/module/gis/cls/bool.yes_no.json +12 -12
  27. package/module/gis/cls/encoding.json +14 -14
  28. package/module/gis/cls/geom_type.json +14 -14
  29. package/module/gis/cls/gis.column_type.json +34 -34
  30. package/module/gis/cls/gis.column_view_type.json +26 -26
  31. package/module/gis/cls/gis.filter_type.json +22 -22
  32. package/module/gis/cls/language.json +10 -10
  33. package/module/gis/cls/meta.service_type.json +42 -42
  34. package/module/gis/cls/ogc.service.json +21 -21
  35. package/module/gis/cls/service_type.json +42 -42
  36. package/module/gis/cls/source_type.json +10 -10
  37. package/module/gis/cls/standarts.json +6 -6
  38. package/module/gis/cls/topic_category.json +106 -106
  39. package/module/gis/cls/update_frequency.json +29 -29
  40. package/module/gis/cls/view.json +21 -21
  41. package/module/gis/form/gis.cartocss.form.json +46 -0
  42. package/module/gis/form/gis.group_list.form.json +17 -17
  43. package/module/gis/form/gis.maps.form.json +64 -64
  44. package/module/gis/form/gis.metadata.form.json +240 -240
  45. package/module/gis/form/gis.ogc_service.form.json +40 -40
  46. package/module/gis/form/gis.rasters.form.json +99 -99
  47. package/module/gis/form/gis.registers.form.json +110 -110
  48. package/module/gis/form/gis.registers_column.form.json +84 -84
  49. package/module/gis/form/gis.registers_filter.form.json +65 -65
  50. package/module/gis/form/gis.services.form.json +120 -120
  51. package/module/gis/form/gis.services_attributes.form.json +75 -75
  52. package/module/gis/form/gis.services_filter.form.json +65 -65
  53. package/module/gis/menu.json +43 -43
  54. package/module/gis/select/pg.columns.parent.sql +6 -6
  55. package/module/gis/select/pg.table_name.sql +17 -17
  56. package/module/gis/select/service_id.sql +1 -1
  57. package/module/gis/table/gis.cartocss.table.json +61 -0
  58. package/module/gis/table/gis.group_list.table.json +35 -35
  59. package/module/gis/table/gis.maps.table.json +69 -69
  60. package/module/gis/table/gis.metadata.table.json +70 -70
  61. package/module/gis/table/gis.ogc_service.table.json +97 -97
  62. package/module/gis/table/gis.rasters.table.json +97 -97
  63. package/module/gis/table/gis.registers.table.json +79 -79
  64. package/module/gis/table/gis.services.table.json +99 -99
  65. package/module/gis/table/site.gis.registers.table.json +88 -88
  66. package/module/gis/table/site.gis.services.table.json +106 -106
  67. package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
  68. package/module/gis/tokens.yml +5 -5
  69. package/module/test/cls/bp_build_type.json +37 -37
  70. package/module/test/cls/doc_status.json +31 -31
  71. package/module/test/cls/ts.temp_status.json +18 -18
  72. package/module/test/cls/ts.temp_structure.ts_class.json +49 -49
  73. package/module/test/cls/ts.temp_type.json +9 -9
  74. package/module/test/layer/bp.json +59 -59
  75. package/module/test/layer/bp1.yml +33 -33
  76. package/module/test/layer/individual.yml +53 -53
  77. package/module/test/layer/ts.linking_passport.yml +55 -55
  78. package/module/test/layer/ts.temp_structure.yml +50 -50
  79. package/module/test/map/addr.yml +21 -21
  80. package/module/test/map/bp_myo.json +43 -43
  81. package/module/test/map/bpf.json +43 -43
  82. package/module/test/map/main.json +36 -36
  83. package/module/test/map/mbd.json +91 -91
  84. package/module/test/map/ts.json +52 -52
  85. package/module/test/select/address_id.json +2 -2
  86. package/module/test/select/address_id.sql +7 -7
  87. package/module/test/select/core.user_uid.sql +1 -1
  88. package/module/test/table/data_address.street.table.json +69 -69
  89. package/module/test/table/data_bp_myo.bp.table.json +122 -122
  90. package/package.json +69 -69
  91. package/plugin.js +44 -44
  92. package/server/migrations/maps.sql +30 -30
  93. package/server/migrations/ogc.sql +106 -106
  94. package/server/migrations/rasters.sql +263 -263
  95. package/server/migrations/services.sql +247 -247
  96. package/server/migrations/widgets.sql +20 -20
  97. package/server/plugins/crons.js +21 -21
  98. package/server/plugins/mapnik/funcs/createXML.js +72 -72
  99. package/server/plugins/mapnik/funcs/gdalWrapper.js +72 -72
  100. package/server/plugins/mapnik/funcs/map.proto +241 -241
  101. package/server/plugins/mapnik/funcs/mapnik.js +106 -106
  102. package/server/plugins/mapnik/funcs/rasterConfig.js +11 -11
  103. package/server/plugins/mapnik/funcs/rasterExists.js +20 -20
  104. package/server/plugins/mapnik/funcs/rasterInfo.js +109 -109
  105. package/server/plugins/mapnik/funcs/rasterVrt.js +55 -55
  106. package/server/plugins/mapnik/funcs/rasterXML.js +65 -65
  107. package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -8
  108. package/server/plugins/mapnik/utils/map.proto +241 -241
  109. package/server/plugins/vite.js +74 -74
  110. package/server/routes/gis/dashboard.js +29 -0
  111. package/server/routes/gis/index.mjs +61 -59
  112. package/server/routes/gis/metadata/metadataXML.js +13 -13
  113. package/server/routes/gis/ogc/map.info.point.js +124 -124
  114. package/server/routes/gis/registers/add.registry.js +35 -35
  115. package/server/routes/gis/registers/del.registry.js +14 -14
  116. package/server/routes/gis/registers/funcs/classifiers.js +100 -100
  117. package/server/routes/gis/registers/funcs/columns.js +4 -4
  118. package/server/routes/gis/registers/funcs/content.type.js +9 -9
  119. package/server/routes/gis/registers/funcs/get.info.js +89 -89
  120. package/server/routes/gis/registers/funcs/handleRegistryRequest.js +133 -122
  121. package/server/routes/gis/registers/gis.export.js +148 -148
  122. package/server/routes/gis/registers/gis.registry.js +70 -38
  123. package/server/routes/gis/registers/gis.registry.list.js +59 -59
  124. package/server/routes/gis/registers/insert.columns.js +107 -107
  125. package/server/routes/gis/registers/insert.filters.js +110 -110
  126. package/server/routes/gis/registers/map.registry.js +79 -79
  127. package/server/routes/gis/services/add.service.js +64 -64
  128. package/server/routes/gis/services/del.service.js +12 -12
  129. package/server/routes/gis/services/get.layer.geom.js +27 -27
  130. package/server/routes/gis/services/get.services.col.js +33 -33
  131. package/server/routes/gis/services/get.services.js +84 -84
  132. package/server/routes/gis/services/legend.auto.js +77 -77
  133. package/server/routes/map/controllers/geojson.js +187 -0
  134. package/server/routes/map/controllers/jsonData.js +205 -0
  135. package/server/routes/map/controllers/layerList.js +60 -60
  136. package/server/routes/map/controllers/map.js +123 -123
  137. package/server/routes/map/controllers/mapCatalog.js +72 -72
  138. package/server/routes/map/controllers/mapCatalogAttribute.js +55 -55
  139. package/server/routes/map/controllers/mapFeatures.js +128 -128
  140. package/server/routes/map/controllers/mapFormat.js +83 -83
  141. package/server/routes/map/controllers/mapTiles.js +152 -152
  142. package/server/routes/map/controllers/maps.js +15 -15
  143. package/server/routes/map/controllers/marker_icon.js +43 -43
  144. package/server/routes/map/controllers/rtile.js +134 -134
  145. package/server/routes/map/controllers/vtile.js +172 -172
  146. package/server/routes/map/index.mjs +142 -129
  147. package/server/routes/map/maps/add.map.js +41 -41
  148. package/server/routes/map/maps/del.map.js +18 -18
  149. package/server/routes/map/maps/get.map.js +86 -86
  150. package/server/routes/map/vtile1.js +170 -170
  151. package/server/routes/map/widgets/add.widget.js +38 -38
  152. package/server/routes/map/widgets/del.widget.js +22 -22
  153. package/server/routes/map/widgets/get.widget.js +40 -40
  154. package/server/routes/root.mjs +3 -3
  155. package/utils.js +11 -11
@@ -1,241 +1,241 @@
1
- syntax = "proto3";
2
-
3
-
4
- message render_in {
5
- string path = 1;
6
- string name = 2;
7
- repeated double bbox = 3 [packed=true];
8
- string tile = 4;
9
- string xml = 5;
10
- int32 width = 6;
11
- int32 height = 7;
12
- }
13
-
14
-
15
- message render_out {
16
- string err = 1;
17
- string base64 = 2;
18
- string tile = 3;
19
- }
20
-
21
- message xml_in {
22
- string path = 1;
23
- string name = 2;
24
- string xml = 3;
25
- bool reload = 4;
26
- }
27
-
28
- message xml_out {
29
- string err = 1;
30
- bool is_ok = 2;
31
- }
32
-
33
- message cmd_in {
34
- string cmd = 1;
35
- string svg = 2;
36
- string filename = 3;
37
- }
38
-
39
- message cmd_out {
40
- string err = 1;
41
- string base64 = 2;
42
- }
43
-
44
- message gdal_in {
45
- string name = 1;
46
- string path = 2;
47
- string out = 3;
48
- string params = 4;
49
- }
50
- message gdal_out {
51
- string result = 1;
52
- string err = 2;
53
- }
54
-
55
- message clear_tiles_in {
56
- string path = 1;
57
- }
58
-
59
- message clear_tiles_out {
60
- oneof clear_message {
61
- bool ok = 1;
62
- string err = 2;
63
- }
64
- }
65
-
66
- message empty {}
67
-
68
- message statusRenderInfo {
69
- string name = 1;
70
- bool isActive = 2;
71
- float workTime = 3;
72
- }
73
-
74
- message statusInfo {
75
- repeated statusRenderInfo info = 1;
76
- }
77
-
78
- message printMapOut {
79
- string map = 1;
80
- string err = 2;
81
- }
82
-
83
- message xyz {
84
- float x = 1;
85
- float y = 2;
86
- float z = 3;
87
- }
88
-
89
- message printMapIn {
90
- string baseurl = 1;
91
- string baseImg = 2;
92
- repeated string xml = 3;
93
- string overlayXml = 4;
94
- string overlay = 5;
95
- int32 width = 6;
96
- int32 height = 7;
97
- repeated double bbox = 8;
98
- xyz pos = 9;
99
- string geojsonSettings = 10;
100
- }
101
-
102
- message log_in {
103
- uint32 rows = 1;
104
- string level = 2;
105
- }
106
-
107
- message log_out {
108
- repeated string logs = 1;
109
- }
110
-
111
- message sqlToShpIn {
112
- string db = 1;
113
- string host = 2;
114
- string port = 3;
115
- string sql = 4;
116
- string savePath = 5;
117
- string shpName = 6;
118
- }
119
-
120
- message shapeOut {
121
- string zipPath = 1;
122
- }
123
-
124
- message fileIn {
125
- bytes fileBytes = 1;
126
- string relativeFilepath = 2;
127
- }
128
-
129
- message deleteFileIn {
130
- string dir = 1;
131
- repeated string objectList = 2;
132
- }
133
-
134
- message fileManagerOut {
135
- bool status = 1;
136
- string operation = 2;
137
- }
138
-
139
- message checkFilesDir {
140
- string dir = 1;
141
- repeated string filesSearch = 2;
142
- }
143
-
144
- enum status {
145
- LOADING = 0;
146
- OK = 1;
147
- }
148
-
149
- message filesStatus {
150
- status fileLoadingStatus = 1;
151
- }
152
-
153
- message fileListIn {
154
- string dir = 1;
155
- }
156
-
157
- message fileInfo {
158
- repeated fileInfoL fileInfoList = 1;
159
- }
160
-
161
- message fileInfoL {
162
- oneof fileInfo {
163
- fileInfoObj file = 1;
164
- dirInfoObj dir = 2;
165
- }
166
- }
167
-
168
- message fileInfoObj {
169
- string type = 1;
170
- string birthtime = 2;
171
- string name = 3;
172
- uint64 size = 4;
173
- string ext = 5;
174
- string server = 6;
175
- }
176
-
177
- message dirInfoObj {
178
- string type = 1;
179
- string birthtime = 2;
180
- string name = 3;
181
- uint64 size = 4;
182
- uint64 count = 5;
183
- string server = 6;
184
- }
185
-
186
- message deleteOut {
187
- repeated deleteObjSuccess success = 1;
188
- repeated deleteObjError error = 2;
189
-
190
- }
191
-
192
- message deleteObjSuccess {
193
- string object = 1;
194
- string type = 2;
195
- string status = 3;
196
- }
197
-
198
- message deleteObjError {
199
- string object = 1;
200
- string fullPath = 2;
201
- string result = 3;
202
- }
203
-
204
- message readDirIn {
205
- string dir = 1;
206
- repeated string filter = 2;
207
- string fullPath = 3;
208
- }
209
-
210
- message readDirOut {
211
- repeated string res = 1;
212
-
213
- }
214
-
215
- message downloadFileIn {
216
- string filePath = 1;
217
- }
218
-
219
- message downloadFileOut {
220
- bytes chunk_data = 1;
221
- }
222
-
223
-
224
- service Map {
225
- rpc Render(render_in) returns (render_out) {}
226
- rpc RenderXML(render_in) returns (render_out) {}
227
- rpc LoadXML(xml_in) returns (xml_out) {}
228
- rpc MarkerIcon(cmd_in) returns (cmd_out) {}
229
- rpc Gdal(gdal_in) returns (gdal_out) {}
230
- rpc ClearTiles(clear_tiles_in) returns (clear_tiles_out) {}
231
- rpc RenderStatus(empty) returns (statusInfo) {}
232
- rpc PrintMap(printMapIn) returns (printMapOut) {}
233
- rpc Log(log_in) returns (log_out) {}
234
- rpc SqlToShp(sqlToShpIn) returns (shapeOut) {}
235
- rpc uploadFile(fileIn) returns (fileManagerOut) {}
236
- rpc deleteFiles(deleteFileIn) returns (deleteOut) {}
237
- rpc checkFiles(checkFilesDir) returns (filesStatus) {}
238
- rpc fileList(fileListIn) returns (fileInfo) {}
239
- rpc readDir(readDirIn) returns (readDirOut) {}
240
- rpc downloadFile(downloadFileIn) returns (stream downloadFileOut) {}
241
- }
1
+ syntax = "proto3";
2
+
3
+
4
+ message render_in {
5
+ string path = 1;
6
+ string name = 2;
7
+ repeated double bbox = 3 [packed=true];
8
+ string tile = 4;
9
+ string xml = 5;
10
+ int32 width = 6;
11
+ int32 height = 7;
12
+ }
13
+
14
+
15
+ message render_out {
16
+ string err = 1;
17
+ string base64 = 2;
18
+ string tile = 3;
19
+ }
20
+
21
+ message xml_in {
22
+ string path = 1;
23
+ string name = 2;
24
+ string xml = 3;
25
+ bool reload = 4;
26
+ }
27
+
28
+ message xml_out {
29
+ string err = 1;
30
+ bool is_ok = 2;
31
+ }
32
+
33
+ message cmd_in {
34
+ string cmd = 1;
35
+ string svg = 2;
36
+ string filename = 3;
37
+ }
38
+
39
+ message cmd_out {
40
+ string err = 1;
41
+ string base64 = 2;
42
+ }
43
+
44
+ message gdal_in {
45
+ string name = 1;
46
+ string path = 2;
47
+ string out = 3;
48
+ string params = 4;
49
+ }
50
+ message gdal_out {
51
+ string result = 1;
52
+ string err = 2;
53
+ }
54
+
55
+ message clear_tiles_in {
56
+ string path = 1;
57
+ }
58
+
59
+ message clear_tiles_out {
60
+ oneof clear_message {
61
+ bool ok = 1;
62
+ string err = 2;
63
+ }
64
+ }
65
+
66
+ message empty {}
67
+
68
+ message statusRenderInfo {
69
+ string name = 1;
70
+ bool isActive = 2;
71
+ float workTime = 3;
72
+ }
73
+
74
+ message statusInfo {
75
+ repeated statusRenderInfo info = 1;
76
+ }
77
+
78
+ message printMapOut {
79
+ string map = 1;
80
+ string err = 2;
81
+ }
82
+
83
+ message xyz {
84
+ float x = 1;
85
+ float y = 2;
86
+ float z = 3;
87
+ }
88
+
89
+ message printMapIn {
90
+ string baseurl = 1;
91
+ string baseImg = 2;
92
+ repeated string xml = 3;
93
+ string overlayXml = 4;
94
+ string overlay = 5;
95
+ int32 width = 6;
96
+ int32 height = 7;
97
+ repeated double bbox = 8;
98
+ xyz pos = 9;
99
+ string geojsonSettings = 10;
100
+ }
101
+
102
+ message log_in {
103
+ uint32 rows = 1;
104
+ string level = 2;
105
+ }
106
+
107
+ message log_out {
108
+ repeated string logs = 1;
109
+ }
110
+
111
+ message sqlToShpIn {
112
+ string db = 1;
113
+ string host = 2;
114
+ string port = 3;
115
+ string sql = 4;
116
+ string savePath = 5;
117
+ string shpName = 6;
118
+ }
119
+
120
+ message shapeOut {
121
+ string zipPath = 1;
122
+ }
123
+
124
+ message fileIn {
125
+ bytes fileBytes = 1;
126
+ string relativeFilepath = 2;
127
+ }
128
+
129
+ message deleteFileIn {
130
+ string dir = 1;
131
+ repeated string objectList = 2;
132
+ }
133
+
134
+ message fileManagerOut {
135
+ bool status = 1;
136
+ string operation = 2;
137
+ }
138
+
139
+ message checkFilesDir {
140
+ string dir = 1;
141
+ repeated string filesSearch = 2;
142
+ }
143
+
144
+ enum status {
145
+ LOADING = 0;
146
+ OK = 1;
147
+ }
148
+
149
+ message filesStatus {
150
+ status fileLoadingStatus = 1;
151
+ }
152
+
153
+ message fileListIn {
154
+ string dir = 1;
155
+ }
156
+
157
+ message fileInfo {
158
+ repeated fileInfoL fileInfoList = 1;
159
+ }
160
+
161
+ message fileInfoL {
162
+ oneof fileInfo {
163
+ fileInfoObj file = 1;
164
+ dirInfoObj dir = 2;
165
+ }
166
+ }
167
+
168
+ message fileInfoObj {
169
+ string type = 1;
170
+ string birthtime = 2;
171
+ string name = 3;
172
+ uint64 size = 4;
173
+ string ext = 5;
174
+ string server = 6;
175
+ }
176
+
177
+ message dirInfoObj {
178
+ string type = 1;
179
+ string birthtime = 2;
180
+ string name = 3;
181
+ uint64 size = 4;
182
+ uint64 count = 5;
183
+ string server = 6;
184
+ }
185
+
186
+ message deleteOut {
187
+ repeated deleteObjSuccess success = 1;
188
+ repeated deleteObjError error = 2;
189
+
190
+ }
191
+
192
+ message deleteObjSuccess {
193
+ string object = 1;
194
+ string type = 2;
195
+ string status = 3;
196
+ }
197
+
198
+ message deleteObjError {
199
+ string object = 1;
200
+ string fullPath = 2;
201
+ string result = 3;
202
+ }
203
+
204
+ message readDirIn {
205
+ string dir = 1;
206
+ repeated string filter = 2;
207
+ string fullPath = 3;
208
+ }
209
+
210
+ message readDirOut {
211
+ repeated string res = 1;
212
+
213
+ }
214
+
215
+ message downloadFileIn {
216
+ string filePath = 1;
217
+ }
218
+
219
+ message downloadFileOut {
220
+ bytes chunk_data = 1;
221
+ }
222
+
223
+
224
+ service Map {
225
+ rpc Render(render_in) returns (render_out) {}
226
+ rpc RenderXML(render_in) returns (render_out) {}
227
+ rpc LoadXML(xml_in) returns (xml_out) {}
228
+ rpc MarkerIcon(cmd_in) returns (cmd_out) {}
229
+ rpc Gdal(gdal_in) returns (gdal_out) {}
230
+ rpc ClearTiles(clear_tiles_in) returns (clear_tiles_out) {}
231
+ rpc RenderStatus(empty) returns (statusInfo) {}
232
+ rpc PrintMap(printMapIn) returns (printMapOut) {}
233
+ rpc Log(log_in) returns (log_out) {}
234
+ rpc SqlToShp(sqlToShpIn) returns (shapeOut) {}
235
+ rpc uploadFile(fileIn) returns (fileManagerOut) {}
236
+ rpc deleteFiles(deleteFileIn) returns (deleteOut) {}
237
+ rpc checkFiles(checkFilesDir) returns (filesStatus) {}
238
+ rpc fileList(fileListIn) returns (fileInfo) {}
239
+ rpc readDir(readDirIn) returns (readDirOut) {}
240
+ rpc downloadFile(downloadFileIn) returns (stream downloadFileOut) {}
241
+ }
@@ -1,74 +1,74 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { createServer } from 'vite';
4
-
5
- import { config } from '@opengis/fastify-table/utils.js';
6
-
7
- const isProduction = process.env.NODE_ENV === 'production' || config.production;
8
-
9
- console.log({ isProduction });
10
-
11
- async function plugin(fastify, opts) {
12
- const viteServer = !isProduction ? await createServer({
13
- root: 'admin',
14
- server: {
15
- middlewareMode: true,
16
- },
17
- }) : null;
18
-
19
- if (!isProduction) {
20
- const dir1 = process.cwd();
21
- viteServer.watcher.add(dir1);
22
- viteServer.watcher.on('all', (d, t) => {
23
- if (!t.includes('module')) return;
24
- console.log(d, t);
25
- viteServer.ws.send({ type: 'full-reload' });
26
- });
27
-
28
- // this is middleware for vite's dev server
29
- fastify.addHook('onRequest', async (req, reply) => {
30
- const { user } = req.session?.passport || {};
31
- // console.log(req.url);
32
-
33
- const next = () => new Promise((resolve) => {
34
- viteServer.middlewares(req.raw, reply.raw, () => resolve());
35
- });
36
-
37
- await next();
38
- });
39
- }
40
-
41
- async function staticFile(req, reply) {
42
- const assetsDir = 'admin/dist';
43
-
44
- const filePathDist = path.join(assetsDir, req.url.replace('/public/', '/'));
45
- const filePathAssets = path.join('assets', req.url.replace('/assets', ''));
46
-
47
- const filePath = fs.existsSync(filePathDist) ? filePathDist : filePathAssets; // check dist or assets
48
- const ext = path.extname(filePath);
49
-
50
- if (!fs.existsSync(filePath)) return { status: 404, message: 'not found' };
51
- const mime = {
52
- '.js': 'text/javascript', '.css': 'text/css', '.woff2': 'application/font-woff', '.png': 'image/png', '.svg': 'image/svg+xml', '.jpg': 'image/jpg',
53
- }[ext];
54
- reply.headers({ 'Cache-control': 'max-age=3600, public', 'Content-Encoding': 'identity' });
55
-
56
- const stream = fs.createReadStream(filePath);
57
- return mime ? reply.type(mime).send(stream) : stream;
58
- }
59
- fastify.get('/assets/*', staticFile);
60
- fastify.get('/public/*', staticFile);
61
-
62
- fastify.get('*', async (req, reply) => {
63
- const { user } = req.session?.passport || {};
64
- // console.log(req.url);
65
- if (!user && req.url !== '/login') {
66
- return reply.redirect('/login');
67
- }
68
- if (!isProduction) return null; // admin vite
69
- const stream = fs.createReadStream('admin/dist/index.html');
70
- return reply.type('text/html').send(stream);
71
- });
72
- }
73
-
74
- export default plugin;
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { createServer } from 'vite';
4
+
5
+ import { config } from '@opengis/fastify-table/utils.js';
6
+
7
+ const isProduction = process.env.NODE_ENV === 'production' || config.production;
8
+
9
+ console.log({ isProduction });
10
+
11
+ async function plugin(fastify, opts) {
12
+ const viteServer = !isProduction ? await createServer({
13
+ root: 'admin',
14
+ server: {
15
+ middlewareMode: true,
16
+ },
17
+ }) : null;
18
+
19
+ if (!isProduction) {
20
+ const dir1 = process.cwd();
21
+ viteServer.watcher.add(dir1);
22
+ viteServer.watcher.on('all', (d, t) => {
23
+ if (!t.includes('module')) return;
24
+ console.log(d, t);
25
+ viteServer.ws.send({ type: 'full-reload' });
26
+ });
27
+
28
+ // this is middleware for vite's dev server
29
+ fastify.addHook('onRequest', async (req, reply) => {
30
+ const { user } = req.session?.passport || {};
31
+ // console.log(req.url);
32
+
33
+ const next = () => new Promise((resolve) => {
34
+ viteServer.middlewares(req.raw, reply.raw, () => resolve());
35
+ });
36
+
37
+ await next();
38
+ });
39
+ }
40
+
41
+ async function staticFile(req, reply) {
42
+ const assetsDir = 'admin/dist';
43
+
44
+ const filePathDist = path.join(assetsDir, req.url.replace('/public/', '/'));
45
+ const filePathAssets = path.join('assets', req.url.replace('/assets', ''));
46
+
47
+ const filePath = fs.existsSync(filePathDist) ? filePathDist : filePathAssets; // check dist or assets
48
+ const ext = path.extname(filePath);
49
+
50
+ if (!fs.existsSync(filePath)) return { status: 404, message: 'not found' };
51
+ const mime = {
52
+ '.js': 'text/javascript', '.css': 'text/css', '.woff2': 'application/font-woff', '.png': 'image/png', '.svg': 'image/svg+xml', '.jpg': 'image/jpg',
53
+ }[ext];
54
+ reply.headers({ 'Cache-control': 'max-age=3600, public', 'Content-Encoding': 'identity' });
55
+
56
+ const stream = fs.createReadStream(filePath);
57
+ return mime ? reply.type(mime).send(stream) : stream;
58
+ }
59
+ fastify.get('/assets/*', staticFile);
60
+ fastify.get('/public/*', staticFile);
61
+
62
+ fastify.get('*', async (req, reply) => {
63
+ const { user } = req.session?.passport || {};
64
+ // console.log(req.url);
65
+ if (!user && req.url !== '/login') {
66
+ return reply.redirect('/login');
67
+ }
68
+ if (!isProduction) return null; // admin vite
69
+ const stream = fs.createReadStream('admin/dist/index.html');
70
+ return reply.type('text/html').send(stream);
71
+ });
72
+ }
73
+
74
+ export default plugin;
@@ -0,0 +1,29 @@
1
+ import { pgClients } from '@opengis/fastify-table/utils.js';
2
+
3
+ export default async function getDashboard({ pg = pgClients.client }) {
4
+ try {
5
+ const statsQuery = `
6
+ SELECT
7
+ (SELECT COUNT(*)::int FROM gis.services) as services_count,
8
+ (SELECT COUNT(*)::int FROM gis.registers) as registers_count,
9
+ (SELECT COUNT(*)::int FROM gis.maps) as maps_count,
10
+ (SELECT COUNT(*)::int FROM gis.ogc_service) as ogc_count
11
+ `;
12
+
13
+ const result = await pg.query(statsQuery);
14
+ const stats = result?.rows?.[0] || {};
15
+
16
+ return {
17
+ cards: {
18
+ services: stats.services_count || 0,
19
+ registers: stats.registers_count || 0,
20
+ maps: stats.maps_count || 0,
21
+ ogc: stats.ogc_count || 0,
22
+ },
23
+ };
24
+ }
25
+ catch (error) {
26
+ console.error('Dashboard error:', error);
27
+ return { status: 500, error: 'Internal Server Error' };
28
+ }
29
+ }