├── .circleci └── config.yml ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .prettierrc.json ├── LICENSE ├── README.md ├── __tests__ ├── fixtures │ └── queries │ │ ├── geography.graphql │ │ └── geometry.graphql ├── helpers.js ├── integration │ ├── __snapshots__ │ │ └── queries.test.js.snap │ ├── queries.test.js │ └── schema │ │ ├── __snapshots__ │ │ └── defaultOptions.test.js.snap │ │ ├── core.js │ │ └── defaultOptions.test.js ├── p-data.sql ├── p-schema.sql └── printSchemaOrdered.js ├── index.js ├── package.json ├── scripts └── test ├── src └── PgConnectionArgFilterPostgisOperatorsPlugin.js └── yarn.lock /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | node10_pg10postgis: 4 | docker: 5 | - image: circleci/node:10 6 | - image: circleci/postgres:10-postgis 7 | environment: 8 | POSTGRES_HOST_AUTH_METHOD: trust 9 | POSTGRES_USER: circleci 10 | POSTGRES_DB: circle_test 11 | steps: 12 | - checkout 13 | - run: sudo apt update 14 | - run: sudo apt install -y postgresql-client 15 | - restore_cache: 16 | keys: 17 | - yarn-packages-{{ checksum "yarn.lock" }} 18 | - run: 19 | command: yarn install --frozen-lockfile 20 | - save_cache: 21 | key: yarn-packages-{{ checksum "yarn.lock" }} 22 | paths: 23 | - ~/.cache/yarn 24 | - run: yarn lint 25 | - run: 26 | command: yarn test 27 | environment: 28 | TEST_DATABASE_URL: postgres://circleci@localhost:5432/circle_test 29 | node10_pg11postgis: 30 | docker: 31 | - image: circleci/node:10 32 | - image: circleci/postgres:11-postgis 33 | environment: 34 | POSTGRES_HOST_AUTH_METHOD: trust 35 | POSTGRES_USER: circleci 36 | POSTGRES_DB: circle_test 37 | steps: 38 | - checkout 39 | - run: sudo apt update 40 | - run: sudo apt install -y postgresql-client 41 | - restore_cache: 42 | keys: 43 | - yarn-packages-{{ checksum "yarn.lock" }} 44 | - run: 45 | command: yarn install --frozen-lockfile 46 | - save_cache: 47 | key: yarn-packages-{{ checksum "yarn.lock" }} 48 | paths: 49 | - ~/.cache/yarn 50 | - run: yarn lint 51 | - run: 52 | command: yarn test 53 | environment: 54 | TEST_DATABASE_URL: postgres://circleci@localhost:5432/circle_test 55 | node12_pg12postgis: 56 | docker: 57 | - image: circleci/node:12 58 | - image: circleci/postgres:12-postgis 59 | environment: 60 | POSTGRES_HOST_AUTH_METHOD: trust 61 | POSTGRES_USER: circleci 62 | POSTGRES_DB: circle_test 63 | steps: 64 | - checkout 65 | - run: sudo apt update 66 | - run: sudo apt install -y postgresql-client 67 | - restore_cache: 68 | keys: 69 | - yarn-packages-{{ checksum "yarn.lock" }} 70 | - run: 71 | command: yarn install --frozen-lockfile 72 | - save_cache: 73 | key: yarn-packages-{{ checksum "yarn.lock" }} 74 | paths: 75 | - ~/.cache/yarn 76 | - run: yarn lint 77 | - run: 78 | command: yarn test 79 | environment: 80 | TEST_DATABASE_URL: postgres://circleci@localhost:5432/circle_test 81 | workflows: 82 | version: 2 83 | test: 84 | jobs: 85 | - node10_pg10postgis 86 | - node10_pg11postgis 87 | - node12_pg12postgis 88 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | node: true, 4 | es6: true, 5 | "jest/globals": true, 6 | }, 7 | parserOptions: { 8 | ecmaVersion: 9, 9 | }, 10 | plugins: ["jest"], 11 | extends: [ 12 | "eslint:recommended", 13 | "plugin:jest/recommended", 14 | "plugin:prettier/recommended", 15 | ], 16 | rules: { 17 | "jest/expect-expect": ["off"], 18 | }, 19 | }; 20 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5" 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Matt Bretl 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Package on npm](https://img.shields.io/npm/v/postgraphile-plugin-connection-filter-postgis.svg)](https://www.npmjs.com/package/postgraphile-plugin-connection-filter-postgis) [![CircleCI](https://circleci.com/gh/graphile-contrib/postgraphile-plugin-connection-filter-postgis.svg?style=svg)](https://circleci.com/gh/graphile-contrib/postgraphile-plugin-connection-filter-postgis) 2 | 3 | # postgraphile-plugin-connection-filter-postgis 4 | This plugin exposes additional PostGIS-related fields on the `filter` argument of Connections. 5 | 6 | ## Usage 7 | 8 | Requires `postgraphile@^4.5.0` and the following plugins appended prior to this plugin: 9 | 10 | - `@graphile/postgis@0.1.0` 11 | - `postgraphile-plugin-connection-filter@^2.0.0` 12 | 13 | ## Operators 14 | 15 | | PostGIS function | Types | GraphQL field name | 16 | | --- | --- | --- | 17 | | ST_3DIntersects | geometry | intersects3D | 18 | | ST_Contains | geometry | contains | 19 | | ST_ContainsProperly | geometry | containsProperly | 20 | | ST_CoveredBy | geometry, geography | coveredBy | 21 | | ST_Covers | geometry, geography | covers | 22 | | ST_Crosses | geometry | crosses | 23 | | ST_Disjoint | geometry | disjoint | 24 | | ST_Equals | geometry | equals | 25 | | ST_Intersects | geometry, geography | intersects | 26 | | ST_OrderingEquals | geometry | orderingEquals | 27 | | ST_Overlaps | geometry | overlaps | 28 | | ST_Touches | geometry | touches | 29 | | ST_Within | geometry | within | 30 | 31 | | PostGIS operator | Types | GraphQL field name | 32 | | --- | --- | --- | 33 | | = | geometry, geography | exactlyEquals | 34 | | && | geometry, geography | bboxIntersects2D | 35 | | &&& | geometry | bboxIntersectsND | 36 | | &< | geometry | bboxOverlapsOrLeftOf | 37 | | &<\| | geometry | bboxOverlapsOrBelow | 38 | | &> | geometry | bboxOverlapsOrRightOf | 39 | | \|&> | geometry | bboxOverlapsOrAbove | 40 | | << | geometry | bboxLeftOf | 41 | | <<\| | geometry | bboxBelow | 42 | | >> | geometry | bboxRightOf | 43 | | \|>> | geometry | bboxAbove | 44 | | ~ | geometry | bboxContains | 45 | | ~= | geometry | bboxEquals | 46 | 47 | ## Development 48 | 49 | To establish a test environment, create an empty PostgreSQL database and set a `TEST_DATABASE_URL` environment variable with your database connection string. 50 | 51 | ```bash 52 | createdb graphile_test 53 | export TEST_DATABASE_URL=postgres://localhost:5432/graphile_test 54 | yarn 55 | yarn test 56 | ``` 57 | -------------------------------------------------------------------------------- /__tests__/fixtures/queries/geography.graphql: -------------------------------------------------------------------------------- 1 | query AllGisDebugs($point: GeoJSON = { type: "Point", coordinates: [30, 10] }) { 2 | allGisDebugs( 3 | filter: { 4 | geog: { 5 | coveredBy: $point 6 | covers: $point 7 | intersects: $point 8 | exactlyEquals: $point 9 | bboxIntersects2D: $point 10 | } 11 | geogGeometry: { 12 | coveredBy: $point 13 | covers: $point 14 | intersects: $point 15 | exactlyEquals: $point 16 | bboxIntersects2D: $point 17 | } 18 | geogPoint: { 19 | coveredBy: $point 20 | covers: $point 21 | intersects: $point 22 | exactlyEquals: $point 23 | bboxIntersects2D: $point 24 | } 25 | geogLinestr: { 26 | coveredBy: $point 27 | covers: $point 28 | intersects: $point 29 | exactlyEquals: $point 30 | bboxIntersects2D: $point 31 | } 32 | geogPoly: { 33 | coveredBy: $point 34 | covers: $point 35 | intersects: $point 36 | exactlyEquals: $point 37 | bboxIntersects2D: $point 38 | } 39 | geogMultipoint: { 40 | coveredBy: $point 41 | covers: $point 42 | intersects: $point 43 | exactlyEquals: $point 44 | bboxIntersects2D: $point 45 | } 46 | geogMultilinestr: { 47 | coveredBy: $point 48 | covers: $point 49 | intersects: $point 50 | exactlyEquals: $point 51 | bboxIntersects2D: $point 52 | } 53 | geogMultipoly: { 54 | coveredBy: $point 55 | covers: $point 56 | intersects: $point 57 | exactlyEquals: $point 58 | bboxIntersects2D: $point 59 | } 60 | geogGeometrycollection: { 61 | coveredBy: $point 62 | covers: $point 63 | intersects: $point 64 | exactlyEquals: $point 65 | bboxIntersects2D: $point 66 | } 67 | geogGeometrym: { 68 | coveredBy: $point 69 | covers: $point 70 | intersects: $point 71 | exactlyEquals: $point 72 | bboxIntersects2D: $point 73 | } 74 | geogPointm: { 75 | coveredBy: $point 76 | covers: $point 77 | intersects: $point 78 | exactlyEquals: $point 79 | bboxIntersects2D: $point 80 | } 81 | geogLinestrm: { 82 | coveredBy: $point 83 | covers: $point 84 | intersects: $point 85 | exactlyEquals: $point 86 | bboxIntersects2D: $point 87 | } 88 | geogPolym: { 89 | coveredBy: $point 90 | covers: $point 91 | intersects: $point 92 | exactlyEquals: $point 93 | bboxIntersects2D: $point 94 | } 95 | geogMultipointm: { 96 | coveredBy: $point 97 | covers: $point 98 | intersects: $point 99 | exactlyEquals: $point 100 | bboxIntersects2D: $point 101 | } 102 | geogMultilinestrm: { 103 | coveredBy: $point 104 | covers: $point 105 | intersects: $point 106 | exactlyEquals: $point 107 | bboxIntersects2D: $point 108 | } 109 | geogMultipolym: { 110 | coveredBy: $point 111 | covers: $point 112 | intersects: $point 113 | exactlyEquals: $point 114 | bboxIntersects2D: $point 115 | } 116 | geogGeometrycollectionm: { 117 | coveredBy: $point 118 | covers: $point 119 | intersects: $point 120 | exactlyEquals: $point 121 | bboxIntersects2D: $point 122 | } 123 | } 124 | ) { 125 | ...gisDebugConnection 126 | } 127 | } 128 | 129 | fragment gisDebugConnection on GisDebugsConnection { 130 | nodes { 131 | id 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /__tests__/fixtures/queries/geometry.graphql: -------------------------------------------------------------------------------- 1 | query AllGisDebugs($point: GeoJSON = { type: "Point", coordinates: [30, 10] }) { 2 | allGisDebugs( 3 | filter: { 4 | geom: { 5 | intersects3D: $point 6 | contains: $point 7 | containsProperly: $point 8 | coveredBy: $point 9 | covers: $point 10 | crosses: $point 11 | disjoint: $point 12 | equals: $point 13 | intersects: $point 14 | orderingEquals: $point 15 | overlaps: $point 16 | touches: $point 17 | within: $point 18 | exactlyEquals: $point 19 | bboxIntersects2D: $point 20 | bboxIntersectsND: $point 21 | bboxOverlapsOrLeftOf: $point 22 | bboxOverlapsOrBelow: $point 23 | bboxOverlapsOrRightOf: $point 24 | bboxOverlapsOrAbove: $point 25 | bboxLeftOf: $point 26 | bboxBelow: $point 27 | bboxRightOf: $point 28 | bboxAbove: $point 29 | bboxContains: $point 30 | bboxEquals: $point 31 | } 32 | geomGeometry: { 33 | intersects3D: $point 34 | contains: $point 35 | containsProperly: $point 36 | coveredBy: $point 37 | covers: $point 38 | crosses: $point 39 | disjoint: $point 40 | equals: $point 41 | intersects: $point 42 | orderingEquals: $point 43 | overlaps: $point 44 | touches: $point 45 | within: $point 46 | exactlyEquals: $point 47 | bboxIntersects2D: $point 48 | bboxIntersectsND: $point 49 | bboxOverlapsOrLeftOf: $point 50 | bboxOverlapsOrBelow: $point 51 | bboxOverlapsOrRightOf: $point 52 | bboxOverlapsOrAbove: $point 53 | bboxLeftOf: $point 54 | bboxBelow: $point 55 | bboxRightOf: $point 56 | bboxAbove: $point 57 | bboxContains: $point 58 | bboxEquals: $point 59 | } 60 | geomPoint: { 61 | intersects3D: $point 62 | contains: $point 63 | containsProperly: $point 64 | coveredBy: $point 65 | covers: $point 66 | crosses: $point 67 | disjoint: $point 68 | equals: $point 69 | intersects: $point 70 | orderingEquals: $point 71 | overlaps: $point 72 | touches: $point 73 | within: $point 74 | exactlyEquals: $point 75 | bboxIntersects2D: $point 76 | bboxIntersectsND: $point 77 | bboxOverlapsOrLeftOf: $point 78 | bboxOverlapsOrBelow: $point 79 | bboxOverlapsOrRightOf: $point 80 | bboxOverlapsOrAbove: $point 81 | bboxLeftOf: $point 82 | bboxBelow: $point 83 | bboxRightOf: $point 84 | bboxAbove: $point 85 | bboxContains: $point 86 | bboxEquals: $point 87 | } 88 | geomLinestr: { 89 | intersects3D: $point 90 | contains: $point 91 | containsProperly: $point 92 | coveredBy: $point 93 | covers: $point 94 | crosses: $point 95 | disjoint: $point 96 | equals: $point 97 | intersects: $point 98 | orderingEquals: $point 99 | overlaps: $point 100 | touches: $point 101 | within: $point 102 | exactlyEquals: $point 103 | bboxIntersects2D: $point 104 | bboxIntersectsND: $point 105 | bboxOverlapsOrLeftOf: $point 106 | bboxOverlapsOrBelow: $point 107 | bboxOverlapsOrRightOf: $point 108 | bboxOverlapsOrAbove: $point 109 | bboxLeftOf: $point 110 | bboxBelow: $point 111 | bboxRightOf: $point 112 | bboxAbove: $point 113 | bboxContains: $point 114 | bboxEquals: $point 115 | } 116 | geomPoly: { 117 | intersects3D: $point 118 | contains: $point 119 | containsProperly: $point 120 | coveredBy: $point 121 | covers: $point 122 | crosses: $point 123 | disjoint: $point 124 | equals: $point 125 | intersects: $point 126 | orderingEquals: $point 127 | overlaps: $point 128 | touches: $point 129 | within: $point 130 | exactlyEquals: $point 131 | bboxIntersects2D: $point 132 | bboxIntersectsND: $point 133 | bboxOverlapsOrLeftOf: $point 134 | bboxOverlapsOrBelow: $point 135 | bboxOverlapsOrRightOf: $point 136 | bboxOverlapsOrAbove: $point 137 | bboxLeftOf: $point 138 | bboxBelow: $point 139 | bboxRightOf: $point 140 | bboxAbove: $point 141 | bboxContains: $point 142 | bboxEquals: $point 143 | } 144 | geomMultipoint: { 145 | intersects3D: $point 146 | contains: $point 147 | containsProperly: $point 148 | coveredBy: $point 149 | covers: $point 150 | crosses: $point 151 | disjoint: $point 152 | equals: $point 153 | intersects: $point 154 | orderingEquals: $point 155 | overlaps: $point 156 | touches: $point 157 | within: $point 158 | exactlyEquals: $point 159 | bboxIntersects2D: $point 160 | bboxIntersectsND: $point 161 | bboxOverlapsOrLeftOf: $point 162 | bboxOverlapsOrBelow: $point 163 | bboxOverlapsOrRightOf: $point 164 | bboxOverlapsOrAbove: $point 165 | bboxLeftOf: $point 166 | bboxBelow: $point 167 | bboxRightOf: $point 168 | bboxAbove: $point 169 | bboxContains: $point 170 | bboxEquals: $point 171 | } 172 | geomMultilinestr: { 173 | intersects3D: $point 174 | contains: $point 175 | containsProperly: $point 176 | coveredBy: $point 177 | covers: $point 178 | crosses: $point 179 | disjoint: $point 180 | equals: $point 181 | intersects: $point 182 | orderingEquals: $point 183 | overlaps: $point 184 | touches: $point 185 | within: $point 186 | exactlyEquals: $point 187 | bboxIntersects2D: $point 188 | bboxIntersectsND: $point 189 | bboxOverlapsOrLeftOf: $point 190 | bboxOverlapsOrBelow: $point 191 | bboxOverlapsOrRightOf: $point 192 | bboxOverlapsOrAbove: $point 193 | bboxLeftOf: $point 194 | bboxBelow: $point 195 | bboxRightOf: $point 196 | bboxAbove: $point 197 | bboxContains: $point 198 | bboxEquals: $point 199 | } 200 | geomMultipoly: { 201 | intersects3D: $point 202 | contains: $point 203 | containsProperly: $point 204 | coveredBy: $point 205 | covers: $point 206 | crosses: $point 207 | disjoint: $point 208 | equals: $point 209 | intersects: $point 210 | orderingEquals: $point 211 | overlaps: $point 212 | touches: $point 213 | within: $point 214 | exactlyEquals: $point 215 | bboxIntersects2D: $point 216 | bboxIntersectsND: $point 217 | bboxOverlapsOrLeftOf: $point 218 | bboxOverlapsOrBelow: $point 219 | bboxOverlapsOrRightOf: $point 220 | bboxOverlapsOrAbove: $point 221 | bboxLeftOf: $point 222 | bboxBelow: $point 223 | bboxRightOf: $point 224 | bboxAbove: $point 225 | bboxContains: $point 226 | bboxEquals: $point 227 | } 228 | geomGeometrycollection: { 229 | intersects3D: $point 230 | contains: $point 231 | containsProperly: $point 232 | coveredBy: $point 233 | covers: $point 234 | crosses: $point 235 | disjoint: $point 236 | equals: $point 237 | intersects: $point 238 | orderingEquals: $point 239 | overlaps: $point 240 | touches: $point 241 | within: $point 242 | exactlyEquals: $point 243 | bboxIntersects2D: $point 244 | bboxIntersectsND: $point 245 | bboxOverlapsOrLeftOf: $point 246 | bboxOverlapsOrBelow: $point 247 | bboxOverlapsOrRightOf: $point 248 | bboxOverlapsOrAbove: $point 249 | bboxLeftOf: $point 250 | bboxBelow: $point 251 | bboxRightOf: $point 252 | bboxAbove: $point 253 | bboxContains: $point 254 | bboxEquals: $point 255 | } 256 | geomGeometrym: { 257 | intersects3D: $point 258 | contains: $point 259 | containsProperly: $point 260 | coveredBy: $point 261 | covers: $point 262 | crosses: $point 263 | disjoint: $point 264 | equals: $point 265 | intersects: $point 266 | orderingEquals: $point 267 | overlaps: $point 268 | touches: $point 269 | within: $point 270 | exactlyEquals: $point 271 | bboxIntersects2D: $point 272 | bboxIntersectsND: $point 273 | bboxOverlapsOrLeftOf: $point 274 | bboxOverlapsOrBelow: $point 275 | bboxOverlapsOrRightOf: $point 276 | bboxOverlapsOrAbove: $point 277 | bboxLeftOf: $point 278 | bboxBelow: $point 279 | bboxRightOf: $point 280 | bboxAbove: $point 281 | bboxContains: $point 282 | bboxEquals: $point 283 | } 284 | geomPointm: { 285 | intersects3D: $point 286 | contains: $point 287 | containsProperly: $point 288 | coveredBy: $point 289 | covers: $point 290 | crosses: $point 291 | disjoint: $point 292 | equals: $point 293 | intersects: $point 294 | orderingEquals: $point 295 | overlaps: $point 296 | touches: $point 297 | within: $point 298 | exactlyEquals: $point 299 | bboxIntersects2D: $point 300 | bboxIntersectsND: $point 301 | bboxOverlapsOrLeftOf: $point 302 | bboxOverlapsOrBelow: $point 303 | bboxOverlapsOrRightOf: $point 304 | bboxOverlapsOrAbove: $point 305 | bboxLeftOf: $point 306 | bboxBelow: $point 307 | bboxRightOf: $point 308 | bboxAbove: $point 309 | bboxContains: $point 310 | bboxEquals: $point 311 | } 312 | geomLinestrm: { 313 | intersects3D: $point 314 | contains: $point 315 | containsProperly: $point 316 | coveredBy: $point 317 | covers: $point 318 | crosses: $point 319 | disjoint: $point 320 | equals: $point 321 | intersects: $point 322 | orderingEquals: $point 323 | overlaps: $point 324 | touches: $point 325 | within: $point 326 | exactlyEquals: $point 327 | bboxIntersects2D: $point 328 | bboxIntersectsND: $point 329 | bboxOverlapsOrLeftOf: $point 330 | bboxOverlapsOrBelow: $point 331 | bboxOverlapsOrRightOf: $point 332 | bboxOverlapsOrAbove: $point 333 | bboxLeftOf: $point 334 | bboxBelow: $point 335 | bboxRightOf: $point 336 | bboxAbove: $point 337 | bboxContains: $point 338 | bboxEquals: $point 339 | } 340 | geomPolym: { 341 | intersects3D: $point 342 | contains: $point 343 | containsProperly: $point 344 | coveredBy: $point 345 | covers: $point 346 | crosses: $point 347 | disjoint: $point 348 | equals: $point 349 | intersects: $point 350 | orderingEquals: $point 351 | overlaps: $point 352 | touches: $point 353 | within: $point 354 | exactlyEquals: $point 355 | bboxIntersects2D: $point 356 | bboxIntersectsND: $point 357 | bboxOverlapsOrLeftOf: $point 358 | bboxOverlapsOrBelow: $point 359 | bboxOverlapsOrRightOf: $point 360 | bboxOverlapsOrAbove: $point 361 | bboxLeftOf: $point 362 | bboxBelow: $point 363 | bboxRightOf: $point 364 | bboxAbove: $point 365 | bboxContains: $point 366 | bboxEquals: $point 367 | } 368 | geomMultipointm: { 369 | intersects3D: $point 370 | contains: $point 371 | containsProperly: $point 372 | coveredBy: $point 373 | covers: $point 374 | crosses: $point 375 | disjoint: $point 376 | equals: $point 377 | intersects: $point 378 | orderingEquals: $point 379 | overlaps: $point 380 | touches: $point 381 | within: $point 382 | exactlyEquals: $point 383 | bboxIntersects2D: $point 384 | bboxIntersectsND: $point 385 | bboxOverlapsOrLeftOf: $point 386 | bboxOverlapsOrBelow: $point 387 | bboxOverlapsOrRightOf: $point 388 | bboxOverlapsOrAbove: $point 389 | bboxLeftOf: $point 390 | bboxBelow: $point 391 | bboxRightOf: $point 392 | bboxAbove: $point 393 | bboxContains: $point 394 | bboxEquals: $point 395 | } 396 | geomMultilinestrm: { 397 | intersects3D: $point 398 | contains: $point 399 | containsProperly: $point 400 | coveredBy: $point 401 | covers: $point 402 | crosses: $point 403 | disjoint: $point 404 | equals: $point 405 | intersects: $point 406 | orderingEquals: $point 407 | overlaps: $point 408 | touches: $point 409 | within: $point 410 | exactlyEquals: $point 411 | bboxIntersects2D: $point 412 | bboxIntersectsND: $point 413 | bboxOverlapsOrLeftOf: $point 414 | bboxOverlapsOrBelow: $point 415 | bboxOverlapsOrRightOf: $point 416 | bboxOverlapsOrAbove: $point 417 | bboxLeftOf: $point 418 | bboxBelow: $point 419 | bboxRightOf: $point 420 | bboxAbove: $point 421 | bboxContains: $point 422 | bboxEquals: $point 423 | } 424 | geomMultipolym: { 425 | intersects3D: $point 426 | contains: $point 427 | containsProperly: $point 428 | coveredBy: $point 429 | covers: $point 430 | crosses: $point 431 | disjoint: $point 432 | equals: $point 433 | intersects: $point 434 | orderingEquals: $point 435 | overlaps: $point 436 | touches: $point 437 | within: $point 438 | exactlyEquals: $point 439 | bboxIntersects2D: $point 440 | bboxIntersectsND: $point 441 | bboxOverlapsOrLeftOf: $point 442 | bboxOverlapsOrBelow: $point 443 | bboxOverlapsOrRightOf: $point 444 | bboxOverlapsOrAbove: $point 445 | bboxLeftOf: $point 446 | bboxBelow: $point 447 | bboxRightOf: $point 448 | bboxAbove: $point 449 | bboxContains: $point 450 | bboxEquals: $point 451 | } 452 | geomGeometrycollectionm: { 453 | intersects3D: $point 454 | contains: $point 455 | containsProperly: $point 456 | coveredBy: $point 457 | covers: $point 458 | crosses: $point 459 | disjoint: $point 460 | equals: $point 461 | intersects: $point 462 | orderingEquals: $point 463 | overlaps: $point 464 | touches: $point 465 | within: $point 466 | exactlyEquals: $point 467 | bboxIntersects2D: $point 468 | bboxIntersectsND: $point 469 | bboxOverlapsOrLeftOf: $point 470 | bboxOverlapsOrBelow: $point 471 | bboxOverlapsOrRightOf: $point 472 | bboxOverlapsOrAbove: $point 473 | bboxLeftOf: $point 474 | bboxBelow: $point 475 | bboxRightOf: $point 476 | bboxAbove: $point 477 | bboxContains: $point 478 | bboxEquals: $point 479 | } 480 | } 481 | ) { 482 | ...gisDebugConnection 483 | } 484 | } 485 | 486 | fragment gisDebugConnection on GisDebugsConnection { 487 | nodes { 488 | id 489 | } 490 | } 491 | -------------------------------------------------------------------------------- /__tests__/helpers.js: -------------------------------------------------------------------------------- 1 | const pg = require("pg"); 2 | const { readFile } = require("fs"); 3 | const pgConnectionString = require("pg-connection-string"); 4 | 5 | // This test suite can be flaky. Increase it’s timeout. 6 | jest.setTimeout(1000 * 20); 7 | 8 | function readFilePromise(filename, encoding) { 9 | return new Promise((resolve, reject) => { 10 | readFile(filename, encoding, (err, res) => { 11 | if (err) reject(err); 12 | else resolve(res); 13 | }); 14 | }); 15 | } 16 | 17 | const withPgClient = async (url, fn) => { 18 | if (!fn) { 19 | fn = url; 20 | url = process.env.TEST_DATABASE_URL; 21 | } 22 | const pgPool = new pg.Pool(pgConnectionString.parse(url)); 23 | let client; 24 | try { 25 | client = await pgPool.connect(); 26 | await client.query("begin"); 27 | await client.query("set local timezone to '+04:00'"); 28 | const result = await fn(client); 29 | await client.query("rollback"); 30 | return result; 31 | } finally { 32 | try { 33 | await client.release(); 34 | } catch (e) { 35 | console.error("Error releasing pgClient", e); // eslint-disable-line no-console 36 | } 37 | await pgPool.end(); 38 | } 39 | }; 40 | 41 | const withDbFromUrl = async (url, fn) => { 42 | return withPgClient(url, async client => { 43 | try { 44 | await client.query("BEGIN ISOLATION LEVEL SERIALIZABLE;"); 45 | return fn(client); 46 | } finally { 47 | await client.query("COMMIT;"); 48 | } 49 | }); 50 | }; 51 | 52 | const withRootDb = fn => withDbFromUrl(process.env.TEST_DATABASE_URL, fn); 53 | 54 | let prepopulatedDBKeepalive; 55 | 56 | const populateDatabase = async client => { 57 | await client.query(await readFilePromise(`${__dirname}/p-data.sql`, "utf8")); 58 | return {}; 59 | }; 60 | 61 | const withPrepopulatedDb = async fn => { 62 | if (!prepopulatedDBKeepalive) { 63 | throw new Error("You must call setup and teardown to use this"); 64 | } 65 | const { client, vars } = prepopulatedDBKeepalive; 66 | if (!vars) { 67 | throw new Error("No prepopulated vars"); 68 | } 69 | let err; 70 | try { 71 | await fn(client, vars); 72 | } catch (e) { 73 | err = e; 74 | } 75 | try { 76 | await client.query("ROLLBACK TO SAVEPOINT pristine;"); 77 | } catch (e) { 78 | err = err || e; 79 | console.error("ERROR ROLLING BACK", e.message); // eslint-disable-line no-console 80 | } 81 | if (err) { 82 | throw err; 83 | } 84 | }; 85 | 86 | withPrepopulatedDb.setup = done => { 87 | if (prepopulatedDBKeepalive) { 88 | throw new Error("There's already a prepopulated DB running"); 89 | } 90 | let res; 91 | let rej; 92 | prepopulatedDBKeepalive = new Promise((resolve, reject) => { 93 | res = resolve; 94 | rej = reject; 95 | }); 96 | prepopulatedDBKeepalive.resolve = res; 97 | prepopulatedDBKeepalive.reject = rej; 98 | withRootDb(async client => { 99 | prepopulatedDBKeepalive.client = client; 100 | try { 101 | prepopulatedDBKeepalive.vars = await populateDatabase(client); 102 | } catch (e) { 103 | console.error("FAILED TO PREPOPULATE DB!", e.message); // eslint-disable-line no-console 104 | return done(e); 105 | } 106 | await client.query("SAVEPOINT pristine;"); 107 | done(); 108 | return prepopulatedDBKeepalive; 109 | }); 110 | }; 111 | 112 | withPrepopulatedDb.teardown = () => { 113 | if (!prepopulatedDBKeepalive) { 114 | throw new Error("Cannot tear down null!"); 115 | } 116 | prepopulatedDBKeepalive.resolve(); // Release DB transaction 117 | prepopulatedDBKeepalive = null; 118 | }; 119 | 120 | exports.withRootDb = withRootDb; 121 | exports.withPrepopulatedDb = withPrepopulatedDb; 122 | exports.withPgClient = withPgClient; 123 | -------------------------------------------------------------------------------- /__tests__/integration/__snapshots__/queries.test.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`geography.graphql 1`] = ` 4 | Object { 5 | "data": Object { 6 | "allGisDebugs": Object { 7 | "nodes": Array [], 8 | }, 9 | }, 10 | } 11 | `; 12 | 13 | exports[`geometry.graphql 1`] = ` 14 | Object { 15 | "data": Object { 16 | "allGisDebugs": Object { 17 | "nodes": Array [], 18 | }, 19 | }, 20 | } 21 | `; 22 | -------------------------------------------------------------------------------- /__tests__/integration/queries.test.js: -------------------------------------------------------------------------------- 1 | const { graphql } = require("graphql"); 2 | const { withPgClient } = require("../helpers"); 3 | const { createPostGraphileSchema } = require("postgraphile-core"); 4 | const { readdirSync, readFile: rawReadFile } = require("fs"); 5 | const { resolve: resolvePath } = require("path"); 6 | const { printSchema } = require("graphql/utilities"); 7 | const debug = require("debug")("graphile-build:schema"); 8 | const PgConnectionFilterPlugin = require("postgraphile-plugin-connection-filter"); 9 | const PostgisPlugin = require("@graphile/postgis").default; 10 | 11 | function readFile(filename, encoding) { 12 | return new Promise((resolve, reject) => { 13 | rawReadFile(filename, encoding, (err, res) => { 14 | if (err) reject(err); 15 | else resolve(res); 16 | }); 17 | }); 18 | } 19 | 20 | const queriesDir = `${__dirname}/../fixtures/queries`; 21 | const queryFileNames = readdirSync(queriesDir); 22 | let queryResults = []; 23 | 24 | const kitchenSinkData = () => readFile(`${__dirname}/../p-data.sql`, "utf8"); 25 | 26 | beforeAll(() => { 27 | // Get a few GraphQL schema instance that we can query. 28 | const gqlSchemasPromise = withPgClient(async pgClient => { 29 | // Different fixtures need different schemas with different configurations. 30 | // Make all of the different schemas with different configurations that we 31 | // need and wait for them to be created in parallel. 32 | const [normal] = await Promise.all([ 33 | createPostGraphileSchema(pgClient, ["p"], { 34 | appendPlugins: [ 35 | PostgisPlugin, 36 | PgConnectionFilterPlugin, 37 | require("../../index.js"), 38 | ], 39 | }), 40 | ]); 41 | debug(printSchema(normal)); 42 | return { 43 | normal, 44 | }; 45 | }); 46 | 47 | // Execute all of the queries in parallel. We will not wait for them to 48 | // resolve or reject. The tests will do that. 49 | // 50 | // All of our queries share a single client instance. 51 | const queryResultsPromise = (async () => { 52 | // Wait for the schema to resolve. We need the schema to be introspected 53 | // before we can do anything else! 54 | const gqlSchemas = await gqlSchemasPromise; 55 | // Get a new Postgres client instance. 56 | return await withPgClient(async pgClient => { 57 | // Add data to the client instance we are using. 58 | await pgClient.query(await kitchenSinkData()); 59 | // Run all of our queries in parallel. 60 | return await Promise.all( 61 | queryFileNames.map(async fileName => { 62 | // Read the query from the file system. 63 | const query = await readFile( 64 | resolvePath(queriesDir, fileName), 65 | "utf8" 66 | ); 67 | const gqlSchema = gqlSchemas.normal; 68 | // Return the result of our GraphQL query. 69 | const result = await graphql(gqlSchema, query, null, { 70 | pgClient: pgClient, 71 | }); 72 | if (result.errors) { 73 | // eslint-disable-next-line no-console 74 | console.log(result.errors.map(e => e.originalError)); 75 | } 76 | return result; 77 | }) 78 | ); 79 | }); 80 | })(); 81 | 82 | // Flatten out the query results promise. 83 | queryResults = queryFileNames.map(async (_, i) => { 84 | return await (await queryResultsPromise)[i]; 85 | }); 86 | }); 87 | 88 | for (let i = 0; i < queryFileNames.length; i++) { 89 | test(queryFileNames[i], async () => { 90 | expect(await queryResults[i]).toMatchSnapshot(); 91 | }); 92 | } 93 | -------------------------------------------------------------------------------- /__tests__/integration/schema/__snapshots__/defaultOptions.test.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`prints a schema with the postgraphile-plugin-connection-filter-postgis plugin 1`] = ` 4 | "\\"\\"\\"All input for the create \`GisDebug\` mutation.\\"\\"\\" 5 | input CreateGisDebugInput { 6 | \\"\\"\\" 7 | An arbitrary string value with no semantic meaning. Will be included in the 8 | payload verbatim. May be used to track mutations by the client. 9 | \\"\\"\\" 10 | clientMutationId: String 11 | 12 | \\"\\"\\"The \`GisDebug\` to be created by this mutation.\\"\\"\\" 13 | gisDebug: GisDebugInput! 14 | } 15 | 16 | \\"\\"\\"The output of our create \`GisDebug\` mutation.\\"\\"\\" 17 | type CreateGisDebugPayload { 18 | \\"\\"\\" 19 | The exact same \`clientMutationId\` that was provided in the mutation input, 20 | unchanged and unused. May be used by a client to track mutations. 21 | \\"\\"\\" 22 | clientMutationId: String 23 | 24 | \\"\\"\\"The \`GisDebug\` that was created by this mutation.\\"\\"\\" 25 | gisDebug: GisDebug 26 | 27 | \\"\\"\\"An edge for our \`GisDebug\`. May be used by Relay 1.\\"\\"\\" 28 | gisDebugEdge( 29 | \\"\\"\\"The method to use when ordering \`GisDebug\`.\\"\\"\\" 30 | orderBy: [GisDebugsOrderBy!] = [PRIMARY_KEY_ASC] 31 | ): GisDebugsEdge 32 | 33 | \\"\\"\\" 34 | Our root query field type. Allows us to run any query from our mutation payload. 35 | \\"\\"\\" 36 | query: Query 37 | } 38 | 39 | \\"\\"\\"A location in a connection that can be used for resuming pagination.\\"\\"\\" 40 | scalar Cursor 41 | 42 | \\"\\"\\"All input for the \`deleteGisDebugById\` mutation.\\"\\"\\" 43 | input DeleteGisDebugByIdInput { 44 | \\"\\"\\" 45 | An arbitrary string value with no semantic meaning. Will be included in the 46 | payload verbatim. May be used to track mutations by the client. 47 | \\"\\"\\" 48 | clientMutationId: String 49 | id: Int! 50 | } 51 | 52 | \\"\\"\\"All input for the \`deleteGisDebug\` mutation.\\"\\"\\" 53 | input DeleteGisDebugInput { 54 | \\"\\"\\" 55 | An arbitrary string value with no semantic meaning. Will be included in the 56 | payload verbatim. May be used to track mutations by the client. 57 | \\"\\"\\" 58 | clientMutationId: String 59 | 60 | \\"\\"\\" 61 | The globally unique \`ID\` which will identify a single \`GisDebug\` to be deleted. 62 | \\"\\"\\" 63 | nodeId: ID! 64 | } 65 | 66 | \\"\\"\\"The output of our delete \`GisDebug\` mutation.\\"\\"\\" 67 | type DeleteGisDebugPayload { 68 | \\"\\"\\" 69 | The exact same \`clientMutationId\` that was provided in the mutation input, 70 | unchanged and unused. May be used by a client to track mutations. 71 | \\"\\"\\" 72 | clientMutationId: String 73 | deletedGisDebugId: ID 74 | 75 | \\"\\"\\"The \`GisDebug\` that was deleted by this mutation.\\"\\"\\" 76 | gisDebug: GisDebug 77 | 78 | \\"\\"\\"An edge for our \`GisDebug\`. May be used by Relay 1.\\"\\"\\" 79 | gisDebugEdge( 80 | \\"\\"\\"The method to use when ordering \`GisDebug\`.\\"\\"\\" 81 | orderBy: [GisDebugsOrderBy!] = [PRIMARY_KEY_ASC] 82 | ): GisDebugsEdge 83 | 84 | \\"\\"\\" 85 | Our root query field type. Allows us to run any query from our mutation payload. 86 | \\"\\"\\" 87 | query: Query 88 | } 89 | 90 | \\"\\"\\"All geography XY types implement this interface\\"\\"\\" 91 | interface GeographyGeometry { 92 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 93 | geojson: GeoJSON 94 | 95 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 96 | srid: Int! 97 | } 98 | 99 | type GeographyGeometryCollection implements GeographyInterface & GeographyGeometry { 100 | geojson: GeoJSON 101 | geometries: [GeographyGeometry] 102 | srid: Int! 103 | } 104 | 105 | \\"\\"\\" 106 | A filter to be used against GeographyGeometryCollection fields. All fields are combined with a logical ‘and.’ 107 | \\"\\"\\" 108 | input GeographyGeometryCollectionFilter { 109 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 110 | bboxIntersects2D: GeoJSON 111 | 112 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 113 | coveredBy: GeoJSON 114 | 115 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 116 | covers: GeoJSON 117 | 118 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 119 | exactlyEquals: GeoJSON 120 | 121 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 122 | intersects: GeoJSON 123 | } 124 | 125 | type GeographyGeometryCollectionM implements GeographyInterface & GeographyGeometryM { 126 | geojson: GeoJSON 127 | geometries: [GeographyGeometryM] 128 | srid: Int! 129 | } 130 | 131 | \\"\\"\\" 132 | A filter to be used against GeographyGeometryCollectionM fields. All fields are combined with a logical ‘and.’ 133 | \\"\\"\\" 134 | input GeographyGeometryCollectionMFilter { 135 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 136 | bboxIntersects2D: GeoJSON 137 | 138 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 139 | coveredBy: GeoJSON 140 | 141 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 142 | covers: GeoJSON 143 | 144 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 145 | exactlyEquals: GeoJSON 146 | 147 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 148 | intersects: GeoJSON 149 | } 150 | 151 | type GeographyGeometryCollectionZ implements GeographyInterface & GeographyGeometryZ { 152 | geojson: GeoJSON 153 | geometries: [GeographyGeometryZ] 154 | srid: Int! 155 | } 156 | 157 | type GeographyGeometryCollectionZM implements GeographyInterface & GeographyGeometryZM { 158 | geojson: GeoJSON 159 | geometries: [GeographyGeometryZM] 160 | srid: Int! 161 | } 162 | 163 | \\"\\"\\" 164 | A filter to be used against GeographyGeometry fields. All fields are combined with a logical ‘and.’ 165 | \\"\\"\\" 166 | input GeographyGeometryFilter { 167 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 168 | bboxIntersects2D: GeoJSON 169 | 170 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 171 | coveredBy: GeoJSON 172 | 173 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 174 | covers: GeoJSON 175 | 176 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 177 | exactlyEquals: GeoJSON 178 | 179 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 180 | intersects: GeoJSON 181 | } 182 | 183 | \\"\\"\\"All geography XYM types implement this interface\\"\\"\\" 184 | interface GeographyGeometryM { 185 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 186 | geojson: GeoJSON 187 | 188 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 189 | srid: Int! 190 | } 191 | 192 | \\"\\"\\" 193 | A filter to be used against GeographyGeometryM fields. All fields are combined with a logical ‘and.’ 194 | \\"\\"\\" 195 | input GeographyGeometryMFilter { 196 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 197 | bboxIntersects2D: GeoJSON 198 | 199 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 200 | coveredBy: GeoJSON 201 | 202 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 203 | covers: GeoJSON 204 | 205 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 206 | exactlyEquals: GeoJSON 207 | 208 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 209 | intersects: GeoJSON 210 | } 211 | 212 | \\"\\"\\"All geography XYZ types implement this interface\\"\\"\\" 213 | interface GeographyGeometryZ { 214 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 215 | geojson: GeoJSON 216 | 217 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 218 | srid: Int! 219 | } 220 | 221 | \\"\\"\\"All geography XYZM types implement this interface\\"\\"\\" 222 | interface GeographyGeometryZM { 223 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 224 | geojson: GeoJSON 225 | 226 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 227 | srid: Int! 228 | } 229 | 230 | \\"\\"\\"All geography types implement this interface\\"\\"\\" 231 | interface GeographyInterface { 232 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 233 | geojson: GeoJSON 234 | 235 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 236 | srid: Int! 237 | } 238 | 239 | \\"\\"\\" 240 | A filter to be used against GeographyInterface fields. All fields are combined with a logical ‘and.’ 241 | \\"\\"\\" 242 | input GeographyInterfaceFilter { 243 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 244 | bboxIntersects2D: GeoJSON 245 | 246 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 247 | coveredBy: GeoJSON 248 | 249 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 250 | covers: GeoJSON 251 | 252 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 253 | exactlyEquals: GeoJSON 254 | 255 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 256 | intersects: GeoJSON 257 | } 258 | 259 | type GeographyLineString implements GeographyInterface & GeographyGeometry { 260 | geojson: GeoJSON 261 | points: [GeographyPoint] 262 | srid: Int! 263 | } 264 | 265 | \\"\\"\\" 266 | A filter to be used against GeographyLineString fields. All fields are combined with a logical ‘and.’ 267 | \\"\\"\\" 268 | input GeographyLineStringFilter { 269 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 270 | bboxIntersects2D: GeoJSON 271 | 272 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 273 | coveredBy: GeoJSON 274 | 275 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 276 | covers: GeoJSON 277 | 278 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 279 | exactlyEquals: GeoJSON 280 | 281 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 282 | intersects: GeoJSON 283 | } 284 | 285 | type GeographyLineStringM implements GeographyInterface & GeographyGeometryM { 286 | geojson: GeoJSON 287 | points: [GeographyPointM] 288 | srid: Int! 289 | } 290 | 291 | \\"\\"\\" 292 | A filter to be used against GeographyLineStringM fields. All fields are combined with a logical ‘and.’ 293 | \\"\\"\\" 294 | input GeographyLineStringMFilter { 295 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 296 | bboxIntersects2D: GeoJSON 297 | 298 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 299 | coveredBy: GeoJSON 300 | 301 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 302 | covers: GeoJSON 303 | 304 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 305 | exactlyEquals: GeoJSON 306 | 307 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 308 | intersects: GeoJSON 309 | } 310 | 311 | type GeographyLineStringZ implements GeographyInterface & GeographyGeometryZ { 312 | geojson: GeoJSON 313 | points: [GeographyPointZ] 314 | srid: Int! 315 | } 316 | 317 | type GeographyLineStringZM implements GeographyInterface & GeographyGeometryZM { 318 | geojson: GeoJSON 319 | points: [GeographyPointZM] 320 | srid: Int! 321 | } 322 | 323 | type GeographyMultiLineString implements GeographyInterface & GeographyGeometry { 324 | geojson: GeoJSON 325 | lines: [GeographyLineString] 326 | srid: Int! 327 | } 328 | 329 | \\"\\"\\" 330 | A filter to be used against GeographyMultiLineString fields. All fields are combined with a logical ‘and.’ 331 | \\"\\"\\" 332 | input GeographyMultiLineStringFilter { 333 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 334 | bboxIntersects2D: GeoJSON 335 | 336 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 337 | coveredBy: GeoJSON 338 | 339 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 340 | covers: GeoJSON 341 | 342 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 343 | exactlyEquals: GeoJSON 344 | 345 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 346 | intersects: GeoJSON 347 | } 348 | 349 | type GeographyMultiLineStringM implements GeographyInterface & GeographyGeometryM { 350 | geojson: GeoJSON 351 | lines: [GeographyLineStringM] 352 | srid: Int! 353 | } 354 | 355 | \\"\\"\\" 356 | A filter to be used against GeographyMultiLineStringM fields. All fields are combined with a logical ‘and.’ 357 | \\"\\"\\" 358 | input GeographyMultiLineStringMFilter { 359 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 360 | bboxIntersects2D: GeoJSON 361 | 362 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 363 | coveredBy: GeoJSON 364 | 365 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 366 | covers: GeoJSON 367 | 368 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 369 | exactlyEquals: GeoJSON 370 | 371 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 372 | intersects: GeoJSON 373 | } 374 | 375 | type GeographyMultiLineStringZ implements GeographyInterface & GeographyGeometryZ { 376 | geojson: GeoJSON 377 | lines: [GeographyLineStringZ] 378 | srid: Int! 379 | } 380 | 381 | type GeographyMultiLineStringZM implements GeographyInterface & GeographyGeometryZM { 382 | geojson: GeoJSON 383 | lines: [GeographyLineStringZM] 384 | srid: Int! 385 | } 386 | 387 | type GeographyMultiPoint implements GeographyInterface & GeographyGeometry { 388 | geojson: GeoJSON 389 | points: [GeographyPoint] 390 | srid: Int! 391 | } 392 | 393 | \\"\\"\\" 394 | A filter to be used against GeographyMultiPoint fields. All fields are combined with a logical ‘and.’ 395 | \\"\\"\\" 396 | input GeographyMultiPointFilter { 397 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 398 | bboxIntersects2D: GeoJSON 399 | 400 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 401 | coveredBy: GeoJSON 402 | 403 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 404 | covers: GeoJSON 405 | 406 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 407 | exactlyEquals: GeoJSON 408 | 409 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 410 | intersects: GeoJSON 411 | } 412 | 413 | type GeographyMultiPointM implements GeographyInterface & GeographyGeometryM { 414 | geojson: GeoJSON 415 | points: [GeographyPointM] 416 | srid: Int! 417 | } 418 | 419 | \\"\\"\\" 420 | A filter to be used against GeographyMultiPointM fields. All fields are combined with a logical ‘and.’ 421 | \\"\\"\\" 422 | input GeographyMultiPointMFilter { 423 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 424 | bboxIntersects2D: GeoJSON 425 | 426 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 427 | coveredBy: GeoJSON 428 | 429 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 430 | covers: GeoJSON 431 | 432 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 433 | exactlyEquals: GeoJSON 434 | 435 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 436 | intersects: GeoJSON 437 | } 438 | 439 | type GeographyMultiPointZ implements GeographyInterface & GeographyGeometryZ { 440 | geojson: GeoJSON 441 | points: [GeographyPointZ] 442 | srid: Int! 443 | } 444 | 445 | type GeographyMultiPointZM implements GeographyInterface & GeographyGeometryZM { 446 | geojson: GeoJSON 447 | points: [GeographyPointZM] 448 | srid: Int! 449 | } 450 | 451 | type GeographyMultiPolygon implements GeographyInterface & GeographyGeometry { 452 | geojson: GeoJSON 453 | polygons: [GeographyPolygon] 454 | srid: Int! 455 | } 456 | 457 | \\"\\"\\" 458 | A filter to be used against GeographyMultiPolygon fields. All fields are combined with a logical ‘and.’ 459 | \\"\\"\\" 460 | input GeographyMultiPolygonFilter { 461 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 462 | bboxIntersects2D: GeoJSON 463 | 464 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 465 | coveredBy: GeoJSON 466 | 467 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 468 | covers: GeoJSON 469 | 470 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 471 | exactlyEquals: GeoJSON 472 | 473 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 474 | intersects: GeoJSON 475 | } 476 | 477 | type GeographyMultiPolygonM implements GeographyInterface & GeographyGeometryM { 478 | geojson: GeoJSON 479 | polygons: [GeographyPolygonM] 480 | srid: Int! 481 | } 482 | 483 | \\"\\"\\" 484 | A filter to be used against GeographyMultiPolygonM fields. All fields are combined with a logical ‘and.’ 485 | \\"\\"\\" 486 | input GeographyMultiPolygonMFilter { 487 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 488 | bboxIntersects2D: GeoJSON 489 | 490 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 491 | coveredBy: GeoJSON 492 | 493 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 494 | covers: GeoJSON 495 | 496 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 497 | exactlyEquals: GeoJSON 498 | 499 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 500 | intersects: GeoJSON 501 | } 502 | 503 | type GeographyMultiPolygonZ implements GeographyInterface & GeographyGeometryZ { 504 | geojson: GeoJSON 505 | polygons: [GeographyPolygonZ] 506 | srid: Int! 507 | } 508 | 509 | type GeographyMultiPolygonZM implements GeographyInterface & GeographyGeometryZM { 510 | geojson: GeoJSON 511 | polygons: [GeographyPolygonZM] 512 | srid: Int! 513 | } 514 | 515 | type GeographyPoint implements GeographyInterface & GeographyGeometry { 516 | geojson: GeoJSON 517 | latitude: Float! 518 | longitude: Float! 519 | srid: Int! 520 | } 521 | 522 | \\"\\"\\" 523 | A filter to be used against GeographyPoint fields. All fields are combined with a logical ‘and.’ 524 | \\"\\"\\" 525 | input GeographyPointFilter { 526 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 527 | bboxIntersects2D: GeoJSON 528 | 529 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 530 | coveredBy: GeoJSON 531 | 532 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 533 | covers: GeoJSON 534 | 535 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 536 | exactlyEquals: GeoJSON 537 | 538 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 539 | intersects: GeoJSON 540 | } 541 | 542 | type GeographyPointM implements GeographyInterface & GeographyGeometryM { 543 | geojson: GeoJSON 544 | latitude: Float! 545 | longitude: Float! 546 | srid: Int! 547 | } 548 | 549 | \\"\\"\\" 550 | A filter to be used against GeographyPointM fields. All fields are combined with a logical ‘and.’ 551 | \\"\\"\\" 552 | input GeographyPointMFilter { 553 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 554 | bboxIntersects2D: GeoJSON 555 | 556 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 557 | coveredBy: GeoJSON 558 | 559 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 560 | covers: GeoJSON 561 | 562 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 563 | exactlyEquals: GeoJSON 564 | 565 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 566 | intersects: GeoJSON 567 | } 568 | 569 | type GeographyPointZ implements GeographyInterface & GeographyGeometryZ { 570 | geojson: GeoJSON 571 | latitude: Float! 572 | longitude: Float! 573 | srid: Int! 574 | } 575 | 576 | type GeographyPointZM implements GeographyInterface & GeographyGeometryZM { 577 | geojson: GeoJSON 578 | latitude: Float! 579 | longitude: Float! 580 | srid: Int! 581 | } 582 | 583 | type GeographyPolygon implements GeographyInterface & GeographyGeometry { 584 | exterior: GeographyLineString 585 | geojson: GeoJSON 586 | interiors: [GeographyLineString] 587 | srid: Int! 588 | } 589 | 590 | \\"\\"\\" 591 | A filter to be used against GeographyPolygon fields. All fields are combined with a logical ‘and.’ 592 | \\"\\"\\" 593 | input GeographyPolygonFilter { 594 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 595 | bboxIntersects2D: GeoJSON 596 | 597 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 598 | coveredBy: GeoJSON 599 | 600 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 601 | covers: GeoJSON 602 | 603 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 604 | exactlyEquals: GeoJSON 605 | 606 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 607 | intersects: GeoJSON 608 | } 609 | 610 | type GeographyPolygonM implements GeographyInterface & GeographyGeometryM { 611 | exterior: GeographyLineStringM 612 | geojson: GeoJSON 613 | interiors: [GeographyLineStringM] 614 | srid: Int! 615 | } 616 | 617 | \\"\\"\\" 618 | A filter to be used against GeographyPolygonM fields. All fields are combined with a logical ‘and.’ 619 | \\"\\"\\" 620 | input GeographyPolygonMFilter { 621 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 622 | bboxIntersects2D: GeoJSON 623 | 624 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 625 | coveredBy: GeoJSON 626 | 627 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 628 | covers: GeoJSON 629 | 630 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 631 | exactlyEquals: GeoJSON 632 | 633 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 634 | intersects: GeoJSON 635 | } 636 | 637 | type GeographyPolygonZ implements GeographyInterface & GeographyGeometryZ { 638 | exterior: GeographyLineStringZ 639 | geojson: GeoJSON 640 | interiors: [GeographyLineStringZ] 641 | srid: Int! 642 | } 643 | 644 | type GeographyPolygonZM implements GeographyInterface & GeographyGeometryZM { 645 | exterior: GeographyLineStringZM 646 | geojson: GeoJSON 647 | interiors: [GeographyLineStringZM] 648 | srid: Int! 649 | } 650 | 651 | \\"\\"\\" 652 | The \`GeoJSON\` scalar type represents GeoJSON values as specified by[RFC 7946](https://tools.ietf.org/html/rfc7946). 653 | \\"\\"\\" 654 | scalar GeoJSON 655 | 656 | \\"\\"\\"All geometry XY types implement this interface\\"\\"\\" 657 | interface GeometryGeometry { 658 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 659 | geojson: GeoJSON 660 | 661 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 662 | srid: Int! 663 | } 664 | 665 | type GeometryGeometryCollection implements GeometryInterface & GeometryGeometry { 666 | geojson: GeoJSON 667 | geometries: [GeometryGeometry] 668 | srid: Int! 669 | } 670 | 671 | \\"\\"\\" 672 | A filter to be used against GeometryGeometryCollection fields. All fields are combined with a logical ‘and.’ 673 | \\"\\"\\" 674 | input GeometryGeometryCollectionFilter { 675 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 676 | bboxAbove: GeoJSON 677 | 678 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 679 | bboxBelow: GeoJSON 680 | 681 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 682 | bboxContains: GeoJSON 683 | 684 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 685 | bboxEquals: GeoJSON 686 | 687 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 688 | bboxIntersects2D: GeoJSON 689 | 690 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 691 | bboxIntersectsND: GeoJSON 692 | 693 | \\"\\"\\" 694 | Bounding box is strictly to the left of the specified geometry's bounding box. 695 | \\"\\"\\" 696 | bboxLeftOf: GeoJSON 697 | 698 | \\"\\"\\" 699 | Bounding box overlaps or is above the specified geometry's bounding box. 700 | \\"\\"\\" 701 | bboxOverlapsOrAbove: GeoJSON 702 | 703 | \\"\\"\\" 704 | Bounding box overlaps or is below the specified geometry's bounding box. 705 | \\"\\"\\" 706 | bboxOverlapsOrBelow: GeoJSON 707 | 708 | \\"\\"\\" 709 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 710 | \\"\\"\\" 711 | bboxOverlapsOrLeftOf: GeoJSON 712 | 713 | \\"\\"\\" 714 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 715 | \\"\\"\\" 716 | bboxOverlapsOrRightOf: GeoJSON 717 | 718 | \\"\\"\\" 719 | Bounding box is strictly to the right of the specified geometry's bounding box. 720 | \\"\\"\\" 721 | bboxRightOf: GeoJSON 722 | 723 | \\"\\"\\" 724 | No points of the specified geometry lie in the exterior, and at least one 725 | point of the interior of the specified geometry lies in the interior. 726 | \\"\\"\\" 727 | contains: GeoJSON 728 | 729 | \\"\\"\\" 730 | The specified geometry intersects the interior but not the boundary (or exterior). 731 | \\"\\"\\" 732 | containsProperly: GeoJSON 733 | 734 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 735 | coveredBy: GeoJSON 736 | 737 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 738 | covers: GeoJSON 739 | 740 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 741 | crosses: GeoJSON 742 | 743 | \\"\\"\\"They do not share any space together.\\"\\"\\" 744 | disjoint: GeoJSON 745 | 746 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 747 | equals: GeoJSON 748 | 749 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 750 | exactlyEquals: GeoJSON 751 | 752 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 753 | intersects: GeoJSON 754 | 755 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 756 | intersects3D: GeoJSON 757 | 758 | \\"\\"\\" 759 | They represent the same geometry and points are in the same directional order. 760 | \\"\\"\\" 761 | orderingEquals: GeoJSON 762 | 763 | \\"\\"\\" 764 | They share space, are of the same dimension, but are not completely contained by each other. 765 | \\"\\"\\" 766 | overlaps: GeoJSON 767 | 768 | \\"\\"\\" 769 | They have at least one point in common, but their interiors do not intersect. 770 | \\"\\"\\" 771 | touches: GeoJSON 772 | 773 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 774 | within: GeoJSON 775 | } 776 | 777 | type GeometryGeometryCollectionM implements GeometryInterface & GeometryGeometryM { 778 | geojson: GeoJSON 779 | geometries: [GeometryGeometryM] 780 | srid: Int! 781 | } 782 | 783 | \\"\\"\\" 784 | A filter to be used against GeometryGeometryCollectionM fields. All fields are combined with a logical ‘and.’ 785 | \\"\\"\\" 786 | input GeometryGeometryCollectionMFilter { 787 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 788 | bboxAbove: GeoJSON 789 | 790 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 791 | bboxBelow: GeoJSON 792 | 793 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 794 | bboxContains: GeoJSON 795 | 796 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 797 | bboxEquals: GeoJSON 798 | 799 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 800 | bboxIntersects2D: GeoJSON 801 | 802 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 803 | bboxIntersectsND: GeoJSON 804 | 805 | \\"\\"\\" 806 | Bounding box is strictly to the left of the specified geometry's bounding box. 807 | \\"\\"\\" 808 | bboxLeftOf: GeoJSON 809 | 810 | \\"\\"\\" 811 | Bounding box overlaps or is above the specified geometry's bounding box. 812 | \\"\\"\\" 813 | bboxOverlapsOrAbove: GeoJSON 814 | 815 | \\"\\"\\" 816 | Bounding box overlaps or is below the specified geometry's bounding box. 817 | \\"\\"\\" 818 | bboxOverlapsOrBelow: GeoJSON 819 | 820 | \\"\\"\\" 821 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 822 | \\"\\"\\" 823 | bboxOverlapsOrLeftOf: GeoJSON 824 | 825 | \\"\\"\\" 826 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 827 | \\"\\"\\" 828 | bboxOverlapsOrRightOf: GeoJSON 829 | 830 | \\"\\"\\" 831 | Bounding box is strictly to the right of the specified geometry's bounding box. 832 | \\"\\"\\" 833 | bboxRightOf: GeoJSON 834 | 835 | \\"\\"\\" 836 | No points of the specified geometry lie in the exterior, and at least one 837 | point of the interior of the specified geometry lies in the interior. 838 | \\"\\"\\" 839 | contains: GeoJSON 840 | 841 | \\"\\"\\" 842 | The specified geometry intersects the interior but not the boundary (or exterior). 843 | \\"\\"\\" 844 | containsProperly: GeoJSON 845 | 846 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 847 | coveredBy: GeoJSON 848 | 849 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 850 | covers: GeoJSON 851 | 852 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 853 | crosses: GeoJSON 854 | 855 | \\"\\"\\"They do not share any space together.\\"\\"\\" 856 | disjoint: GeoJSON 857 | 858 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 859 | equals: GeoJSON 860 | 861 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 862 | exactlyEquals: GeoJSON 863 | 864 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 865 | intersects: GeoJSON 866 | 867 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 868 | intersects3D: GeoJSON 869 | 870 | \\"\\"\\" 871 | They represent the same geometry and points are in the same directional order. 872 | \\"\\"\\" 873 | orderingEquals: GeoJSON 874 | 875 | \\"\\"\\" 876 | They share space, are of the same dimension, but are not completely contained by each other. 877 | \\"\\"\\" 878 | overlaps: GeoJSON 879 | 880 | \\"\\"\\" 881 | They have at least one point in common, but their interiors do not intersect. 882 | \\"\\"\\" 883 | touches: GeoJSON 884 | 885 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 886 | within: GeoJSON 887 | } 888 | 889 | type GeometryGeometryCollectionZ implements GeometryInterface & GeometryGeometryZ { 890 | geojson: GeoJSON 891 | geometries: [GeometryGeometryZ] 892 | srid: Int! 893 | } 894 | 895 | type GeometryGeometryCollectionZM implements GeometryInterface & GeometryGeometryZM { 896 | geojson: GeoJSON 897 | geometries: [GeometryGeometryZM] 898 | srid: Int! 899 | } 900 | 901 | \\"\\"\\" 902 | A filter to be used against GeometryGeometry fields. All fields are combined with a logical ‘and.’ 903 | \\"\\"\\" 904 | input GeometryGeometryFilter { 905 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 906 | bboxAbove: GeoJSON 907 | 908 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 909 | bboxBelow: GeoJSON 910 | 911 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 912 | bboxContains: GeoJSON 913 | 914 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 915 | bboxEquals: GeoJSON 916 | 917 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 918 | bboxIntersects2D: GeoJSON 919 | 920 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 921 | bboxIntersectsND: GeoJSON 922 | 923 | \\"\\"\\" 924 | Bounding box is strictly to the left of the specified geometry's bounding box. 925 | \\"\\"\\" 926 | bboxLeftOf: GeoJSON 927 | 928 | \\"\\"\\" 929 | Bounding box overlaps or is above the specified geometry's bounding box. 930 | \\"\\"\\" 931 | bboxOverlapsOrAbove: GeoJSON 932 | 933 | \\"\\"\\" 934 | Bounding box overlaps or is below the specified geometry's bounding box. 935 | \\"\\"\\" 936 | bboxOverlapsOrBelow: GeoJSON 937 | 938 | \\"\\"\\" 939 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 940 | \\"\\"\\" 941 | bboxOverlapsOrLeftOf: GeoJSON 942 | 943 | \\"\\"\\" 944 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 945 | \\"\\"\\" 946 | bboxOverlapsOrRightOf: GeoJSON 947 | 948 | \\"\\"\\" 949 | Bounding box is strictly to the right of the specified geometry's bounding box. 950 | \\"\\"\\" 951 | bboxRightOf: GeoJSON 952 | 953 | \\"\\"\\" 954 | No points of the specified geometry lie in the exterior, and at least one 955 | point of the interior of the specified geometry lies in the interior. 956 | \\"\\"\\" 957 | contains: GeoJSON 958 | 959 | \\"\\"\\" 960 | The specified geometry intersects the interior but not the boundary (or exterior). 961 | \\"\\"\\" 962 | containsProperly: GeoJSON 963 | 964 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 965 | coveredBy: GeoJSON 966 | 967 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 968 | covers: GeoJSON 969 | 970 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 971 | crosses: GeoJSON 972 | 973 | \\"\\"\\"They do not share any space together.\\"\\"\\" 974 | disjoint: GeoJSON 975 | 976 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 977 | equals: GeoJSON 978 | 979 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 980 | exactlyEquals: GeoJSON 981 | 982 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 983 | intersects: GeoJSON 984 | 985 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 986 | intersects3D: GeoJSON 987 | 988 | \\"\\"\\" 989 | They represent the same geometry and points are in the same directional order. 990 | \\"\\"\\" 991 | orderingEquals: GeoJSON 992 | 993 | \\"\\"\\" 994 | They share space, are of the same dimension, but are not completely contained by each other. 995 | \\"\\"\\" 996 | overlaps: GeoJSON 997 | 998 | \\"\\"\\" 999 | They have at least one point in common, but their interiors do not intersect. 1000 | \\"\\"\\" 1001 | touches: GeoJSON 1002 | 1003 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 1004 | within: GeoJSON 1005 | } 1006 | 1007 | \\"\\"\\"All geometry XYM types implement this interface\\"\\"\\" 1008 | interface GeometryGeometryM { 1009 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 1010 | geojson: GeoJSON 1011 | 1012 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 1013 | srid: Int! 1014 | } 1015 | 1016 | \\"\\"\\" 1017 | A filter to be used against GeometryGeometryM fields. All fields are combined with a logical ‘and.’ 1018 | \\"\\"\\" 1019 | input GeometryGeometryMFilter { 1020 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 1021 | bboxAbove: GeoJSON 1022 | 1023 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 1024 | bboxBelow: GeoJSON 1025 | 1026 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 1027 | bboxContains: GeoJSON 1028 | 1029 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 1030 | bboxEquals: GeoJSON 1031 | 1032 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 1033 | bboxIntersects2D: GeoJSON 1034 | 1035 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 1036 | bboxIntersectsND: GeoJSON 1037 | 1038 | \\"\\"\\" 1039 | Bounding box is strictly to the left of the specified geometry's bounding box. 1040 | \\"\\"\\" 1041 | bboxLeftOf: GeoJSON 1042 | 1043 | \\"\\"\\" 1044 | Bounding box overlaps or is above the specified geometry's bounding box. 1045 | \\"\\"\\" 1046 | bboxOverlapsOrAbove: GeoJSON 1047 | 1048 | \\"\\"\\" 1049 | Bounding box overlaps or is below the specified geometry's bounding box. 1050 | \\"\\"\\" 1051 | bboxOverlapsOrBelow: GeoJSON 1052 | 1053 | \\"\\"\\" 1054 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 1055 | \\"\\"\\" 1056 | bboxOverlapsOrLeftOf: GeoJSON 1057 | 1058 | \\"\\"\\" 1059 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 1060 | \\"\\"\\" 1061 | bboxOverlapsOrRightOf: GeoJSON 1062 | 1063 | \\"\\"\\" 1064 | Bounding box is strictly to the right of the specified geometry's bounding box. 1065 | \\"\\"\\" 1066 | bboxRightOf: GeoJSON 1067 | 1068 | \\"\\"\\" 1069 | No points of the specified geometry lie in the exterior, and at least one 1070 | point of the interior of the specified geometry lies in the interior. 1071 | \\"\\"\\" 1072 | contains: GeoJSON 1073 | 1074 | \\"\\"\\" 1075 | The specified geometry intersects the interior but not the boundary (or exterior). 1076 | \\"\\"\\" 1077 | containsProperly: GeoJSON 1078 | 1079 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 1080 | coveredBy: GeoJSON 1081 | 1082 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 1083 | covers: GeoJSON 1084 | 1085 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 1086 | crosses: GeoJSON 1087 | 1088 | \\"\\"\\"They do not share any space together.\\"\\"\\" 1089 | disjoint: GeoJSON 1090 | 1091 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 1092 | equals: GeoJSON 1093 | 1094 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 1095 | exactlyEquals: GeoJSON 1096 | 1097 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 1098 | intersects: GeoJSON 1099 | 1100 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 1101 | intersects3D: GeoJSON 1102 | 1103 | \\"\\"\\" 1104 | They represent the same geometry and points are in the same directional order. 1105 | \\"\\"\\" 1106 | orderingEquals: GeoJSON 1107 | 1108 | \\"\\"\\" 1109 | They share space, are of the same dimension, but are not completely contained by each other. 1110 | \\"\\"\\" 1111 | overlaps: GeoJSON 1112 | 1113 | \\"\\"\\" 1114 | They have at least one point in common, but their interiors do not intersect. 1115 | \\"\\"\\" 1116 | touches: GeoJSON 1117 | 1118 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 1119 | within: GeoJSON 1120 | } 1121 | 1122 | \\"\\"\\"All geometry XYZ types implement this interface\\"\\"\\" 1123 | interface GeometryGeometryZ { 1124 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 1125 | geojson: GeoJSON 1126 | 1127 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 1128 | srid: Int! 1129 | } 1130 | 1131 | \\"\\"\\"All geometry XYZM types implement this interface\\"\\"\\" 1132 | interface GeometryGeometryZM { 1133 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 1134 | geojson: GeoJSON 1135 | 1136 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 1137 | srid: Int! 1138 | } 1139 | 1140 | \\"\\"\\"All geometry types implement this interface\\"\\"\\" 1141 | interface GeometryInterface { 1142 | \\"\\"\\"Converts the object to GeoJSON\\"\\"\\" 1143 | geojson: GeoJSON 1144 | 1145 | \\"\\"\\"Spatial reference identifier (SRID)\\"\\"\\" 1146 | srid: Int! 1147 | } 1148 | 1149 | \\"\\"\\" 1150 | A filter to be used against GeometryInterface fields. All fields are combined with a logical ‘and.’ 1151 | \\"\\"\\" 1152 | input GeometryInterfaceFilter { 1153 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 1154 | bboxAbove: GeoJSON 1155 | 1156 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 1157 | bboxBelow: GeoJSON 1158 | 1159 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 1160 | bboxContains: GeoJSON 1161 | 1162 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 1163 | bboxEquals: GeoJSON 1164 | 1165 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 1166 | bboxIntersects2D: GeoJSON 1167 | 1168 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 1169 | bboxIntersectsND: GeoJSON 1170 | 1171 | \\"\\"\\" 1172 | Bounding box is strictly to the left of the specified geometry's bounding box. 1173 | \\"\\"\\" 1174 | bboxLeftOf: GeoJSON 1175 | 1176 | \\"\\"\\" 1177 | Bounding box overlaps or is above the specified geometry's bounding box. 1178 | \\"\\"\\" 1179 | bboxOverlapsOrAbove: GeoJSON 1180 | 1181 | \\"\\"\\" 1182 | Bounding box overlaps or is below the specified geometry's bounding box. 1183 | \\"\\"\\" 1184 | bboxOverlapsOrBelow: GeoJSON 1185 | 1186 | \\"\\"\\" 1187 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 1188 | \\"\\"\\" 1189 | bboxOverlapsOrLeftOf: GeoJSON 1190 | 1191 | \\"\\"\\" 1192 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 1193 | \\"\\"\\" 1194 | bboxOverlapsOrRightOf: GeoJSON 1195 | 1196 | \\"\\"\\" 1197 | Bounding box is strictly to the right of the specified geometry's bounding box. 1198 | \\"\\"\\" 1199 | bboxRightOf: GeoJSON 1200 | 1201 | \\"\\"\\" 1202 | No points of the specified geometry lie in the exterior, and at least one 1203 | point of the interior of the specified geometry lies in the interior. 1204 | \\"\\"\\" 1205 | contains: GeoJSON 1206 | 1207 | \\"\\"\\" 1208 | The specified geometry intersects the interior but not the boundary (or exterior). 1209 | \\"\\"\\" 1210 | containsProperly: GeoJSON 1211 | 1212 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 1213 | coveredBy: GeoJSON 1214 | 1215 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 1216 | covers: GeoJSON 1217 | 1218 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 1219 | crosses: GeoJSON 1220 | 1221 | \\"\\"\\"They do not share any space together.\\"\\"\\" 1222 | disjoint: GeoJSON 1223 | 1224 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 1225 | equals: GeoJSON 1226 | 1227 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 1228 | exactlyEquals: GeoJSON 1229 | 1230 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 1231 | intersects: GeoJSON 1232 | 1233 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 1234 | intersects3D: GeoJSON 1235 | 1236 | \\"\\"\\" 1237 | They represent the same geometry and points are in the same directional order. 1238 | \\"\\"\\" 1239 | orderingEquals: GeoJSON 1240 | 1241 | \\"\\"\\" 1242 | They share space, are of the same dimension, but are not completely contained by each other. 1243 | \\"\\"\\" 1244 | overlaps: GeoJSON 1245 | 1246 | \\"\\"\\" 1247 | They have at least one point in common, but their interiors do not intersect. 1248 | \\"\\"\\" 1249 | touches: GeoJSON 1250 | 1251 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 1252 | within: GeoJSON 1253 | } 1254 | 1255 | type GeometryLineString implements GeometryInterface & GeometryGeometry { 1256 | geojson: GeoJSON 1257 | points: [GeometryPoint] 1258 | srid: Int! 1259 | } 1260 | 1261 | \\"\\"\\" 1262 | A filter to be used against GeometryLineString fields. All fields are combined with a logical ‘and.’ 1263 | \\"\\"\\" 1264 | input GeometryLineStringFilter { 1265 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 1266 | bboxAbove: GeoJSON 1267 | 1268 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 1269 | bboxBelow: GeoJSON 1270 | 1271 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 1272 | bboxContains: GeoJSON 1273 | 1274 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 1275 | bboxEquals: GeoJSON 1276 | 1277 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 1278 | bboxIntersects2D: GeoJSON 1279 | 1280 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 1281 | bboxIntersectsND: GeoJSON 1282 | 1283 | \\"\\"\\" 1284 | Bounding box is strictly to the left of the specified geometry's bounding box. 1285 | \\"\\"\\" 1286 | bboxLeftOf: GeoJSON 1287 | 1288 | \\"\\"\\" 1289 | Bounding box overlaps or is above the specified geometry's bounding box. 1290 | \\"\\"\\" 1291 | bboxOverlapsOrAbove: GeoJSON 1292 | 1293 | \\"\\"\\" 1294 | Bounding box overlaps or is below the specified geometry's bounding box. 1295 | \\"\\"\\" 1296 | bboxOverlapsOrBelow: GeoJSON 1297 | 1298 | \\"\\"\\" 1299 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 1300 | \\"\\"\\" 1301 | bboxOverlapsOrLeftOf: GeoJSON 1302 | 1303 | \\"\\"\\" 1304 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 1305 | \\"\\"\\" 1306 | bboxOverlapsOrRightOf: GeoJSON 1307 | 1308 | \\"\\"\\" 1309 | Bounding box is strictly to the right of the specified geometry's bounding box. 1310 | \\"\\"\\" 1311 | bboxRightOf: GeoJSON 1312 | 1313 | \\"\\"\\" 1314 | No points of the specified geometry lie in the exterior, and at least one 1315 | point of the interior of the specified geometry lies in the interior. 1316 | \\"\\"\\" 1317 | contains: GeoJSON 1318 | 1319 | \\"\\"\\" 1320 | The specified geometry intersects the interior but not the boundary (or exterior). 1321 | \\"\\"\\" 1322 | containsProperly: GeoJSON 1323 | 1324 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 1325 | coveredBy: GeoJSON 1326 | 1327 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 1328 | covers: GeoJSON 1329 | 1330 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 1331 | crosses: GeoJSON 1332 | 1333 | \\"\\"\\"They do not share any space together.\\"\\"\\" 1334 | disjoint: GeoJSON 1335 | 1336 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 1337 | equals: GeoJSON 1338 | 1339 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 1340 | exactlyEquals: GeoJSON 1341 | 1342 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 1343 | intersects: GeoJSON 1344 | 1345 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 1346 | intersects3D: GeoJSON 1347 | 1348 | \\"\\"\\" 1349 | They represent the same geometry and points are in the same directional order. 1350 | \\"\\"\\" 1351 | orderingEquals: GeoJSON 1352 | 1353 | \\"\\"\\" 1354 | They share space, are of the same dimension, but are not completely contained by each other. 1355 | \\"\\"\\" 1356 | overlaps: GeoJSON 1357 | 1358 | \\"\\"\\" 1359 | They have at least one point in common, but their interiors do not intersect. 1360 | \\"\\"\\" 1361 | touches: GeoJSON 1362 | 1363 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 1364 | within: GeoJSON 1365 | } 1366 | 1367 | type GeometryLineStringM implements GeometryInterface & GeometryGeometryM { 1368 | geojson: GeoJSON 1369 | points: [GeometryPointM] 1370 | srid: Int! 1371 | } 1372 | 1373 | \\"\\"\\" 1374 | A filter to be used against GeometryLineStringM fields. All fields are combined with a logical ‘and.’ 1375 | \\"\\"\\" 1376 | input GeometryLineStringMFilter { 1377 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 1378 | bboxAbove: GeoJSON 1379 | 1380 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 1381 | bboxBelow: GeoJSON 1382 | 1383 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 1384 | bboxContains: GeoJSON 1385 | 1386 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 1387 | bboxEquals: GeoJSON 1388 | 1389 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 1390 | bboxIntersects2D: GeoJSON 1391 | 1392 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 1393 | bboxIntersectsND: GeoJSON 1394 | 1395 | \\"\\"\\" 1396 | Bounding box is strictly to the left of the specified geometry's bounding box. 1397 | \\"\\"\\" 1398 | bboxLeftOf: GeoJSON 1399 | 1400 | \\"\\"\\" 1401 | Bounding box overlaps or is above the specified geometry's bounding box. 1402 | \\"\\"\\" 1403 | bboxOverlapsOrAbove: GeoJSON 1404 | 1405 | \\"\\"\\" 1406 | Bounding box overlaps or is below the specified geometry's bounding box. 1407 | \\"\\"\\" 1408 | bboxOverlapsOrBelow: GeoJSON 1409 | 1410 | \\"\\"\\" 1411 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 1412 | \\"\\"\\" 1413 | bboxOverlapsOrLeftOf: GeoJSON 1414 | 1415 | \\"\\"\\" 1416 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 1417 | \\"\\"\\" 1418 | bboxOverlapsOrRightOf: GeoJSON 1419 | 1420 | \\"\\"\\" 1421 | Bounding box is strictly to the right of the specified geometry's bounding box. 1422 | \\"\\"\\" 1423 | bboxRightOf: GeoJSON 1424 | 1425 | \\"\\"\\" 1426 | No points of the specified geometry lie in the exterior, and at least one 1427 | point of the interior of the specified geometry lies in the interior. 1428 | \\"\\"\\" 1429 | contains: GeoJSON 1430 | 1431 | \\"\\"\\" 1432 | The specified geometry intersects the interior but not the boundary (or exterior). 1433 | \\"\\"\\" 1434 | containsProperly: GeoJSON 1435 | 1436 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 1437 | coveredBy: GeoJSON 1438 | 1439 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 1440 | covers: GeoJSON 1441 | 1442 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 1443 | crosses: GeoJSON 1444 | 1445 | \\"\\"\\"They do not share any space together.\\"\\"\\" 1446 | disjoint: GeoJSON 1447 | 1448 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 1449 | equals: GeoJSON 1450 | 1451 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 1452 | exactlyEquals: GeoJSON 1453 | 1454 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 1455 | intersects: GeoJSON 1456 | 1457 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 1458 | intersects3D: GeoJSON 1459 | 1460 | \\"\\"\\" 1461 | They represent the same geometry and points are in the same directional order. 1462 | \\"\\"\\" 1463 | orderingEquals: GeoJSON 1464 | 1465 | \\"\\"\\" 1466 | They share space, are of the same dimension, but are not completely contained by each other. 1467 | \\"\\"\\" 1468 | overlaps: GeoJSON 1469 | 1470 | \\"\\"\\" 1471 | They have at least one point in common, but their interiors do not intersect. 1472 | \\"\\"\\" 1473 | touches: GeoJSON 1474 | 1475 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 1476 | within: GeoJSON 1477 | } 1478 | 1479 | type GeometryLineStringZ implements GeometryInterface & GeometryGeometryZ { 1480 | geojson: GeoJSON 1481 | points: [GeometryPointZ] 1482 | srid: Int! 1483 | } 1484 | 1485 | type GeometryLineStringZM implements GeometryInterface & GeometryGeometryZM { 1486 | geojson: GeoJSON 1487 | points: [GeometryPointZM] 1488 | srid: Int! 1489 | } 1490 | 1491 | type GeometryMultiLineString implements GeometryInterface & GeometryGeometry { 1492 | geojson: GeoJSON 1493 | lines: [GeometryLineString] 1494 | srid: Int! 1495 | } 1496 | 1497 | \\"\\"\\" 1498 | A filter to be used against GeometryMultiLineString fields. All fields are combined with a logical ‘and.’ 1499 | \\"\\"\\" 1500 | input GeometryMultiLineStringFilter { 1501 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 1502 | bboxAbove: GeoJSON 1503 | 1504 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 1505 | bboxBelow: GeoJSON 1506 | 1507 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 1508 | bboxContains: GeoJSON 1509 | 1510 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 1511 | bboxEquals: GeoJSON 1512 | 1513 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 1514 | bboxIntersects2D: GeoJSON 1515 | 1516 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 1517 | bboxIntersectsND: GeoJSON 1518 | 1519 | \\"\\"\\" 1520 | Bounding box is strictly to the left of the specified geometry's bounding box. 1521 | \\"\\"\\" 1522 | bboxLeftOf: GeoJSON 1523 | 1524 | \\"\\"\\" 1525 | Bounding box overlaps or is above the specified geometry's bounding box. 1526 | \\"\\"\\" 1527 | bboxOverlapsOrAbove: GeoJSON 1528 | 1529 | \\"\\"\\" 1530 | Bounding box overlaps or is below the specified geometry's bounding box. 1531 | \\"\\"\\" 1532 | bboxOverlapsOrBelow: GeoJSON 1533 | 1534 | \\"\\"\\" 1535 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 1536 | \\"\\"\\" 1537 | bboxOverlapsOrLeftOf: GeoJSON 1538 | 1539 | \\"\\"\\" 1540 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 1541 | \\"\\"\\" 1542 | bboxOverlapsOrRightOf: GeoJSON 1543 | 1544 | \\"\\"\\" 1545 | Bounding box is strictly to the right of the specified geometry's bounding box. 1546 | \\"\\"\\" 1547 | bboxRightOf: GeoJSON 1548 | 1549 | \\"\\"\\" 1550 | No points of the specified geometry lie in the exterior, and at least one 1551 | point of the interior of the specified geometry lies in the interior. 1552 | \\"\\"\\" 1553 | contains: GeoJSON 1554 | 1555 | \\"\\"\\" 1556 | The specified geometry intersects the interior but not the boundary (or exterior). 1557 | \\"\\"\\" 1558 | containsProperly: GeoJSON 1559 | 1560 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 1561 | coveredBy: GeoJSON 1562 | 1563 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 1564 | covers: GeoJSON 1565 | 1566 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 1567 | crosses: GeoJSON 1568 | 1569 | \\"\\"\\"They do not share any space together.\\"\\"\\" 1570 | disjoint: GeoJSON 1571 | 1572 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 1573 | equals: GeoJSON 1574 | 1575 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 1576 | exactlyEquals: GeoJSON 1577 | 1578 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 1579 | intersects: GeoJSON 1580 | 1581 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 1582 | intersects3D: GeoJSON 1583 | 1584 | \\"\\"\\" 1585 | They represent the same geometry and points are in the same directional order. 1586 | \\"\\"\\" 1587 | orderingEquals: GeoJSON 1588 | 1589 | \\"\\"\\" 1590 | They share space, are of the same dimension, but are not completely contained by each other. 1591 | \\"\\"\\" 1592 | overlaps: GeoJSON 1593 | 1594 | \\"\\"\\" 1595 | They have at least one point in common, but their interiors do not intersect. 1596 | \\"\\"\\" 1597 | touches: GeoJSON 1598 | 1599 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 1600 | within: GeoJSON 1601 | } 1602 | 1603 | type GeometryMultiLineStringM implements GeometryInterface & GeometryGeometryM { 1604 | geojson: GeoJSON 1605 | lines: [GeometryLineStringM] 1606 | srid: Int! 1607 | } 1608 | 1609 | \\"\\"\\" 1610 | A filter to be used against GeometryMultiLineStringM fields. All fields are combined with a logical ‘and.’ 1611 | \\"\\"\\" 1612 | input GeometryMultiLineStringMFilter { 1613 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 1614 | bboxAbove: GeoJSON 1615 | 1616 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 1617 | bboxBelow: GeoJSON 1618 | 1619 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 1620 | bboxContains: GeoJSON 1621 | 1622 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 1623 | bboxEquals: GeoJSON 1624 | 1625 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 1626 | bboxIntersects2D: GeoJSON 1627 | 1628 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 1629 | bboxIntersectsND: GeoJSON 1630 | 1631 | \\"\\"\\" 1632 | Bounding box is strictly to the left of the specified geometry's bounding box. 1633 | \\"\\"\\" 1634 | bboxLeftOf: GeoJSON 1635 | 1636 | \\"\\"\\" 1637 | Bounding box overlaps or is above the specified geometry's bounding box. 1638 | \\"\\"\\" 1639 | bboxOverlapsOrAbove: GeoJSON 1640 | 1641 | \\"\\"\\" 1642 | Bounding box overlaps or is below the specified geometry's bounding box. 1643 | \\"\\"\\" 1644 | bboxOverlapsOrBelow: GeoJSON 1645 | 1646 | \\"\\"\\" 1647 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 1648 | \\"\\"\\" 1649 | bboxOverlapsOrLeftOf: GeoJSON 1650 | 1651 | \\"\\"\\" 1652 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 1653 | \\"\\"\\" 1654 | bboxOverlapsOrRightOf: GeoJSON 1655 | 1656 | \\"\\"\\" 1657 | Bounding box is strictly to the right of the specified geometry's bounding box. 1658 | \\"\\"\\" 1659 | bboxRightOf: GeoJSON 1660 | 1661 | \\"\\"\\" 1662 | No points of the specified geometry lie in the exterior, and at least one 1663 | point of the interior of the specified geometry lies in the interior. 1664 | \\"\\"\\" 1665 | contains: GeoJSON 1666 | 1667 | \\"\\"\\" 1668 | The specified geometry intersects the interior but not the boundary (or exterior). 1669 | \\"\\"\\" 1670 | containsProperly: GeoJSON 1671 | 1672 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 1673 | coveredBy: GeoJSON 1674 | 1675 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 1676 | covers: GeoJSON 1677 | 1678 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 1679 | crosses: GeoJSON 1680 | 1681 | \\"\\"\\"They do not share any space together.\\"\\"\\" 1682 | disjoint: GeoJSON 1683 | 1684 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 1685 | equals: GeoJSON 1686 | 1687 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 1688 | exactlyEquals: GeoJSON 1689 | 1690 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 1691 | intersects: GeoJSON 1692 | 1693 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 1694 | intersects3D: GeoJSON 1695 | 1696 | \\"\\"\\" 1697 | They represent the same geometry and points are in the same directional order. 1698 | \\"\\"\\" 1699 | orderingEquals: GeoJSON 1700 | 1701 | \\"\\"\\" 1702 | They share space, are of the same dimension, but are not completely contained by each other. 1703 | \\"\\"\\" 1704 | overlaps: GeoJSON 1705 | 1706 | \\"\\"\\" 1707 | They have at least one point in common, but their interiors do not intersect. 1708 | \\"\\"\\" 1709 | touches: GeoJSON 1710 | 1711 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 1712 | within: GeoJSON 1713 | } 1714 | 1715 | type GeometryMultiLineStringZ implements GeometryInterface & GeometryGeometryZ { 1716 | geojson: GeoJSON 1717 | lines: [GeometryLineStringZ] 1718 | srid: Int! 1719 | } 1720 | 1721 | type GeometryMultiLineStringZM implements GeometryInterface & GeometryGeometryZM { 1722 | geojson: GeoJSON 1723 | lines: [GeometryLineStringZM] 1724 | srid: Int! 1725 | } 1726 | 1727 | type GeometryMultiPoint implements GeometryInterface & GeometryGeometry { 1728 | geojson: GeoJSON 1729 | points: [GeometryPoint] 1730 | srid: Int! 1731 | } 1732 | 1733 | \\"\\"\\" 1734 | A filter to be used against GeometryMultiPoint fields. All fields are combined with a logical ‘and.’ 1735 | \\"\\"\\" 1736 | input GeometryMultiPointFilter { 1737 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 1738 | bboxAbove: GeoJSON 1739 | 1740 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 1741 | bboxBelow: GeoJSON 1742 | 1743 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 1744 | bboxContains: GeoJSON 1745 | 1746 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 1747 | bboxEquals: GeoJSON 1748 | 1749 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 1750 | bboxIntersects2D: GeoJSON 1751 | 1752 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 1753 | bboxIntersectsND: GeoJSON 1754 | 1755 | \\"\\"\\" 1756 | Bounding box is strictly to the left of the specified geometry's bounding box. 1757 | \\"\\"\\" 1758 | bboxLeftOf: GeoJSON 1759 | 1760 | \\"\\"\\" 1761 | Bounding box overlaps or is above the specified geometry's bounding box. 1762 | \\"\\"\\" 1763 | bboxOverlapsOrAbove: GeoJSON 1764 | 1765 | \\"\\"\\" 1766 | Bounding box overlaps or is below the specified geometry's bounding box. 1767 | \\"\\"\\" 1768 | bboxOverlapsOrBelow: GeoJSON 1769 | 1770 | \\"\\"\\" 1771 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 1772 | \\"\\"\\" 1773 | bboxOverlapsOrLeftOf: GeoJSON 1774 | 1775 | \\"\\"\\" 1776 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 1777 | \\"\\"\\" 1778 | bboxOverlapsOrRightOf: GeoJSON 1779 | 1780 | \\"\\"\\" 1781 | Bounding box is strictly to the right of the specified geometry's bounding box. 1782 | \\"\\"\\" 1783 | bboxRightOf: GeoJSON 1784 | 1785 | \\"\\"\\" 1786 | No points of the specified geometry lie in the exterior, and at least one 1787 | point of the interior of the specified geometry lies in the interior. 1788 | \\"\\"\\" 1789 | contains: GeoJSON 1790 | 1791 | \\"\\"\\" 1792 | The specified geometry intersects the interior but not the boundary (or exterior). 1793 | \\"\\"\\" 1794 | containsProperly: GeoJSON 1795 | 1796 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 1797 | coveredBy: GeoJSON 1798 | 1799 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 1800 | covers: GeoJSON 1801 | 1802 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 1803 | crosses: GeoJSON 1804 | 1805 | \\"\\"\\"They do not share any space together.\\"\\"\\" 1806 | disjoint: GeoJSON 1807 | 1808 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 1809 | equals: GeoJSON 1810 | 1811 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 1812 | exactlyEquals: GeoJSON 1813 | 1814 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 1815 | intersects: GeoJSON 1816 | 1817 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 1818 | intersects3D: GeoJSON 1819 | 1820 | \\"\\"\\" 1821 | They represent the same geometry and points are in the same directional order. 1822 | \\"\\"\\" 1823 | orderingEquals: GeoJSON 1824 | 1825 | \\"\\"\\" 1826 | They share space, are of the same dimension, but are not completely contained by each other. 1827 | \\"\\"\\" 1828 | overlaps: GeoJSON 1829 | 1830 | \\"\\"\\" 1831 | They have at least one point in common, but their interiors do not intersect. 1832 | \\"\\"\\" 1833 | touches: GeoJSON 1834 | 1835 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 1836 | within: GeoJSON 1837 | } 1838 | 1839 | type GeometryMultiPointM implements GeometryInterface & GeometryGeometryM { 1840 | geojson: GeoJSON 1841 | points: [GeometryPointM] 1842 | srid: Int! 1843 | } 1844 | 1845 | \\"\\"\\" 1846 | A filter to be used against GeometryMultiPointM fields. All fields are combined with a logical ‘and.’ 1847 | \\"\\"\\" 1848 | input GeometryMultiPointMFilter { 1849 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 1850 | bboxAbove: GeoJSON 1851 | 1852 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 1853 | bboxBelow: GeoJSON 1854 | 1855 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 1856 | bboxContains: GeoJSON 1857 | 1858 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 1859 | bboxEquals: GeoJSON 1860 | 1861 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 1862 | bboxIntersects2D: GeoJSON 1863 | 1864 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 1865 | bboxIntersectsND: GeoJSON 1866 | 1867 | \\"\\"\\" 1868 | Bounding box is strictly to the left of the specified geometry's bounding box. 1869 | \\"\\"\\" 1870 | bboxLeftOf: GeoJSON 1871 | 1872 | \\"\\"\\" 1873 | Bounding box overlaps or is above the specified geometry's bounding box. 1874 | \\"\\"\\" 1875 | bboxOverlapsOrAbove: GeoJSON 1876 | 1877 | \\"\\"\\" 1878 | Bounding box overlaps or is below the specified geometry's bounding box. 1879 | \\"\\"\\" 1880 | bboxOverlapsOrBelow: GeoJSON 1881 | 1882 | \\"\\"\\" 1883 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 1884 | \\"\\"\\" 1885 | bboxOverlapsOrLeftOf: GeoJSON 1886 | 1887 | \\"\\"\\" 1888 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 1889 | \\"\\"\\" 1890 | bboxOverlapsOrRightOf: GeoJSON 1891 | 1892 | \\"\\"\\" 1893 | Bounding box is strictly to the right of the specified geometry's bounding box. 1894 | \\"\\"\\" 1895 | bboxRightOf: GeoJSON 1896 | 1897 | \\"\\"\\" 1898 | No points of the specified geometry lie in the exterior, and at least one 1899 | point of the interior of the specified geometry lies in the interior. 1900 | \\"\\"\\" 1901 | contains: GeoJSON 1902 | 1903 | \\"\\"\\" 1904 | The specified geometry intersects the interior but not the boundary (or exterior). 1905 | \\"\\"\\" 1906 | containsProperly: GeoJSON 1907 | 1908 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 1909 | coveredBy: GeoJSON 1910 | 1911 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 1912 | covers: GeoJSON 1913 | 1914 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 1915 | crosses: GeoJSON 1916 | 1917 | \\"\\"\\"They do not share any space together.\\"\\"\\" 1918 | disjoint: GeoJSON 1919 | 1920 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 1921 | equals: GeoJSON 1922 | 1923 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 1924 | exactlyEquals: GeoJSON 1925 | 1926 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 1927 | intersects: GeoJSON 1928 | 1929 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 1930 | intersects3D: GeoJSON 1931 | 1932 | \\"\\"\\" 1933 | They represent the same geometry and points are in the same directional order. 1934 | \\"\\"\\" 1935 | orderingEquals: GeoJSON 1936 | 1937 | \\"\\"\\" 1938 | They share space, are of the same dimension, but are not completely contained by each other. 1939 | \\"\\"\\" 1940 | overlaps: GeoJSON 1941 | 1942 | \\"\\"\\" 1943 | They have at least one point in common, but their interiors do not intersect. 1944 | \\"\\"\\" 1945 | touches: GeoJSON 1946 | 1947 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 1948 | within: GeoJSON 1949 | } 1950 | 1951 | type GeometryMultiPointZ implements GeometryInterface & GeometryGeometryZ { 1952 | geojson: GeoJSON 1953 | points: [GeometryPointZ] 1954 | srid: Int! 1955 | } 1956 | 1957 | type GeometryMultiPointZM implements GeometryInterface & GeometryGeometryZM { 1958 | geojson: GeoJSON 1959 | points: [GeometryPointZM] 1960 | srid: Int! 1961 | } 1962 | 1963 | type GeometryMultiPolygon implements GeometryInterface & GeometryGeometry { 1964 | geojson: GeoJSON 1965 | polygons: [GeometryPolygon] 1966 | srid: Int! 1967 | } 1968 | 1969 | \\"\\"\\" 1970 | A filter to be used against GeometryMultiPolygon fields. All fields are combined with a logical ‘and.’ 1971 | \\"\\"\\" 1972 | input GeometryMultiPolygonFilter { 1973 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 1974 | bboxAbove: GeoJSON 1975 | 1976 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 1977 | bboxBelow: GeoJSON 1978 | 1979 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 1980 | bboxContains: GeoJSON 1981 | 1982 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 1983 | bboxEquals: GeoJSON 1984 | 1985 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 1986 | bboxIntersects2D: GeoJSON 1987 | 1988 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 1989 | bboxIntersectsND: GeoJSON 1990 | 1991 | \\"\\"\\" 1992 | Bounding box is strictly to the left of the specified geometry's bounding box. 1993 | \\"\\"\\" 1994 | bboxLeftOf: GeoJSON 1995 | 1996 | \\"\\"\\" 1997 | Bounding box overlaps or is above the specified geometry's bounding box. 1998 | \\"\\"\\" 1999 | bboxOverlapsOrAbove: GeoJSON 2000 | 2001 | \\"\\"\\" 2002 | Bounding box overlaps or is below the specified geometry's bounding box. 2003 | \\"\\"\\" 2004 | bboxOverlapsOrBelow: GeoJSON 2005 | 2006 | \\"\\"\\" 2007 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 2008 | \\"\\"\\" 2009 | bboxOverlapsOrLeftOf: GeoJSON 2010 | 2011 | \\"\\"\\" 2012 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 2013 | \\"\\"\\" 2014 | bboxOverlapsOrRightOf: GeoJSON 2015 | 2016 | \\"\\"\\" 2017 | Bounding box is strictly to the right of the specified geometry's bounding box. 2018 | \\"\\"\\" 2019 | bboxRightOf: GeoJSON 2020 | 2021 | \\"\\"\\" 2022 | No points of the specified geometry lie in the exterior, and at least one 2023 | point of the interior of the specified geometry lies in the interior. 2024 | \\"\\"\\" 2025 | contains: GeoJSON 2026 | 2027 | \\"\\"\\" 2028 | The specified geometry intersects the interior but not the boundary (or exterior). 2029 | \\"\\"\\" 2030 | containsProperly: GeoJSON 2031 | 2032 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 2033 | coveredBy: GeoJSON 2034 | 2035 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 2036 | covers: GeoJSON 2037 | 2038 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 2039 | crosses: GeoJSON 2040 | 2041 | \\"\\"\\"They do not share any space together.\\"\\"\\" 2042 | disjoint: GeoJSON 2043 | 2044 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 2045 | equals: GeoJSON 2046 | 2047 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 2048 | exactlyEquals: GeoJSON 2049 | 2050 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 2051 | intersects: GeoJSON 2052 | 2053 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 2054 | intersects3D: GeoJSON 2055 | 2056 | \\"\\"\\" 2057 | They represent the same geometry and points are in the same directional order. 2058 | \\"\\"\\" 2059 | orderingEquals: GeoJSON 2060 | 2061 | \\"\\"\\" 2062 | They share space, are of the same dimension, but are not completely contained by each other. 2063 | \\"\\"\\" 2064 | overlaps: GeoJSON 2065 | 2066 | \\"\\"\\" 2067 | They have at least one point in common, but their interiors do not intersect. 2068 | \\"\\"\\" 2069 | touches: GeoJSON 2070 | 2071 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 2072 | within: GeoJSON 2073 | } 2074 | 2075 | type GeometryMultiPolygonM implements GeometryInterface & GeometryGeometryM { 2076 | geojson: GeoJSON 2077 | polygons: [GeometryPolygonM] 2078 | srid: Int! 2079 | } 2080 | 2081 | \\"\\"\\" 2082 | A filter to be used against GeometryMultiPolygonM fields. All fields are combined with a logical ‘and.’ 2083 | \\"\\"\\" 2084 | input GeometryMultiPolygonMFilter { 2085 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 2086 | bboxAbove: GeoJSON 2087 | 2088 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 2089 | bboxBelow: GeoJSON 2090 | 2091 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 2092 | bboxContains: GeoJSON 2093 | 2094 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 2095 | bboxEquals: GeoJSON 2096 | 2097 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 2098 | bboxIntersects2D: GeoJSON 2099 | 2100 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 2101 | bboxIntersectsND: GeoJSON 2102 | 2103 | \\"\\"\\" 2104 | Bounding box is strictly to the left of the specified geometry's bounding box. 2105 | \\"\\"\\" 2106 | bboxLeftOf: GeoJSON 2107 | 2108 | \\"\\"\\" 2109 | Bounding box overlaps or is above the specified geometry's bounding box. 2110 | \\"\\"\\" 2111 | bboxOverlapsOrAbove: GeoJSON 2112 | 2113 | \\"\\"\\" 2114 | Bounding box overlaps or is below the specified geometry's bounding box. 2115 | \\"\\"\\" 2116 | bboxOverlapsOrBelow: GeoJSON 2117 | 2118 | \\"\\"\\" 2119 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 2120 | \\"\\"\\" 2121 | bboxOverlapsOrLeftOf: GeoJSON 2122 | 2123 | \\"\\"\\" 2124 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 2125 | \\"\\"\\" 2126 | bboxOverlapsOrRightOf: GeoJSON 2127 | 2128 | \\"\\"\\" 2129 | Bounding box is strictly to the right of the specified geometry's bounding box. 2130 | \\"\\"\\" 2131 | bboxRightOf: GeoJSON 2132 | 2133 | \\"\\"\\" 2134 | No points of the specified geometry lie in the exterior, and at least one 2135 | point of the interior of the specified geometry lies in the interior. 2136 | \\"\\"\\" 2137 | contains: GeoJSON 2138 | 2139 | \\"\\"\\" 2140 | The specified geometry intersects the interior but not the boundary (or exterior). 2141 | \\"\\"\\" 2142 | containsProperly: GeoJSON 2143 | 2144 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 2145 | coveredBy: GeoJSON 2146 | 2147 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 2148 | covers: GeoJSON 2149 | 2150 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 2151 | crosses: GeoJSON 2152 | 2153 | \\"\\"\\"They do not share any space together.\\"\\"\\" 2154 | disjoint: GeoJSON 2155 | 2156 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 2157 | equals: GeoJSON 2158 | 2159 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 2160 | exactlyEquals: GeoJSON 2161 | 2162 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 2163 | intersects: GeoJSON 2164 | 2165 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 2166 | intersects3D: GeoJSON 2167 | 2168 | \\"\\"\\" 2169 | They represent the same geometry and points are in the same directional order. 2170 | \\"\\"\\" 2171 | orderingEquals: GeoJSON 2172 | 2173 | \\"\\"\\" 2174 | They share space, are of the same dimension, but are not completely contained by each other. 2175 | \\"\\"\\" 2176 | overlaps: GeoJSON 2177 | 2178 | \\"\\"\\" 2179 | They have at least one point in common, but their interiors do not intersect. 2180 | \\"\\"\\" 2181 | touches: GeoJSON 2182 | 2183 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 2184 | within: GeoJSON 2185 | } 2186 | 2187 | type GeometryMultiPolygonZ implements GeometryInterface & GeometryGeometryZ { 2188 | geojson: GeoJSON 2189 | polygons: [GeometryPolygonZ] 2190 | srid: Int! 2191 | } 2192 | 2193 | type GeometryMultiPolygonZM implements GeometryInterface & GeometryGeometryZM { 2194 | geojson: GeoJSON 2195 | polygons: [GeometryPolygonZM] 2196 | srid: Int! 2197 | } 2198 | 2199 | type GeometryPoint implements GeometryInterface & GeometryGeometry { 2200 | geojson: GeoJSON 2201 | srid: Int! 2202 | x: Float! 2203 | y: Float! 2204 | } 2205 | 2206 | \\"\\"\\" 2207 | A filter to be used against GeometryPoint fields. All fields are combined with a logical ‘and.’ 2208 | \\"\\"\\" 2209 | input GeometryPointFilter { 2210 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 2211 | bboxAbove: GeoJSON 2212 | 2213 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 2214 | bboxBelow: GeoJSON 2215 | 2216 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 2217 | bboxContains: GeoJSON 2218 | 2219 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 2220 | bboxEquals: GeoJSON 2221 | 2222 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 2223 | bboxIntersects2D: GeoJSON 2224 | 2225 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 2226 | bboxIntersectsND: GeoJSON 2227 | 2228 | \\"\\"\\" 2229 | Bounding box is strictly to the left of the specified geometry's bounding box. 2230 | \\"\\"\\" 2231 | bboxLeftOf: GeoJSON 2232 | 2233 | \\"\\"\\" 2234 | Bounding box overlaps or is above the specified geometry's bounding box. 2235 | \\"\\"\\" 2236 | bboxOverlapsOrAbove: GeoJSON 2237 | 2238 | \\"\\"\\" 2239 | Bounding box overlaps or is below the specified geometry's bounding box. 2240 | \\"\\"\\" 2241 | bboxOverlapsOrBelow: GeoJSON 2242 | 2243 | \\"\\"\\" 2244 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 2245 | \\"\\"\\" 2246 | bboxOverlapsOrLeftOf: GeoJSON 2247 | 2248 | \\"\\"\\" 2249 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 2250 | \\"\\"\\" 2251 | bboxOverlapsOrRightOf: GeoJSON 2252 | 2253 | \\"\\"\\" 2254 | Bounding box is strictly to the right of the specified geometry's bounding box. 2255 | \\"\\"\\" 2256 | bboxRightOf: GeoJSON 2257 | 2258 | \\"\\"\\" 2259 | No points of the specified geometry lie in the exterior, and at least one 2260 | point of the interior of the specified geometry lies in the interior. 2261 | \\"\\"\\" 2262 | contains: GeoJSON 2263 | 2264 | \\"\\"\\" 2265 | The specified geometry intersects the interior but not the boundary (or exterior). 2266 | \\"\\"\\" 2267 | containsProperly: GeoJSON 2268 | 2269 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 2270 | coveredBy: GeoJSON 2271 | 2272 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 2273 | covers: GeoJSON 2274 | 2275 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 2276 | crosses: GeoJSON 2277 | 2278 | \\"\\"\\"They do not share any space together.\\"\\"\\" 2279 | disjoint: GeoJSON 2280 | 2281 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 2282 | equals: GeoJSON 2283 | 2284 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 2285 | exactlyEquals: GeoJSON 2286 | 2287 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 2288 | intersects: GeoJSON 2289 | 2290 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 2291 | intersects3D: GeoJSON 2292 | 2293 | \\"\\"\\" 2294 | They represent the same geometry and points are in the same directional order. 2295 | \\"\\"\\" 2296 | orderingEquals: GeoJSON 2297 | 2298 | \\"\\"\\" 2299 | They share space, are of the same dimension, but are not completely contained by each other. 2300 | \\"\\"\\" 2301 | overlaps: GeoJSON 2302 | 2303 | \\"\\"\\" 2304 | They have at least one point in common, but their interiors do not intersect. 2305 | \\"\\"\\" 2306 | touches: GeoJSON 2307 | 2308 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 2309 | within: GeoJSON 2310 | } 2311 | 2312 | type GeometryPointM implements GeometryInterface & GeometryGeometryM { 2313 | geojson: GeoJSON 2314 | srid: Int! 2315 | x: Float! 2316 | y: Float! 2317 | } 2318 | 2319 | \\"\\"\\" 2320 | A filter to be used against GeometryPointM fields. All fields are combined with a logical ‘and.’ 2321 | \\"\\"\\" 2322 | input GeometryPointMFilter { 2323 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 2324 | bboxAbove: GeoJSON 2325 | 2326 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 2327 | bboxBelow: GeoJSON 2328 | 2329 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 2330 | bboxContains: GeoJSON 2331 | 2332 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 2333 | bboxEquals: GeoJSON 2334 | 2335 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 2336 | bboxIntersects2D: GeoJSON 2337 | 2338 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 2339 | bboxIntersectsND: GeoJSON 2340 | 2341 | \\"\\"\\" 2342 | Bounding box is strictly to the left of the specified geometry's bounding box. 2343 | \\"\\"\\" 2344 | bboxLeftOf: GeoJSON 2345 | 2346 | \\"\\"\\" 2347 | Bounding box overlaps or is above the specified geometry's bounding box. 2348 | \\"\\"\\" 2349 | bboxOverlapsOrAbove: GeoJSON 2350 | 2351 | \\"\\"\\" 2352 | Bounding box overlaps or is below the specified geometry's bounding box. 2353 | \\"\\"\\" 2354 | bboxOverlapsOrBelow: GeoJSON 2355 | 2356 | \\"\\"\\" 2357 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 2358 | \\"\\"\\" 2359 | bboxOverlapsOrLeftOf: GeoJSON 2360 | 2361 | \\"\\"\\" 2362 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 2363 | \\"\\"\\" 2364 | bboxOverlapsOrRightOf: GeoJSON 2365 | 2366 | \\"\\"\\" 2367 | Bounding box is strictly to the right of the specified geometry's bounding box. 2368 | \\"\\"\\" 2369 | bboxRightOf: GeoJSON 2370 | 2371 | \\"\\"\\" 2372 | No points of the specified geometry lie in the exterior, and at least one 2373 | point of the interior of the specified geometry lies in the interior. 2374 | \\"\\"\\" 2375 | contains: GeoJSON 2376 | 2377 | \\"\\"\\" 2378 | The specified geometry intersects the interior but not the boundary (or exterior). 2379 | \\"\\"\\" 2380 | containsProperly: GeoJSON 2381 | 2382 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 2383 | coveredBy: GeoJSON 2384 | 2385 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 2386 | covers: GeoJSON 2387 | 2388 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 2389 | crosses: GeoJSON 2390 | 2391 | \\"\\"\\"They do not share any space together.\\"\\"\\" 2392 | disjoint: GeoJSON 2393 | 2394 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 2395 | equals: GeoJSON 2396 | 2397 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 2398 | exactlyEquals: GeoJSON 2399 | 2400 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 2401 | intersects: GeoJSON 2402 | 2403 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 2404 | intersects3D: GeoJSON 2405 | 2406 | \\"\\"\\" 2407 | They represent the same geometry and points are in the same directional order. 2408 | \\"\\"\\" 2409 | orderingEquals: GeoJSON 2410 | 2411 | \\"\\"\\" 2412 | They share space, are of the same dimension, but are not completely contained by each other. 2413 | \\"\\"\\" 2414 | overlaps: GeoJSON 2415 | 2416 | \\"\\"\\" 2417 | They have at least one point in common, but their interiors do not intersect. 2418 | \\"\\"\\" 2419 | touches: GeoJSON 2420 | 2421 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 2422 | within: GeoJSON 2423 | } 2424 | 2425 | type GeometryPointZ implements GeometryInterface & GeometryGeometryZ { 2426 | geojson: GeoJSON 2427 | srid: Int! 2428 | x: Float! 2429 | y: Float! 2430 | } 2431 | 2432 | type GeometryPointZM implements GeometryInterface & GeometryGeometryZM { 2433 | geojson: GeoJSON 2434 | srid: Int! 2435 | x: Float! 2436 | y: Float! 2437 | } 2438 | 2439 | type GeometryPolygon implements GeometryInterface & GeometryGeometry { 2440 | exterior: GeometryLineString 2441 | geojson: GeoJSON 2442 | interiors: [GeometryLineString] 2443 | srid: Int! 2444 | } 2445 | 2446 | \\"\\"\\" 2447 | A filter to be used against GeometryPolygon fields. All fields are combined with a logical ‘and.’ 2448 | \\"\\"\\" 2449 | input GeometryPolygonFilter { 2450 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 2451 | bboxAbove: GeoJSON 2452 | 2453 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 2454 | bboxBelow: GeoJSON 2455 | 2456 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 2457 | bboxContains: GeoJSON 2458 | 2459 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 2460 | bboxEquals: GeoJSON 2461 | 2462 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 2463 | bboxIntersects2D: GeoJSON 2464 | 2465 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 2466 | bboxIntersectsND: GeoJSON 2467 | 2468 | \\"\\"\\" 2469 | Bounding box is strictly to the left of the specified geometry's bounding box. 2470 | \\"\\"\\" 2471 | bboxLeftOf: GeoJSON 2472 | 2473 | \\"\\"\\" 2474 | Bounding box overlaps or is above the specified geometry's bounding box. 2475 | \\"\\"\\" 2476 | bboxOverlapsOrAbove: GeoJSON 2477 | 2478 | \\"\\"\\" 2479 | Bounding box overlaps or is below the specified geometry's bounding box. 2480 | \\"\\"\\" 2481 | bboxOverlapsOrBelow: GeoJSON 2482 | 2483 | \\"\\"\\" 2484 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 2485 | \\"\\"\\" 2486 | bboxOverlapsOrLeftOf: GeoJSON 2487 | 2488 | \\"\\"\\" 2489 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 2490 | \\"\\"\\" 2491 | bboxOverlapsOrRightOf: GeoJSON 2492 | 2493 | \\"\\"\\" 2494 | Bounding box is strictly to the right of the specified geometry's bounding box. 2495 | \\"\\"\\" 2496 | bboxRightOf: GeoJSON 2497 | 2498 | \\"\\"\\" 2499 | No points of the specified geometry lie in the exterior, and at least one 2500 | point of the interior of the specified geometry lies in the interior. 2501 | \\"\\"\\" 2502 | contains: GeoJSON 2503 | 2504 | \\"\\"\\" 2505 | The specified geometry intersects the interior but not the boundary (or exterior). 2506 | \\"\\"\\" 2507 | containsProperly: GeoJSON 2508 | 2509 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 2510 | coveredBy: GeoJSON 2511 | 2512 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 2513 | covers: GeoJSON 2514 | 2515 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 2516 | crosses: GeoJSON 2517 | 2518 | \\"\\"\\"They do not share any space together.\\"\\"\\" 2519 | disjoint: GeoJSON 2520 | 2521 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 2522 | equals: GeoJSON 2523 | 2524 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 2525 | exactlyEquals: GeoJSON 2526 | 2527 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 2528 | intersects: GeoJSON 2529 | 2530 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 2531 | intersects3D: GeoJSON 2532 | 2533 | \\"\\"\\" 2534 | They represent the same geometry and points are in the same directional order. 2535 | \\"\\"\\" 2536 | orderingEquals: GeoJSON 2537 | 2538 | \\"\\"\\" 2539 | They share space, are of the same dimension, but are not completely contained by each other. 2540 | \\"\\"\\" 2541 | overlaps: GeoJSON 2542 | 2543 | \\"\\"\\" 2544 | They have at least one point in common, but their interiors do not intersect. 2545 | \\"\\"\\" 2546 | touches: GeoJSON 2547 | 2548 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 2549 | within: GeoJSON 2550 | } 2551 | 2552 | type GeometryPolygonM implements GeometryInterface & GeometryGeometryM { 2553 | exterior: GeometryLineStringM 2554 | geojson: GeoJSON 2555 | interiors: [GeometryLineStringM] 2556 | srid: Int! 2557 | } 2558 | 2559 | \\"\\"\\" 2560 | A filter to be used against GeometryPolygonM fields. All fields are combined with a logical ‘and.’ 2561 | \\"\\"\\" 2562 | input GeometryPolygonMFilter { 2563 | \\"\\"\\"Bounding box is strictly above the specified geometry's bounding box.\\"\\"\\" 2564 | bboxAbove: GeoJSON 2565 | 2566 | \\"\\"\\"Bounding box is strictly below the specified geometry's bounding box.\\"\\"\\" 2567 | bboxBelow: GeoJSON 2568 | 2569 | \\"\\"\\"Bounding box contains the specified geometry's bounding box.\\"\\"\\" 2570 | bboxContains: GeoJSON 2571 | 2572 | \\"\\"\\"Bounding box is the same as the specified geometry's bounding box.\\"\\"\\" 2573 | bboxEquals: GeoJSON 2574 | 2575 | \\"\\"\\"2D bounding box intersects the specified geometry's 2D bounding box.\\"\\"\\" 2576 | bboxIntersects2D: GeoJSON 2577 | 2578 | \\"\\"\\"n-D bounding box intersects the specified geometry's n-D bounding box.\\"\\"\\" 2579 | bboxIntersectsND: GeoJSON 2580 | 2581 | \\"\\"\\" 2582 | Bounding box is strictly to the left of the specified geometry's bounding box. 2583 | \\"\\"\\" 2584 | bboxLeftOf: GeoJSON 2585 | 2586 | \\"\\"\\" 2587 | Bounding box overlaps or is above the specified geometry's bounding box. 2588 | \\"\\"\\" 2589 | bboxOverlapsOrAbove: GeoJSON 2590 | 2591 | \\"\\"\\" 2592 | Bounding box overlaps or is below the specified geometry's bounding box. 2593 | \\"\\"\\" 2594 | bboxOverlapsOrBelow: GeoJSON 2595 | 2596 | \\"\\"\\" 2597 | Bounding box overlaps or is to the left of the specified geometry's bounding box. 2598 | \\"\\"\\" 2599 | bboxOverlapsOrLeftOf: GeoJSON 2600 | 2601 | \\"\\"\\" 2602 | Bounding box overlaps or is to the right of the specified geometry's bounding box. 2603 | \\"\\"\\" 2604 | bboxOverlapsOrRightOf: GeoJSON 2605 | 2606 | \\"\\"\\" 2607 | Bounding box is strictly to the right of the specified geometry's bounding box. 2608 | \\"\\"\\" 2609 | bboxRightOf: GeoJSON 2610 | 2611 | \\"\\"\\" 2612 | No points of the specified geometry lie in the exterior, and at least one 2613 | point of the interior of the specified geometry lies in the interior. 2614 | \\"\\"\\" 2615 | contains: GeoJSON 2616 | 2617 | \\"\\"\\" 2618 | The specified geometry intersects the interior but not the boundary (or exterior). 2619 | \\"\\"\\" 2620 | containsProperly: GeoJSON 2621 | 2622 | \\"\\"\\"No point is outside the specified geometry.\\"\\"\\" 2623 | coveredBy: GeoJSON 2624 | 2625 | \\"\\"\\"No point in the specified geometry is outside.\\"\\"\\" 2626 | covers: GeoJSON 2627 | 2628 | \\"\\"\\"They have some, but not all, interior points in common.\\"\\"\\" 2629 | crosses: GeoJSON 2630 | 2631 | \\"\\"\\"They do not share any space together.\\"\\"\\" 2632 | disjoint: GeoJSON 2633 | 2634 | \\"\\"\\"They represent the same geometry. Directionality is ignored.\\"\\"\\" 2635 | equals: GeoJSON 2636 | 2637 | \\"\\"\\"Coordinates and coordinate order are the same as specified geometry.\\"\\"\\" 2638 | exactlyEquals: GeoJSON 2639 | 2640 | \\"\\"\\"They share any portion of space in 2D.\\"\\"\\" 2641 | intersects: GeoJSON 2642 | 2643 | \\"\\"\\"They share any portion of space in 3D.\\"\\"\\" 2644 | intersects3D: GeoJSON 2645 | 2646 | \\"\\"\\" 2647 | They represent the same geometry and points are in the same directional order. 2648 | \\"\\"\\" 2649 | orderingEquals: GeoJSON 2650 | 2651 | \\"\\"\\" 2652 | They share space, are of the same dimension, but are not completely contained by each other. 2653 | \\"\\"\\" 2654 | overlaps: GeoJSON 2655 | 2656 | \\"\\"\\" 2657 | They have at least one point in common, but their interiors do not intersect. 2658 | \\"\\"\\" 2659 | touches: GeoJSON 2660 | 2661 | \\"\\"\\"Completely inside the specified geometry.\\"\\"\\" 2662 | within: GeoJSON 2663 | } 2664 | 2665 | type GeometryPolygonZ implements GeometryInterface & GeometryGeometryZ { 2666 | exterior: GeometryLineStringZ 2667 | geojson: GeoJSON 2668 | interiors: [GeometryLineStringZ] 2669 | srid: Int! 2670 | } 2671 | 2672 | type GeometryPolygonZM implements GeometryInterface & GeometryGeometryZM { 2673 | exterior: GeometryLineStringZM 2674 | geojson: GeoJSON 2675 | interiors: [GeometryLineStringZM] 2676 | srid: Int! 2677 | } 2678 | 2679 | type GisDebug implements Node { 2680 | geog: GeographyInterface 2681 | geogGeometry: GeographyGeometry 2682 | geogGeometrycollection: GeographyGeometryCollection 2683 | geogGeometrycollectionm: GeographyGeometryCollectionM 2684 | geogGeometrym: GeographyGeometryM 2685 | geogLinestr: GeographyLineString 2686 | geogLinestrm: GeographyLineStringM 2687 | geogMultilinestr: GeographyMultiLineString 2688 | geogMultilinestrm: GeographyMultiLineStringM 2689 | geogMultipoint: GeographyMultiPoint 2690 | geogMultipointm: GeographyMultiPointM 2691 | geogMultipoly: GeographyMultiPolygon 2692 | geogMultipolym: GeographyMultiPolygonM 2693 | geogPoint: GeographyPoint 2694 | geogPointm: GeographyPointM 2695 | geogPoly: GeographyPolygon 2696 | geogPolym: GeographyPolygonM 2697 | geom: GeometryInterface 2698 | geomGeometry: GeometryGeometry 2699 | geomGeometrycollection: GeometryGeometryCollection 2700 | geomGeometrycollectionm: GeometryGeometryCollectionM 2701 | geomGeometrym: GeometryGeometryM 2702 | geomLinestr: GeometryLineString 2703 | geomLinestrm: GeometryLineStringM 2704 | geomMultilinestr: GeometryMultiLineString 2705 | geomMultilinestrm: GeometryMultiLineStringM 2706 | geomMultipoint: GeometryMultiPoint 2707 | geomMultipointm: GeometryMultiPointM 2708 | geomMultipoly: GeometryMultiPolygon 2709 | geomMultipolym: GeometryMultiPolygonM 2710 | geomPoint: GeometryPoint 2711 | geomPointm: GeometryPointM 2712 | geomPoly: GeometryPolygon 2713 | geomPolym: GeometryPolygonM 2714 | id: Int! 2715 | 2716 | \\"\\"\\" 2717 | A globally unique identifier. Can be used in various places throughout the system to identify this single value. 2718 | \\"\\"\\" 2719 | nodeId: ID! 2720 | } 2721 | 2722 | \\"\\"\\" 2723 | A condition to be used against \`GisDebug\` object types. All fields are tested 2724 | for equality and combined with a logical ‘and.’ 2725 | \\"\\"\\" 2726 | input GisDebugCondition { 2727 | \\"\\"\\"Checks for equality with the object’s \`geog\` field.\\"\\"\\" 2728 | geog: GeoJSON 2729 | 2730 | \\"\\"\\"Checks for equality with the object’s \`geogGeometry\` field.\\"\\"\\" 2731 | geogGeometry: GeoJSON 2732 | 2733 | \\"\\"\\"Checks for equality with the object’s \`geogGeometrycollection\` field.\\"\\"\\" 2734 | geogGeometrycollection: GeoJSON 2735 | 2736 | \\"\\"\\"Checks for equality with the object’s \`geogGeometrycollectionm\` field.\\"\\"\\" 2737 | geogGeometrycollectionm: GeoJSON 2738 | 2739 | \\"\\"\\"Checks for equality with the object’s \`geogGeometrym\` field.\\"\\"\\" 2740 | geogGeometrym: GeoJSON 2741 | 2742 | \\"\\"\\"Checks for equality with the object’s \`geogLinestr\` field.\\"\\"\\" 2743 | geogLinestr: GeoJSON 2744 | 2745 | \\"\\"\\"Checks for equality with the object’s \`geogLinestrm\` field.\\"\\"\\" 2746 | geogLinestrm: GeoJSON 2747 | 2748 | \\"\\"\\"Checks for equality with the object’s \`geogMultilinestr\` field.\\"\\"\\" 2749 | geogMultilinestr: GeoJSON 2750 | 2751 | \\"\\"\\"Checks for equality with the object’s \`geogMultilinestrm\` field.\\"\\"\\" 2752 | geogMultilinestrm: GeoJSON 2753 | 2754 | \\"\\"\\"Checks for equality with the object’s \`geogMultipoint\` field.\\"\\"\\" 2755 | geogMultipoint: GeoJSON 2756 | 2757 | \\"\\"\\"Checks for equality with the object’s \`geogMultipointm\` field.\\"\\"\\" 2758 | geogMultipointm: GeoJSON 2759 | 2760 | \\"\\"\\"Checks for equality with the object’s \`geogMultipoly\` field.\\"\\"\\" 2761 | geogMultipoly: GeoJSON 2762 | 2763 | \\"\\"\\"Checks for equality with the object’s \`geogMultipolym\` field.\\"\\"\\" 2764 | geogMultipolym: GeoJSON 2765 | 2766 | \\"\\"\\"Checks for equality with the object’s \`geogPoint\` field.\\"\\"\\" 2767 | geogPoint: GeoJSON 2768 | 2769 | \\"\\"\\"Checks for equality with the object’s \`geogPointm\` field.\\"\\"\\" 2770 | geogPointm: GeoJSON 2771 | 2772 | \\"\\"\\"Checks for equality with the object’s \`geogPoly\` field.\\"\\"\\" 2773 | geogPoly: GeoJSON 2774 | 2775 | \\"\\"\\"Checks for equality with the object’s \`geogPolym\` field.\\"\\"\\" 2776 | geogPolym: GeoJSON 2777 | 2778 | \\"\\"\\"Checks for equality with the object’s \`geom\` field.\\"\\"\\" 2779 | geom: GeoJSON 2780 | 2781 | \\"\\"\\"Checks for equality with the object’s \`geomGeometry\` field.\\"\\"\\" 2782 | geomGeometry: GeoJSON 2783 | 2784 | \\"\\"\\"Checks for equality with the object’s \`geomGeometrycollection\` field.\\"\\"\\" 2785 | geomGeometrycollection: GeoJSON 2786 | 2787 | \\"\\"\\"Checks for equality with the object’s \`geomGeometrycollectionm\` field.\\"\\"\\" 2788 | geomGeometrycollectionm: GeoJSON 2789 | 2790 | \\"\\"\\"Checks for equality with the object’s \`geomGeometrym\` field.\\"\\"\\" 2791 | geomGeometrym: GeoJSON 2792 | 2793 | \\"\\"\\"Checks for equality with the object’s \`geomLinestr\` field.\\"\\"\\" 2794 | geomLinestr: GeoJSON 2795 | 2796 | \\"\\"\\"Checks for equality with the object’s \`geomLinestrm\` field.\\"\\"\\" 2797 | geomLinestrm: GeoJSON 2798 | 2799 | \\"\\"\\"Checks for equality with the object’s \`geomMultilinestr\` field.\\"\\"\\" 2800 | geomMultilinestr: GeoJSON 2801 | 2802 | \\"\\"\\"Checks for equality with the object’s \`geomMultilinestrm\` field.\\"\\"\\" 2803 | geomMultilinestrm: GeoJSON 2804 | 2805 | \\"\\"\\"Checks for equality with the object’s \`geomMultipoint\` field.\\"\\"\\" 2806 | geomMultipoint: GeoJSON 2807 | 2808 | \\"\\"\\"Checks for equality with the object’s \`geomMultipointm\` field.\\"\\"\\" 2809 | geomMultipointm: GeoJSON 2810 | 2811 | \\"\\"\\"Checks for equality with the object’s \`geomMultipoly\` field.\\"\\"\\" 2812 | geomMultipoly: GeoJSON 2813 | 2814 | \\"\\"\\"Checks for equality with the object’s \`geomMultipolym\` field.\\"\\"\\" 2815 | geomMultipolym: GeoJSON 2816 | 2817 | \\"\\"\\"Checks for equality with the object’s \`geomPoint\` field.\\"\\"\\" 2818 | geomPoint: GeoJSON 2819 | 2820 | \\"\\"\\"Checks for equality with the object’s \`geomPointm\` field.\\"\\"\\" 2821 | geomPointm: GeoJSON 2822 | 2823 | \\"\\"\\"Checks for equality with the object’s \`geomPoly\` field.\\"\\"\\" 2824 | geomPoly: GeoJSON 2825 | 2826 | \\"\\"\\"Checks for equality with the object’s \`geomPolym\` field.\\"\\"\\" 2827 | geomPolym: GeoJSON 2828 | 2829 | \\"\\"\\"Checks for equality with the object’s \`id\` field.\\"\\"\\" 2830 | id: Int 2831 | } 2832 | 2833 | \\"\\"\\" 2834 | A filter to be used against \`GisDebug\` object types. All fields are combined with a logical ‘and.’ 2835 | \\"\\"\\" 2836 | input GisDebugFilter { 2837 | \\"\\"\\"Checks for all expressions in this list.\\"\\"\\" 2838 | and: [GisDebugFilter!] 2839 | 2840 | \\"\\"\\"Filter by the object’s \`geog\` field.\\"\\"\\" 2841 | geog: GeographyInterfaceFilter 2842 | 2843 | \\"\\"\\"Filter by the object’s \`geogGeometry\` field.\\"\\"\\" 2844 | geogGeometry: GeographyGeometryFilter 2845 | 2846 | \\"\\"\\"Filter by the object’s \`geogGeometrycollection\` field.\\"\\"\\" 2847 | geogGeometrycollection: GeographyGeometryCollectionFilter 2848 | 2849 | \\"\\"\\"Filter by the object’s \`geogGeometrycollectionm\` field.\\"\\"\\" 2850 | geogGeometrycollectionm: GeographyGeometryCollectionMFilter 2851 | 2852 | \\"\\"\\"Filter by the object’s \`geogGeometrym\` field.\\"\\"\\" 2853 | geogGeometrym: GeographyGeometryMFilter 2854 | 2855 | \\"\\"\\"Filter by the object’s \`geogLinestr\` field.\\"\\"\\" 2856 | geogLinestr: GeographyLineStringFilter 2857 | 2858 | \\"\\"\\"Filter by the object’s \`geogLinestrm\` field.\\"\\"\\" 2859 | geogLinestrm: GeographyLineStringMFilter 2860 | 2861 | \\"\\"\\"Filter by the object’s \`geogMultilinestr\` field.\\"\\"\\" 2862 | geogMultilinestr: GeographyMultiLineStringFilter 2863 | 2864 | \\"\\"\\"Filter by the object’s \`geogMultilinestrm\` field.\\"\\"\\" 2865 | geogMultilinestrm: GeographyMultiLineStringMFilter 2866 | 2867 | \\"\\"\\"Filter by the object’s \`geogMultipoint\` field.\\"\\"\\" 2868 | geogMultipoint: GeographyMultiPointFilter 2869 | 2870 | \\"\\"\\"Filter by the object’s \`geogMultipointm\` field.\\"\\"\\" 2871 | geogMultipointm: GeographyMultiPointMFilter 2872 | 2873 | \\"\\"\\"Filter by the object’s \`geogMultipoly\` field.\\"\\"\\" 2874 | geogMultipoly: GeographyMultiPolygonFilter 2875 | 2876 | \\"\\"\\"Filter by the object’s \`geogMultipolym\` field.\\"\\"\\" 2877 | geogMultipolym: GeographyMultiPolygonMFilter 2878 | 2879 | \\"\\"\\"Filter by the object’s \`geogPoint\` field.\\"\\"\\" 2880 | geogPoint: GeographyPointFilter 2881 | 2882 | \\"\\"\\"Filter by the object’s \`geogPointm\` field.\\"\\"\\" 2883 | geogPointm: GeographyPointMFilter 2884 | 2885 | \\"\\"\\"Filter by the object’s \`geogPoly\` field.\\"\\"\\" 2886 | geogPoly: GeographyPolygonFilter 2887 | 2888 | \\"\\"\\"Filter by the object’s \`geogPolym\` field.\\"\\"\\" 2889 | geogPolym: GeographyPolygonMFilter 2890 | 2891 | \\"\\"\\"Filter by the object’s \`geom\` field.\\"\\"\\" 2892 | geom: GeometryInterfaceFilter 2893 | 2894 | \\"\\"\\"Filter by the object’s \`geomGeometry\` field.\\"\\"\\" 2895 | geomGeometry: GeometryGeometryFilter 2896 | 2897 | \\"\\"\\"Filter by the object’s \`geomGeometrycollection\` field.\\"\\"\\" 2898 | geomGeometrycollection: GeometryGeometryCollectionFilter 2899 | 2900 | \\"\\"\\"Filter by the object’s \`geomGeometrycollectionm\` field.\\"\\"\\" 2901 | geomGeometrycollectionm: GeometryGeometryCollectionMFilter 2902 | 2903 | \\"\\"\\"Filter by the object’s \`geomGeometrym\` field.\\"\\"\\" 2904 | geomGeometrym: GeometryGeometryMFilter 2905 | 2906 | \\"\\"\\"Filter by the object’s \`geomLinestr\` field.\\"\\"\\" 2907 | geomLinestr: GeometryLineStringFilter 2908 | 2909 | \\"\\"\\"Filter by the object’s \`geomLinestrm\` field.\\"\\"\\" 2910 | geomLinestrm: GeometryLineStringMFilter 2911 | 2912 | \\"\\"\\"Filter by the object’s \`geomMultilinestr\` field.\\"\\"\\" 2913 | geomMultilinestr: GeometryMultiLineStringFilter 2914 | 2915 | \\"\\"\\"Filter by the object’s \`geomMultilinestrm\` field.\\"\\"\\" 2916 | geomMultilinestrm: GeometryMultiLineStringMFilter 2917 | 2918 | \\"\\"\\"Filter by the object’s \`geomMultipoint\` field.\\"\\"\\" 2919 | geomMultipoint: GeometryMultiPointFilter 2920 | 2921 | \\"\\"\\"Filter by the object’s \`geomMultipointm\` field.\\"\\"\\" 2922 | geomMultipointm: GeometryMultiPointMFilter 2923 | 2924 | \\"\\"\\"Filter by the object’s \`geomMultipoly\` field.\\"\\"\\" 2925 | geomMultipoly: GeometryMultiPolygonFilter 2926 | 2927 | \\"\\"\\"Filter by the object’s \`geomMultipolym\` field.\\"\\"\\" 2928 | geomMultipolym: GeometryMultiPolygonMFilter 2929 | 2930 | \\"\\"\\"Filter by the object’s \`geomPoint\` field.\\"\\"\\" 2931 | geomPoint: GeometryPointFilter 2932 | 2933 | \\"\\"\\"Filter by the object’s \`geomPointm\` field.\\"\\"\\" 2934 | geomPointm: GeometryPointMFilter 2935 | 2936 | \\"\\"\\"Filter by the object’s \`geomPoly\` field.\\"\\"\\" 2937 | geomPoly: GeometryPolygonFilter 2938 | 2939 | \\"\\"\\"Filter by the object’s \`geomPolym\` field.\\"\\"\\" 2940 | geomPolym: GeometryPolygonMFilter 2941 | 2942 | \\"\\"\\"Filter by the object’s \`id\` field.\\"\\"\\" 2943 | id: IntFilter 2944 | 2945 | \\"\\"\\"Negates the expression.\\"\\"\\" 2946 | not: GisDebugFilter 2947 | 2948 | \\"\\"\\"Checks for any expressions in this list.\\"\\"\\" 2949 | or: [GisDebugFilter!] 2950 | } 2951 | 2952 | \\"\\"\\"An input for mutations affecting \`GisDebug\`\\"\\"\\" 2953 | input GisDebugInput { 2954 | geog: GeoJSON 2955 | geogGeometry: GeoJSON 2956 | geogGeometrycollection: GeoJSON 2957 | geogGeometrycollectionm: GeoJSON 2958 | geogGeometrym: GeoJSON 2959 | geogLinestr: GeoJSON 2960 | geogLinestrm: GeoJSON 2961 | geogMultilinestr: GeoJSON 2962 | geogMultilinestrm: GeoJSON 2963 | geogMultipoint: GeoJSON 2964 | geogMultipointm: GeoJSON 2965 | geogMultipoly: GeoJSON 2966 | geogMultipolym: GeoJSON 2967 | geogPoint: GeoJSON 2968 | geogPointm: GeoJSON 2969 | geogPoly: GeoJSON 2970 | geogPolym: GeoJSON 2971 | geom: GeoJSON 2972 | geomGeometry: GeoJSON 2973 | geomGeometrycollection: GeoJSON 2974 | geomGeometrycollectionm: GeoJSON 2975 | geomGeometrym: GeoJSON 2976 | geomLinestr: GeoJSON 2977 | geomLinestrm: GeoJSON 2978 | geomMultilinestr: GeoJSON 2979 | geomMultilinestrm: GeoJSON 2980 | geomMultipoint: GeoJSON 2981 | geomMultipointm: GeoJSON 2982 | geomMultipoly: GeoJSON 2983 | geomMultipolym: GeoJSON 2984 | geomPoint: GeoJSON 2985 | geomPointm: GeoJSON 2986 | geomPoly: GeoJSON 2987 | geomPolym: GeoJSON 2988 | id: Int 2989 | } 2990 | 2991 | \\"\\"\\" 2992 | Represents an update to a \`GisDebug\`. Fields that are set will be updated. 2993 | \\"\\"\\" 2994 | input GisDebugPatch { 2995 | geog: GeoJSON 2996 | geogGeometry: GeoJSON 2997 | geogGeometrycollection: GeoJSON 2998 | geogGeometrycollectionm: GeoJSON 2999 | geogGeometrym: GeoJSON 3000 | geogLinestr: GeoJSON 3001 | geogLinestrm: GeoJSON 3002 | geogMultilinestr: GeoJSON 3003 | geogMultilinestrm: GeoJSON 3004 | geogMultipoint: GeoJSON 3005 | geogMultipointm: GeoJSON 3006 | geogMultipoly: GeoJSON 3007 | geogMultipolym: GeoJSON 3008 | geogPoint: GeoJSON 3009 | geogPointm: GeoJSON 3010 | geogPoly: GeoJSON 3011 | geogPolym: GeoJSON 3012 | geom: GeoJSON 3013 | geomGeometry: GeoJSON 3014 | geomGeometrycollection: GeoJSON 3015 | geomGeometrycollectionm: GeoJSON 3016 | geomGeometrym: GeoJSON 3017 | geomLinestr: GeoJSON 3018 | geomLinestrm: GeoJSON 3019 | geomMultilinestr: GeoJSON 3020 | geomMultilinestrm: GeoJSON 3021 | geomMultipoint: GeoJSON 3022 | geomMultipointm: GeoJSON 3023 | geomMultipoly: GeoJSON 3024 | geomMultipolym: GeoJSON 3025 | geomPoint: GeoJSON 3026 | geomPointm: GeoJSON 3027 | geomPoly: GeoJSON 3028 | geomPolym: GeoJSON 3029 | id: Int 3030 | } 3031 | 3032 | \\"\\"\\"A connection to a list of \`GisDebug\` values.\\"\\"\\" 3033 | type GisDebugsConnection { 3034 | \\"\\"\\" 3035 | A list of edges which contains the \`GisDebug\` and cursor to aid in pagination. 3036 | \\"\\"\\" 3037 | edges: [GisDebugsEdge!]! 3038 | 3039 | \\"\\"\\"A list of \`GisDebug\` objects.\\"\\"\\" 3040 | nodes: [GisDebug]! 3041 | 3042 | \\"\\"\\"Information to aid in pagination.\\"\\"\\" 3043 | pageInfo: PageInfo! 3044 | 3045 | \\"\\"\\"The count of *all* \`GisDebug\` you could get from the connection.\\"\\"\\" 3046 | totalCount: Int! 3047 | } 3048 | 3049 | \\"\\"\\"A \`GisDebug\` edge in the connection.\\"\\"\\" 3050 | type GisDebugsEdge { 3051 | \\"\\"\\"A cursor for use in pagination.\\"\\"\\" 3052 | cursor: Cursor 3053 | 3054 | \\"\\"\\"The \`GisDebug\` at the end of the edge.\\"\\"\\" 3055 | node: GisDebug 3056 | } 3057 | 3058 | \\"\\"\\"Methods to use when ordering \`GisDebug\`.\\"\\"\\" 3059 | enum GisDebugsOrderBy { 3060 | GEOG_ASC 3061 | GEOG_DESC 3062 | GEOG_GEOMETRY_ASC 3063 | GEOG_GEOMETRY_DESC 3064 | GEOG_GEOMETRYCOLLECTION_ASC 3065 | GEOG_GEOMETRYCOLLECTION_DESC 3066 | GEOG_GEOMETRYCOLLECTIONM_ASC 3067 | GEOG_GEOMETRYCOLLECTIONM_DESC 3068 | GEOG_GEOMETRYM_ASC 3069 | GEOG_GEOMETRYM_DESC 3070 | GEOG_LINESTR_ASC 3071 | GEOG_LINESTR_DESC 3072 | GEOG_LINESTRM_ASC 3073 | GEOG_LINESTRM_DESC 3074 | GEOG_MULTILINESTR_ASC 3075 | GEOG_MULTILINESTR_DESC 3076 | GEOG_MULTILINESTRM_ASC 3077 | GEOG_MULTILINESTRM_DESC 3078 | GEOG_MULTIPOINT_ASC 3079 | GEOG_MULTIPOINT_DESC 3080 | GEOG_MULTIPOINTM_ASC 3081 | GEOG_MULTIPOINTM_DESC 3082 | GEOG_MULTIPOLY_ASC 3083 | GEOG_MULTIPOLY_DESC 3084 | GEOG_MULTIPOLYM_ASC 3085 | GEOG_MULTIPOLYM_DESC 3086 | GEOG_POINT_ASC 3087 | GEOG_POINT_DESC 3088 | GEOG_POINTM_ASC 3089 | GEOG_POINTM_DESC 3090 | GEOG_POLY_ASC 3091 | GEOG_POLY_DESC 3092 | GEOG_POLYM_ASC 3093 | GEOG_POLYM_DESC 3094 | GEOM_ASC 3095 | GEOM_DESC 3096 | GEOM_GEOMETRY_ASC 3097 | GEOM_GEOMETRY_DESC 3098 | GEOM_GEOMETRYCOLLECTION_ASC 3099 | GEOM_GEOMETRYCOLLECTION_DESC 3100 | GEOM_GEOMETRYCOLLECTIONM_ASC 3101 | GEOM_GEOMETRYCOLLECTIONM_DESC 3102 | GEOM_GEOMETRYM_ASC 3103 | GEOM_GEOMETRYM_DESC 3104 | GEOM_LINESTR_ASC 3105 | GEOM_LINESTR_DESC 3106 | GEOM_LINESTRM_ASC 3107 | GEOM_LINESTRM_DESC 3108 | GEOM_MULTILINESTR_ASC 3109 | GEOM_MULTILINESTR_DESC 3110 | GEOM_MULTILINESTRM_ASC 3111 | GEOM_MULTILINESTRM_DESC 3112 | GEOM_MULTIPOINT_ASC 3113 | GEOM_MULTIPOINT_DESC 3114 | GEOM_MULTIPOINTM_ASC 3115 | GEOM_MULTIPOINTM_DESC 3116 | GEOM_MULTIPOLY_ASC 3117 | GEOM_MULTIPOLY_DESC 3118 | GEOM_MULTIPOLYM_ASC 3119 | GEOM_MULTIPOLYM_DESC 3120 | GEOM_POINT_ASC 3121 | GEOM_POINT_DESC 3122 | GEOM_POINTM_ASC 3123 | GEOM_POINTM_DESC 3124 | GEOM_POLY_ASC 3125 | GEOM_POLY_DESC 3126 | GEOM_POLYM_ASC 3127 | GEOM_POLYM_DESC 3128 | ID_ASC 3129 | ID_DESC 3130 | NATURAL 3131 | PRIMARY_KEY_ASC 3132 | PRIMARY_KEY_DESC 3133 | } 3134 | 3135 | \\"\\"\\" 3136 | A filter to be used against Int fields. All fields are combined with a logical ‘and.’ 3137 | \\"\\"\\" 3138 | input IntFilter { 3139 | \\"\\"\\" 3140 | Not equal to the specified value, treating null like an ordinary value. 3141 | \\"\\"\\" 3142 | distinctFrom: Int 3143 | 3144 | \\"\\"\\"Equal to the specified value.\\"\\"\\" 3145 | equalTo: Int 3146 | 3147 | \\"\\"\\"Greater than the specified value.\\"\\"\\" 3148 | greaterThan: Int 3149 | 3150 | \\"\\"\\"Greater than or equal to the specified value.\\"\\"\\" 3151 | greaterThanOrEqualTo: Int 3152 | 3153 | \\"\\"\\"Included in the specified list.\\"\\"\\" 3154 | in: [Int!] 3155 | 3156 | \\"\\"\\" 3157 | Is null (if \`true\` is specified) or is not null (if \`false\` is specified). 3158 | \\"\\"\\" 3159 | isNull: Boolean 3160 | 3161 | \\"\\"\\"Less than the specified value.\\"\\"\\" 3162 | lessThan: Int 3163 | 3164 | \\"\\"\\"Less than or equal to the specified value.\\"\\"\\" 3165 | lessThanOrEqualTo: Int 3166 | 3167 | \\"\\"\\"Equal to the specified value, treating null like an ordinary value.\\"\\"\\" 3168 | notDistinctFrom: Int 3169 | 3170 | \\"\\"\\"Not equal to the specified value.\\"\\"\\" 3171 | notEqualTo: Int 3172 | 3173 | \\"\\"\\"Not included in the specified list.\\"\\"\\" 3174 | notIn: [Int!] 3175 | } 3176 | 3177 | \\"\\"\\" 3178 | The root mutation type which contains root level fields which mutate data. 3179 | \\"\\"\\" 3180 | type Mutation { 3181 | \\"\\"\\"Creates a single \`GisDebug\`.\\"\\"\\" 3182 | createGisDebug( 3183 | \\"\\"\\" 3184 | The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. 3185 | \\"\\"\\" 3186 | input: CreateGisDebugInput! 3187 | ): CreateGisDebugPayload 3188 | 3189 | \\"\\"\\"Deletes a single \`GisDebug\` using its globally unique id.\\"\\"\\" 3190 | deleteGisDebug( 3191 | \\"\\"\\" 3192 | The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. 3193 | \\"\\"\\" 3194 | input: DeleteGisDebugInput! 3195 | ): DeleteGisDebugPayload 3196 | 3197 | \\"\\"\\"Deletes a single \`GisDebug\` using a unique key.\\"\\"\\" 3198 | deleteGisDebugById( 3199 | \\"\\"\\" 3200 | The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. 3201 | \\"\\"\\" 3202 | input: DeleteGisDebugByIdInput! 3203 | ): DeleteGisDebugPayload 3204 | 3205 | \\"\\"\\"Updates a single \`GisDebug\` using its globally unique id and a patch.\\"\\"\\" 3206 | updateGisDebug( 3207 | \\"\\"\\" 3208 | The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. 3209 | \\"\\"\\" 3210 | input: UpdateGisDebugInput! 3211 | ): UpdateGisDebugPayload 3212 | 3213 | \\"\\"\\"Updates a single \`GisDebug\` using a unique key and a patch.\\"\\"\\" 3214 | updateGisDebugById( 3215 | \\"\\"\\" 3216 | The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. 3217 | \\"\\"\\" 3218 | input: UpdateGisDebugByIdInput! 3219 | ): UpdateGisDebugPayload 3220 | } 3221 | 3222 | \\"\\"\\"An object with a globally unique \`ID\`.\\"\\"\\" 3223 | interface Node { 3224 | \\"\\"\\" 3225 | A globally unique identifier. Can be used in various places throughout the system to identify this single value. 3226 | \\"\\"\\" 3227 | nodeId: ID! 3228 | } 3229 | 3230 | \\"\\"\\"Information about pagination in a connection.\\"\\"\\" 3231 | type PageInfo { 3232 | \\"\\"\\"When paginating forwards, the cursor to continue.\\"\\"\\" 3233 | endCursor: Cursor 3234 | 3235 | \\"\\"\\"When paginating forwards, are there more items?\\"\\"\\" 3236 | hasNextPage: Boolean! 3237 | 3238 | \\"\\"\\"When paginating backwards, are there more items?\\"\\"\\" 3239 | hasPreviousPage: Boolean! 3240 | 3241 | \\"\\"\\"When paginating backwards, the cursor to continue.\\"\\"\\" 3242 | startCursor: Cursor 3243 | } 3244 | 3245 | \\"\\"\\"The root query type which gives access points into the data universe.\\"\\"\\" 3246 | type Query implements Node { 3247 | \\"\\"\\"Reads and enables pagination through a set of \`GisDebug\`.\\"\\"\\" 3248 | allGisDebugs( 3249 | \\"\\"\\"Read all values in the set after (below) this cursor.\\"\\"\\" 3250 | after: Cursor 3251 | 3252 | \\"\\"\\"Read all values in the set before (above) this cursor.\\"\\"\\" 3253 | before: Cursor 3254 | 3255 | \\"\\"\\" 3256 | A condition to be used in determining which values should be returned by the collection. 3257 | \\"\\"\\" 3258 | condition: GisDebugCondition 3259 | 3260 | \\"\\"\\" 3261 | A filter to be used in determining which values should be returned by the collection. 3262 | \\"\\"\\" 3263 | filter: GisDebugFilter 3264 | 3265 | \\"\\"\\"Only read the first \`n\` values of the set.\\"\\"\\" 3266 | first: Int 3267 | 3268 | \\"\\"\\"Only read the last \`n\` values of the set.\\"\\"\\" 3269 | last: Int 3270 | 3271 | \\"\\"\\" 3272 | Skip the first \`n\` values from our \`after\` cursor, an alternative to cursor 3273 | based pagination. May not be used with \`last\`. 3274 | \\"\\"\\" 3275 | offset: Int 3276 | 3277 | \\"\\"\\"The method to use when ordering \`GisDebug\`.\\"\\"\\" 3278 | orderBy: [GisDebugsOrderBy!] = [PRIMARY_KEY_ASC] 3279 | ): GisDebugsConnection 3280 | 3281 | \\"\\"\\"Reads a single \`GisDebug\` using its globally unique \`ID\`.\\"\\"\\" 3282 | gisDebug( 3283 | \\"\\"\\"The globally unique \`ID\` to be used in selecting a single \`GisDebug\`.\\"\\"\\" 3284 | nodeId: ID! 3285 | ): GisDebug 3286 | gisDebugById(id: Int!): GisDebug 3287 | 3288 | \\"\\"\\"Fetches an object given its globally unique \`ID\`.\\"\\"\\" 3289 | node( 3290 | \\"\\"\\"The globally unique \`ID\`.\\"\\"\\" 3291 | nodeId: ID! 3292 | ): Node 3293 | 3294 | \\"\\"\\" 3295 | The root query type must be a \`Node\` to work well with Relay 1 mutations. This just resolves to \`query\`. 3296 | \\"\\"\\" 3297 | nodeId: ID! 3298 | 3299 | \\"\\"\\" 3300 | Exposes the root query type nested one level down. This is helpful for Relay 1 3301 | which can only query top level fields if they are in a particular form. 3302 | \\"\\"\\" 3303 | query: Query! 3304 | } 3305 | 3306 | \\"\\"\\"All input for the \`updateGisDebugById\` mutation.\\"\\"\\" 3307 | input UpdateGisDebugByIdInput { 3308 | \\"\\"\\" 3309 | An arbitrary string value with no semantic meaning. Will be included in the 3310 | payload verbatim. May be used to track mutations by the client. 3311 | \\"\\"\\" 3312 | clientMutationId: String 3313 | 3314 | \\"\\"\\" 3315 | An object where the defined keys will be set on the \`GisDebug\` being updated. 3316 | \\"\\"\\" 3317 | gisDebugPatch: GisDebugPatch! 3318 | id: Int! 3319 | } 3320 | 3321 | \\"\\"\\"All input for the \`updateGisDebug\` mutation.\\"\\"\\" 3322 | input UpdateGisDebugInput { 3323 | \\"\\"\\" 3324 | An arbitrary string value with no semantic meaning. Will be included in the 3325 | payload verbatim. May be used to track mutations by the client. 3326 | \\"\\"\\" 3327 | clientMutationId: String 3328 | 3329 | \\"\\"\\" 3330 | An object where the defined keys will be set on the \`GisDebug\` being updated. 3331 | \\"\\"\\" 3332 | gisDebugPatch: GisDebugPatch! 3333 | 3334 | \\"\\"\\" 3335 | The globally unique \`ID\` which will identify a single \`GisDebug\` to be updated. 3336 | \\"\\"\\" 3337 | nodeId: ID! 3338 | } 3339 | 3340 | \\"\\"\\"The output of our update \`GisDebug\` mutation.\\"\\"\\" 3341 | type UpdateGisDebugPayload { 3342 | \\"\\"\\" 3343 | The exact same \`clientMutationId\` that was provided in the mutation input, 3344 | unchanged and unused. May be used by a client to track mutations. 3345 | \\"\\"\\" 3346 | clientMutationId: String 3347 | 3348 | \\"\\"\\"The \`GisDebug\` that was updated by this mutation.\\"\\"\\" 3349 | gisDebug: GisDebug 3350 | 3351 | \\"\\"\\"An edge for our \`GisDebug\`. May be used by Relay 1.\\"\\"\\" 3352 | gisDebugEdge( 3353 | \\"\\"\\"The method to use when ordering \`GisDebug\`.\\"\\"\\" 3354 | orderBy: [GisDebugsOrderBy!] = [PRIMARY_KEY_ASC] 3355 | ): GisDebugsEdge 3356 | 3357 | \\"\\"\\" 3358 | Our root query field type. Allows us to run any query from our mutation payload. 3359 | \\"\\"\\" 3360 | query: Query 3361 | } 3362 | " 3363 | `; 3364 | -------------------------------------------------------------------------------- /__tests__/integration/schema/core.js: -------------------------------------------------------------------------------- 1 | const printSchemaOrdered = require("../../printSchemaOrdered"); 2 | const { withPgClient } = require("../../helpers"); 3 | const { createPostGraphileSchema } = require("postgraphile-core"); 4 | 5 | exports.test = (schemas, options, setup) => () => 6 | withPgClient(async client => { 7 | if (setup) { 8 | if (typeof setup === "function") { 9 | await setup(client); 10 | } else { 11 | await client.query(setup); 12 | } 13 | } 14 | const schema = await createPostGraphileSchema(client, schemas, options); 15 | expect(printSchemaOrdered(schema)).toMatchSnapshot(); 16 | }); 17 | -------------------------------------------------------------------------------- /__tests__/integration/schema/defaultOptions.test.js: -------------------------------------------------------------------------------- 1 | const core = require("./core"); 2 | const PgConnectionFilterPlugin = require("postgraphile-plugin-connection-filter"); 3 | const PostgisPlugin = require("@graphile/postgis").default; 4 | 5 | test( 6 | "prints a schema with the postgraphile-plugin-connection-filter-postgis plugin", 7 | core.test(["p"], { 8 | appendPlugins: [ 9 | PostgisPlugin, 10 | PgConnectionFilterPlugin, 11 | require("../../../index.js"), 12 | ], 13 | }) 14 | ); 15 | -------------------------------------------------------------------------------- /__tests__/p-data.sql: -------------------------------------------------------------------------------- 1 | insert into p.gis_debug ( 2 | geog, 3 | 4 | geog_point, 5 | geog_linestr, 6 | geog_poly, 7 | geog_multipoint, 8 | geog_multilinestr, 9 | geog_multipoly, 10 | geog_geometrycollection, 11 | 12 | geog_pointm, 13 | geog_linestrm, 14 | geog_polym, 15 | geog_multipointm, 16 | geog_multilinestrm, 17 | geog_multipolym, 18 | geog_geometrycollectionm, 19 | 20 | geom, 21 | 22 | geom_point, 23 | geom_linestr, 24 | geom_poly, 25 | geom_multipoint, 26 | geom_multilinestr, 27 | geom_multipoly, 28 | geom_geometrycollection, 29 | 30 | geom_pointm, 31 | geom_linestrm, 32 | geom_polym, 33 | geom_multipointm, 34 | geom_multilinestrm, 35 | geom_multipolym, 36 | geom_geometrycollectionm 37 | ) values ( 38 | ST_GeographyFromText('GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))'), 39 | 40 | ST_GeographyFromText('POINT (30 10)'), 41 | ST_GeographyFromText('LINESTRING (30 10, 10 30, 40 40)'), 42 | ST_GeographyFromText('POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))'), 43 | ST_GeographyFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)'), 44 | ST_GeographyFromText('MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))'), 45 | ST_GeographyFromText('MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))'), 46 | ST_GeographyFromText('GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))'), 47 | 48 | ST_GeographyFromText('POINT M (30 10 99)'), 49 | ST_GeographyFromText('LINESTRING M (30 10 99, 10 30 99, 40 40 99)'), 50 | ST_GeographyFromText('POLYGON M ((35 10 99, 45 45 99, 15 40 99, 10 20 99, 35 10 99), (20 30 99, 35 35 99, 30 20 99, 20 30 99))'), 51 | ST_GeographyFromText('MULTIPOINT M (10 40 99, 40 30 99, 20 20 99, 30 10 99)'), 52 | ST_GeographyFromText('MULTILINESTRING M ((10 10 99, 20 20 99, 10 40 99), (40 40 99, 30 30 99, 40 20 99, 30 10 99))'), 53 | ST_GeographyFromText('MULTIPOLYGON M (((40 40 99, 20 45 99, 45 30 99, 40 40 99)), ((20 35 99, 10 30 99, 10 10 99, 30 5 99, 45 20 99, 20 35 99), (30 20 99, 20 15 99, 20 25 99, 30 20 99)))'), 54 | ST_GeographyFromText('GEOMETRYCOLLECTION M (POINT M (4 6 99),LINESTRING M (4 6 99,7 10 99))'), 55 | 56 | ST_GeometryFromText('GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))'), 57 | 58 | ST_GeometryFromText('POINT (30 10)'), 59 | ST_GeometryFromText('LINESTRING (30 10, 10 30, 40 40)'), 60 | ST_GeometryFromText('POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))'), 61 | ST_GeometryFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)'), 62 | ST_GeometryFromText('MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))'), 63 | ST_GeometryFromText('MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))'), 64 | ST_GeometryFromText('GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))'), 65 | 66 | ST_GeometryFromText('POINT M (30 10 99)'), 67 | ST_GeometryFromText('LINESTRING M (30 10 99, 10 30 99, 40 40 99)'), 68 | ST_GeometryFromText('POLYGON M ((35 10 99, 45 45 99, 15 40 99, 10 20 99, 35 10 99), (20 30 99, 35 35 99, 30 20 99, 20 30 99))'), 69 | ST_GeometryFromText('MULTIPOINT M (10 40 99, 40 30 99, 20 20 99, 30 10 99)'), 70 | ST_GeometryFromText('MULTILINESTRING M ((10 10 99, 20 20 99, 10 40 99), (40 40 99, 30 30 99, 40 20 99, 30 10 99))'), 71 | ST_GeometryFromText('MULTIPOLYGON M (((40 40 99, 20 45 99, 45 30 99, 40 40 99)), ((20 35 99, 10 30 99, 10 10 99, 30 5 99, 45 20 99, 20 35 99), (30 20 99, 20 15 99, 20 25 99, 30 20 99)))'), 72 | ST_GeometryFromText('GEOMETRYCOLLECTION M (POINT M (4 6 99),LINESTRING M (4 6 99,7 10 99))') 73 | ); -------------------------------------------------------------------------------- /__tests__/p-schema.sql: -------------------------------------------------------------------------------- 1 | drop extension if exists postgis cascade; 2 | create extension if not exists postgis with schema public; 3 | 4 | drop schema if exists p cascade; 5 | create schema p; 6 | 7 | create table p.gis_debug ( 8 | id serial primary key, 9 | 10 | --------------- 11 | -- GEOGRAPHY -- 12 | --------------- 13 | 14 | geog geography, 15 | 16 | -- XY 17 | geog_geometry geography(geometry), 18 | geog_point geography(point), 19 | geog_linestr geography(linestring), 20 | geog_poly geography(polygon), 21 | geog_multipoint geography(multipoint), 22 | geog_multilinestr geography(multilinestring), 23 | geog_multipoly geography(multipolygon), 24 | geog_geometrycollection geography(geometrycollection), 25 | 26 | -- XYZ 27 | -- geog_geometryz geography(geometryz), 28 | -- geog_pointz geography(pointz), 29 | -- geog_linestrz geography(linestringz), 30 | -- geog_polyz geography(polygonz), 31 | -- geog_multipointz geography(multipointz), 32 | -- geog_multilinestrz geography(multilinestringz), 33 | -- geog_multipolyz geography(multipolygonz), 34 | -- geog_geometrycollectionz geography(geometrycollectionz), 35 | 36 | -- XYM 37 | geog_geometrym geography(geometrym), 38 | geog_pointm geography(pointm), 39 | geog_linestrm geography(linestringm), 40 | geog_polym geography(polygonm), 41 | geog_multipointm geography(multipointm), 42 | geog_multilinestrm geography(multilinestringm), 43 | geog_multipolym geography(multipolygonm), 44 | geog_geometrycollectionm geography(geometrycollectionm), 45 | 46 | -- XYZM 47 | -- geog_geometryzm geography(geometryzm), 48 | -- geog_pointzm geography(pointzm), 49 | -- geog_linestrzm geography(linestringzm), 50 | -- geog_polyzm geography(polygonzm), 51 | -- geog_multipointmz geography(multipointzm), 52 | -- geog_multilinestrmz geography(multilinestringzm), 53 | -- geog_multipolymz geography(multipolygonzm), 54 | -- geog_geometrycollectionzm geography(geometrycollectionzm), 55 | 56 | -------------- 57 | -- GEOMETRY -- 58 | -------------- 59 | 60 | geom geometry, 61 | 62 | -- XY 63 | geom_geometry geometry(geometry), 64 | geom_point geometry(point), 65 | geom_linestr geometry(linestring), 66 | geom_poly geometry(polygon), 67 | geom_multipoint geometry(multipoint), 68 | geom_multilinestr geometry(multilinestring), 69 | geom_multipoly geometry(multipolygon), 70 | geom_geometrycollection geometry(geometrycollection), 71 | 72 | -- XYZ 73 | -- geom_geometryz geometry(geometryz), 74 | -- geom_pointz geometry(pointz), 75 | -- geom_linestrz geometry(linestringz), 76 | -- geom_polyz geometry(polygonz), 77 | -- geom_multipointz geometry(multipointz), 78 | -- geom_multilinestrz geometry(multilinestringz), 79 | -- geom_multipolyz geometry(multipolygonz), 80 | -- geom_geometrycollectionz geometry(geometrycollectionz), 81 | 82 | -- XYM 83 | geom_geometrym geometry(geometrym), 84 | geom_pointm geometry(pointm), 85 | geom_linestrm geometry(linestringm), 86 | geom_polym geometry(polygonm), 87 | geom_multipointm geometry(multipointm), 88 | geom_multilinestrm geometry(multilinestringm), 89 | geom_multipolym geometry(multipolygonm), 90 | geom_geometrycollectionm geometry(geometrycollectionm) 91 | 92 | -- XYZM 93 | -- geom_geometryzm geometry(geometryzm), 94 | -- geom_pointzm geometry(pointzm), 95 | -- geom_linestrzm geometry(linestringzm), 96 | -- geom_polyzm geometry(polygonzm), 97 | -- geom_multipointzm geometry(multipointzm), 98 | -- geom_multilinestrzm geometry(multilinestringzm), 99 | -- geom_multipolyzm geometry(multipolygonzm), 100 | -- geom_geometrycollectionzm geometry(geometrycollectionzm), 101 | ); -------------------------------------------------------------------------------- /__tests__/printSchemaOrdered.js: -------------------------------------------------------------------------------- 1 | const { parse, buildASTSchema } = require("graphql"); 2 | const { printSchema } = require("graphql/utilities"); 3 | 4 | module.exports = function printSchemaOrdered(originalSchema) { 5 | // Clone schema so we don't damage anything 6 | const schema = buildASTSchema(parse(printSchema(originalSchema))); 7 | 8 | const typeMap = schema.getTypeMap(); 9 | Object.keys(typeMap).forEach(name => { 10 | const gqlType = typeMap[name]; 11 | 12 | // Object? 13 | if (gqlType.getFields) { 14 | const fields = gqlType.getFields(); 15 | const keys = Object.keys(fields).sort(); 16 | keys.forEach(key => { 17 | const value = fields[key]; 18 | 19 | // Move the key to the end of the object 20 | delete fields[key]; 21 | fields[key] = value; 22 | 23 | // Sort args 24 | if (value.args) { 25 | value.args.sort((a, b) => a.name.localeCompare(b.name)); 26 | } 27 | }); 28 | } 29 | 30 | // Enum? 31 | if (gqlType.getValues) { 32 | gqlType.getValues().sort((a, b) => a.name.localeCompare(b.name)); 33 | } 34 | }); 35 | 36 | return printSchema(schema); 37 | }; 38 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const PostgisOperatorsPlugin = require("./src/PgConnectionArgFilterPostgisOperatorsPlugin.js"); 2 | 3 | module.exports = function PostGraphileConnectionFilterPostgisPlugin( 4 | builder, 5 | options 6 | ) { 7 | builder.hook("build", build => { 8 | const pkg = require("./package.json"); 9 | 10 | // Check dependencies 11 | if (!build.versions) { 12 | throw new Error( 13 | `Plugin ${pkg.name}@${pkg.version} requires graphile-build@^4.1.0 in order to check dependencies (current version: ${build.graphileBuildVersion})` 14 | ); 15 | } 16 | const depends = (name, range) => { 17 | if (!build.hasVersion(name, range)) { 18 | throw new Error( 19 | `Plugin ${pkg.name}@${pkg.version} requires ${name}@${range} (${ 20 | build.versions[name] 21 | ? `current version: ${build.versions[name]}` 22 | : "not found" 23 | })` 24 | ); 25 | } 26 | }; 27 | depends("graphile-build-pg", "^4.5.0"); 28 | depends("postgraphile-plugin-connection-filter", "^2.0.0"); 29 | //depends("@graphile/postgis", "0.1.0"); 30 | 31 | // Register this plugin 32 | build.versions = build.extend(build.versions, { [pkg.name]: pkg.version }); 33 | 34 | return build; 35 | }); 36 | 37 | PostgisOperatorsPlugin(builder, options); 38 | }; 39 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "postgraphile-plugin-connection-filter-postgis", 3 | "version": "1.0.0-alpha.6", 4 | "description": "PostGIS filtering options in PostGraphile", 5 | "main": "index.js", 6 | "scripts": { 7 | "lint": "eslint .", 8 | "test": "scripts/test" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/mattbretl/postgraphile-plugin-connection-filter-postgis.git" 13 | }, 14 | "author": "Matt Bretl", 15 | "license": "MIT", 16 | "bugs": { 17 | "url": "https://github.com/mattbretl/postgraphile-plugin-connection-filter-postgis/issues" 18 | }, 19 | "devDependencies": { 20 | "@graphile/postgis": "0.1.0", 21 | "eslint": "^6.8.0", 22 | "eslint-config-prettier": "^6.11.0", 23 | "eslint-plugin-jest": "^23.8.2", 24 | "eslint-plugin-prettier": "^3.1.3", 25 | "graphql": "^14.6.0", 26 | "jest": "^25.5.0", 27 | "pg": "^7.18.2", 28 | "postgraphile-core": "4.5.0", 29 | "postgraphile-plugin-connection-filter": "2.0.0", 30 | "prettier": "1.19.1" 31 | }, 32 | "jest": { 33 | "testRegex": "__tests__/.*\\.test\\.js$" 34 | }, 35 | "files": [ 36 | "src" 37 | ], 38 | "engines": { 39 | "node": ">=10" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /scripts/test: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ -x ".env" ]; then 5 | set -a 6 | . ./.env 7 | set +a 8 | fi; 9 | 10 | if [ "$TEST_DATABASE_URL" == "" ]; then 11 | echo "ERROR: No test database configured; aborting" 12 | echo 13 | echo "To resolve this, ensure environmental variable TEST_DATABASE_URL is set" 14 | exit 1; 15 | fi; 16 | 17 | # Import latest schema (throw on error) 18 | psql -Xqv ON_ERROR_STOP=1 -f __tests__/p-schema.sql "$TEST_DATABASE_URL" 19 | echo "Database reset successfully ✅" 20 | 21 | # Now run the tests 22 | jest -i $@ 23 | -------------------------------------------------------------------------------- /src/PgConnectionArgFilterPostgisOperatorsPlugin.js: -------------------------------------------------------------------------------- 1 | module.exports = function PgConnectionArgFilterPostgisOperatorsPlugin(builder) { 2 | builder.hook("init", (_, build) => { 3 | const { 4 | addConnectionFilterOperator, 5 | inflection, 6 | pgSql: sql, 7 | pgGISExtension, 8 | pgGISGeographyType, 9 | pgGISGeometryType, 10 | } = build; 11 | 12 | if (!pgGISExtension || !pgGISGeographyType || !pgGISGeometryType) { 13 | return _; 14 | } 15 | 16 | const GEOGRAPHY = pgGISGeographyType.name; 17 | const GEOMETRY = pgGISGeometryType.name; 18 | 19 | const gqlTypeNamesByGisBaseTypeName = { 20 | geography: [], 21 | geometry: [], 22 | }; 23 | gqlTypeNamesByGisBaseTypeName.geography.push( 24 | inflection.gisInterfaceName(pgGISGeographyType) 25 | ); 26 | gqlTypeNamesByGisBaseTypeName.geometry.push( 27 | inflection.gisInterfaceName(pgGISGeometryType) 28 | ); 29 | for (const subtype of [0, 1, 2, 3, 4, 5, 6, 7]) { 30 | for (const hasZ of [false, true]) { 31 | for (const hasM of [false, true]) { 32 | gqlTypeNamesByGisBaseTypeName.geography.push( 33 | inflection.gisType(pgGISGeographyType, subtype, hasZ, hasM) 34 | ); 35 | gqlTypeNamesByGisBaseTypeName.geometry.push( 36 | inflection.gisType(pgGISGeometryType, subtype, hasZ, hasM) 37 | ); 38 | } 39 | } 40 | } 41 | 42 | let specs = []; 43 | 44 | // Functions 45 | for (const [fn, baseTypeNames, operatorName, description] of [ 46 | [ 47 | "ST_3DIntersects", 48 | [GEOMETRY], 49 | "intersects3D", 50 | "They share any portion of space in 3D.", 51 | ], 52 | [ 53 | "ST_Contains", 54 | [GEOMETRY], 55 | "contains", 56 | "No points of the specified geometry lie in the exterior, and at least one point of the interior of the specified geometry lies in the interior.", 57 | ], 58 | [ 59 | "ST_ContainsProperly", 60 | [GEOMETRY], 61 | "containsProperly", 62 | "The specified geometry intersects the interior but not the boundary (or exterior).", 63 | ], 64 | [ 65 | "ST_CoveredBy", 66 | [GEOMETRY, GEOGRAPHY], 67 | "coveredBy", 68 | "No point is outside the specified geometry.", 69 | ], 70 | [ 71 | "ST_Covers", 72 | [GEOMETRY, GEOGRAPHY], 73 | "covers", 74 | "No point in the specified geometry is outside.", 75 | ], 76 | [ 77 | "ST_Crosses", 78 | [GEOMETRY], 79 | "crosses", 80 | "They have some, but not all, interior points in common.", 81 | ], 82 | [ 83 | "ST_Disjoint", 84 | [GEOMETRY], 85 | "disjoint", 86 | "They do not share any space together.", 87 | ], 88 | [ 89 | "ST_Equals", 90 | [GEOMETRY], 91 | "equals", 92 | "They represent the same geometry. Directionality is ignored.", 93 | ], 94 | [ 95 | "ST_Intersects", 96 | [GEOMETRY, GEOGRAPHY], 97 | "intersects", 98 | "They share any portion of space in 2D.", 99 | ], 100 | [ 101 | "ST_OrderingEquals", 102 | [GEOMETRY], 103 | "orderingEquals", 104 | "They represent the same geometry and points are in the same directional order.", 105 | ], 106 | [ 107 | "ST_Overlaps", 108 | [GEOMETRY], 109 | "overlaps", 110 | "They share space, are of the same dimension, but are not completely contained by each other.", 111 | ], 112 | [ 113 | "ST_Touches", 114 | [GEOMETRY], 115 | "touches", 116 | "They have at least one point in common, but their interiors do not intersect.", 117 | ], 118 | [ 119 | "ST_Within", 120 | [GEOMETRY], 121 | "within", 122 | "Completely inside the specified geometry.", 123 | ], 124 | ]) { 125 | for (const baseTypeName of baseTypeNames) { 126 | const sqlGisFunction = 127 | pgGISExtension.namespaceName === "public" 128 | ? sql.identifier(fn.toLowerCase()) 129 | : sql.identifier(pgGISExtension.namespaceName, fn.toLowerCase()); 130 | specs.push({ 131 | typeNames: gqlTypeNamesByGisBaseTypeName[baseTypeName], 132 | operatorName, 133 | description, 134 | resolveType: fieldType => fieldType, 135 | resolve: (i, v) => sql.query`${sqlGisFunction}(${i}, ${v})`, 136 | }); 137 | } 138 | } 139 | 140 | // Operators 141 | for (const [op, baseTypeNames, operatorName, description] of [ 142 | [ 143 | "=", 144 | [GEOMETRY, GEOGRAPHY], 145 | "exactlyEquals", 146 | "Coordinates and coordinate order are the same as specified geometry.", 147 | ], 148 | [ 149 | "&&", 150 | [GEOMETRY, GEOGRAPHY], 151 | "bboxIntersects2D", 152 | "2D bounding box intersects the specified geometry's 2D bounding box.", 153 | ], 154 | [ 155 | "&&&", 156 | [GEOMETRY], 157 | "bboxIntersectsND", 158 | "n-D bounding box intersects the specified geometry's n-D bounding box.", 159 | ], 160 | [ 161 | "&<", 162 | [GEOMETRY], 163 | "bboxOverlapsOrLeftOf", 164 | "Bounding box overlaps or is to the left of the specified geometry's bounding box.", 165 | ], 166 | [ 167 | "&<|", 168 | [GEOMETRY], 169 | "bboxOverlapsOrBelow", 170 | "Bounding box overlaps or is below the specified geometry's bounding box.", 171 | ], 172 | [ 173 | "&>", 174 | [GEOMETRY], 175 | "bboxOverlapsOrRightOf", 176 | "Bounding box overlaps or is to the right of the specified geometry's bounding box.", 177 | ], 178 | [ 179 | "|&>", 180 | [GEOMETRY], 181 | "bboxOverlapsOrAbove", 182 | "Bounding box overlaps or is above the specified geometry's bounding box.", 183 | ], 184 | [ 185 | "<<", 186 | [GEOMETRY], 187 | "bboxLeftOf", 188 | "Bounding box is strictly to the left of the specified geometry's bounding box.", 189 | ], 190 | [ 191 | "<<|", 192 | [GEOMETRY], 193 | "bboxBelow", 194 | "Bounding box is strictly below the specified geometry's bounding box.", 195 | ], 196 | [ 197 | ">>", 198 | [GEOMETRY], 199 | "bboxRightOf", 200 | "Bounding box is strictly to the right of the specified geometry's bounding box.", 201 | ], 202 | [ 203 | "|>>", 204 | [GEOMETRY], 205 | "bboxAbove", 206 | "Bounding box is strictly above the specified geometry's bounding box.", 207 | ], 208 | [ 209 | "~", 210 | [GEOMETRY], 211 | "bboxContains", 212 | "Bounding box contains the specified geometry's bounding box.", 213 | ], 214 | [ 215 | "~=", 216 | [GEOMETRY], 217 | "bboxEquals", 218 | "Bounding box is the same as the specified geometry's bounding box.", 219 | ], 220 | ]) { 221 | for (const baseTypeName of baseTypeNames) { 222 | specs.push({ 223 | typeNames: gqlTypeNamesByGisBaseTypeName[baseTypeName], 224 | operatorName, 225 | description, 226 | resolveType: fieldType => fieldType, 227 | resolve: (i, v) => sql.query`${i} ${sql.raw(op)} ${v}`, 228 | }); 229 | } 230 | } 231 | 232 | specs.sort((a, b) => (a.operatorName > b.operatorName ? 1 : -1)); 233 | 234 | specs.forEach( 235 | ({ typeNames, operatorName, description, resolveType, resolve }) => { 236 | addConnectionFilterOperator( 237 | typeNames, 238 | operatorName, 239 | description, 240 | resolveType, 241 | resolve 242 | ); 243 | } 244 | ); 245 | 246 | return _; 247 | }); 248 | }; 249 | --------------------------------------------------------------------------------