@golemio/playgrounds 1.0.3 → 1.0.5-dev.506845290
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/output-gateway/models/FilterHelper.d.ts +2 -1
- package/dist/output-gateway/models/FilterHelper.js +8 -1
- package/dist/output-gateway/models/FilterHelper.js.map +1 -1
- package/dist/output-gateway/models/PlaygroundsModel.js +1 -0
- package/dist/output-gateway/models/PlaygroundsModel.js.map +1 -1
- package/package.json +65 -65
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { IGeoJsonAllFilterParameters } from "@golemio/core/dist/output-gateway";
|
|
2
|
-
import { WhereOptions } from "@golemio/core/dist/shared/sequelize";
|
|
2
|
+
import Sequelize, { WhereOptions } from "@golemio/core/dist/shared/sequelize";
|
|
3
3
|
export declare class FilterHelper {
|
|
4
4
|
static prepareFilterForIds(options: IGeoJsonAllFilterParameters): WhereOptions[];
|
|
5
5
|
static prepareFilterForDistricts(options: IGeoJsonAllFilterParameters): WhereOptions[];
|
|
6
6
|
static prepareFilterForUpdateSince(options: IGeoJsonAllFilterParameters): WhereOptions[];
|
|
7
7
|
static prepareFilterForLocation(options: IGeoJsonAllFilterParameters): WhereOptions[];
|
|
8
|
+
static prepareOrderFunction(options: IGeoJsonAllFilterParameters | undefined): Sequelize.Order | undefined;
|
|
8
9
|
}
|
|
@@ -40,10 +40,17 @@ class FilterHelper {
|
|
|
40
40
|
static prepareFilterForLocation(options) {
|
|
41
41
|
return options.lat && options.lng && options.range
|
|
42
42
|
? [
|
|
43
|
-
sequelize_1.default.fn("ST_DWithin", sequelize_1.default.col("location"), sequelize_1.default.cast(sequelize_1.default.fn("ST_SetSRID", sequelize_1.default.fn("ST_MakePoint", options.
|
|
43
|
+
sequelize_1.default.fn("ST_DWithin", sequelize_1.default.col("location"), sequelize_1.default.cast(sequelize_1.default.fn("ST_SetSRID", sequelize_1.default.fn("ST_MakePoint", options.lng, options.lat), 4326), "geography"), options.range),
|
|
44
44
|
]
|
|
45
45
|
: [];
|
|
46
46
|
}
|
|
47
|
+
static prepareOrderFunction(options) {
|
|
48
|
+
return (options === null || options === void 0 ? void 0 : options.lat) && options.lng
|
|
49
|
+
? [
|
|
50
|
+
sequelize_1.default.fn("ST_Distance", sequelize_1.default.col("location"), sequelize_1.default.cast(sequelize_1.default.fn("ST_SetSRID", sequelize_1.default.fn("ST_MakePoint", options.lng, options.lat), 4326), "geography")),
|
|
51
|
+
]
|
|
52
|
+
: undefined;
|
|
53
|
+
}
|
|
47
54
|
}
|
|
48
55
|
exports.FilterHelper = FilterHelper;
|
|
49
56
|
//# sourceMappingURL=FilterHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterHelper.js","sourceRoot":"","sources":["../../../src/output-gateway/models/FilterHelper.ts"],"names":[],"mappings":";;;;;;AACA,oFAA8E;AAE9E,MAAa,YAAY;IACd,MAAM,CAAC,mBAAmB,CAAC,OAAoC;QAClE,OAAO,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;YACxC,CAAC,CAAC;gBACI;oBACI,WAAW,EAAE,EAAE,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE;iBAClD;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,OAAoC;QACxE,OAAO,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACpD,CAAC,CAAC;gBACI;oBACI,QAAQ,EAAE;wBACN,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS;qBACvC;iBACJ;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,OAAoC;QAC1E,OAAO,OAAO,CAAC,YAAY;YACvB,CAAC,CAAC;gBACI;oBACI,UAAU,EAAE;wBACR,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY;qBAC3C;iBACJ;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,OAAoC;QACvE,OAAO,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK;YAC9C,CAAC,CAAC;gBACI,mBAAS,CAAC,EAAE,CACR,YAAY,EACZ,mBAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EACzB,mBAAS,CAAC,IAAI,CACV,mBAAS,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAS,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EACxF,WAAW,CACd,EACD,OAAO,CAAC,KAAK,CAChB;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"FilterHelper.js","sourceRoot":"","sources":["../../../src/output-gateway/models/FilterHelper.ts"],"names":[],"mappings":";;;;;;AACA,oFAA8E;AAE9E,MAAa,YAAY;IACd,MAAM,CAAC,mBAAmB,CAAC,OAAoC;QAClE,OAAO,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;YACxC,CAAC,CAAC;gBACI;oBACI,WAAW,EAAE,EAAE,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE;iBAClD;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,OAAoC;QACxE,OAAO,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACpD,CAAC,CAAC;gBACI;oBACI,QAAQ,EAAE;wBACN,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS;qBACvC;iBACJ;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,OAAoC;QAC1E,OAAO,OAAO,CAAC,YAAY;YACvB,CAAC,CAAC;gBACI;oBACI,UAAU,EAAE;wBACR,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY;qBAC3C;iBACJ;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,OAAoC;QACvE,OAAO,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK;YAC9C,CAAC,CAAC;gBACI,mBAAS,CAAC,EAAE,CACR,YAAY,EACZ,mBAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EACzB,mBAAS,CAAC,IAAI,CACV,mBAAS,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAS,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EACxF,WAAW,CACd,EACD,OAAO,CAAC,KAAK,CAChB;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,OAAgD;QAC/E,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,KAAI,OAAO,CAAC,GAAG;YAC9B,CAAC,CAAC;gBACI,mBAAS,CAAC,EAAE,CACR,aAAa,EACb,mBAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EACzB,mBAAS,CAAC,IAAI,CACV,mBAAS,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAS,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EACxF,WAAW,CACd,CACJ;aACJ;YACH,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC;CACJ;AAjED,oCAiEC"}
|
|
@@ -44,6 +44,7 @@ class PlaygroundsModel extends output_gateway_1.SequelizeModel {
|
|
|
44
44
|
: {},
|
|
45
45
|
limit: options === null || options === void 0 ? void 0 : options.limit,
|
|
46
46
|
offset: Number.isInteger(options === null || options === void 0 ? void 0 : options.offset) ? options === null || options === void 0 ? void 0 : options.offset : undefined,
|
|
47
|
+
order: FilterHelper_1.FilterHelper.prepareOrderFunction(options),
|
|
47
48
|
});
|
|
48
49
|
return (0, output_gateway_1.buildGeojsonFeatureCollection)(result.map((element) => this.CreateOutputItem(element)));
|
|
49
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaygroundsModel.js","sourceRoot":"","sources":["../../../src/output-gateway/models/PlaygroundsModel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uFAAgE;AAChE,4FAAqE;AACrE,8EAAuD;AAEvD,qFAA8D;AAE9D,sEAO2C;AAE3C,oFAA4D;AAC5D,iDAA8C;AAC9C,uEAAoE;AACpE,mDAAgD;AAEhD,MAAa,gBAAiB,SAAQ,+BAAc;IAIhD;QACI,KAAK,CAAC,iCAAe,CAAC,oBAAoB,EAAE,+CAAsB,CAAC,UAAU,EAAE,uBAAU,CAAC,eAAe,EAAE;YACvG,MAAM,EAAE,iCAAe,CAAC,UAAU;SACrC,CAAC,CAAC;QAmBA,WAAM,GAAG,CAAO,OAAqC,EAAsC,EAAE;YAChG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAa;gBACzD,UAAU,EAAE;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;iBAC1B;gBACD,OAAO,EAAE,YAAY;gBACrB,KAAK,EAAE,OAAO;oBACV,CAAC,CAAC;wBACI,CAAC,mBAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;4BAChB,GAAG,2BAAY,CAAC,wBAAwB,CAAC,OAAO,CAAC;4BACjD,GAAG,2BAAY,CAAC,2BAA2B,CAAC,OAAO,CAAC;4BACpD,GAAG,2BAAY,CAAC,yBAAyB,CAAC,OAAO,CAAC;yBACrD;qBACJ;oBACH,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK;gBACrB,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,CAAC,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"PlaygroundsModel.js","sourceRoot":"","sources":["../../../src/output-gateway/models/PlaygroundsModel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
2
|
+
"name": "@golemio/playgrounds",
|
|
3
|
+
"version": "1.0.5-dev.506845290",
|
|
4
|
+
"description": "Golemio Playgrounds Module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "rimraf ./dist && ttsc -p ./tsconfig.build.json",
|
|
9
|
+
"build-minimal": "run-s 'build --sourceMap false --declaration false'",
|
|
10
|
+
"build-watch": "run-s 'build --watch --preserveWatchOutput'",
|
|
11
|
+
"pretest": "golemio import-db-data --postgres",
|
|
12
|
+
"test": "cross-env NODE_ENV=test TS_NODE_COMPILER='ttypescript' mocha --exit --check-leaks --timeout 120000 -r ts-node/register -r dotenv/config 'test/**/*.test.ts'",
|
|
13
|
+
"test-debug": "run-s 'test --inspect-brk=9230'",
|
|
14
|
+
"code-coverage": "nyc run-s 'test -r source-map-support/register'",
|
|
15
|
+
"generate-docs": "typedoc --out docs/typedoc src",
|
|
16
|
+
"lint": "eslint \"{src,test}/**/*.ts\""
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"golemio"
|
|
20
|
+
],
|
|
21
|
+
"author": "Operator ICT, a.s.",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://gitlab.com/operator-ict/golemio/code/modules/playgrounds"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@commitlint/cli": "^11.0.0",
|
|
29
|
+
"@commitlint/config-conventional": "^11.0.0",
|
|
30
|
+
"@golemio/cli": "1.2.1",
|
|
31
|
+
"@golemio/core": "1.2.5",
|
|
32
|
+
"@golemio/eslint-config": "^1.1.0",
|
|
33
|
+
"@types/chai": "4.2.3",
|
|
34
|
+
"@types/chai-as-promised": "7.1.2",
|
|
35
|
+
"@types/geojson": "^7946.0.8",
|
|
36
|
+
"@types/mocha": "^9.1.0",
|
|
37
|
+
"@types/node": "^14.14.20",
|
|
38
|
+
"@types/sinon": "^9.0.10",
|
|
39
|
+
"@types/supertest": "^2.0.10",
|
|
40
|
+
"@zerollup/ts-transform-paths": "^1.7.18",
|
|
41
|
+
"chai": "4.2.0",
|
|
42
|
+
"chai-as-promised": "7.1.1",
|
|
43
|
+
"cross-env": "^7.0.3",
|
|
44
|
+
"dotenv": "^8.2.0",
|
|
45
|
+
"eslint": "^8.1.1",
|
|
46
|
+
"husky": "^4.3.7",
|
|
47
|
+
"mocha": "^9.1.2",
|
|
48
|
+
"npm-run-all": "^4.1.5",
|
|
49
|
+
"nyc": "^15.1.0",
|
|
50
|
+
"prettier": "^2.5.1",
|
|
51
|
+
"pretty-quick": "^3.1.0",
|
|
52
|
+
"rimraf": "^3.0.2",
|
|
53
|
+
"sinon": "^9.2.3",
|
|
54
|
+
"source-map-support": "0.5.19",
|
|
55
|
+
"supertest": "^6.0.1",
|
|
56
|
+
"ts-node": "^9.1.1",
|
|
57
|
+
"ttypescript": "^1.5.13",
|
|
58
|
+
"typedoc": "^0.22.13",
|
|
59
|
+
"typescript": "4.4.4"
|
|
60
|
+
},
|
|
61
|
+
"peerDependencies": {
|
|
62
|
+
"@golemio/core": "^1.0.0"
|
|
63
|
+
},
|
|
64
|
+
"dependencies": {
|
|
65
|
+
"@golemio/city-districts": "1.0.2"
|
|
66
|
+
}
|
|
67
67
|
}
|