mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-12 12:42:55 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4036bfd193 | ||
|
|
f4f372b9ad | ||
|
|
872c1f5fc3 | ||
|
|
4f2ca30dab | ||
|
|
882483ee24 | ||
|
|
c998166938 | ||
|
|
d61e33de39 |
14
CHANGELOG.md
14
CHANGELOG.md
@@ -1,3 +1,17 @@
|
||||
# [0.47.0](https://gitlab.com/openstapps/core/compare/v0.46.0...v0.47.0) (2021-06-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* set date-series frequency non translatable ([4a4cd4e](https://gitlab.com/openstapps/core/commit/4a4cd4e6d4b01ac34b5338dfcf4aeb959f54461d))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* make SCDateSeries.frequency compliant with schema.org ([942cd11](https://gitlab.com/openstapps/core/commit/942cd1146966aa9e60321160489a6605877925e9))
|
||||
|
||||
|
||||
|
||||
# [0.46.0](https://gitlab.com/openstapps/core/compare/v0.45.0...v0.46.0) (2021-05-04)
|
||||
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ External dependencies can not be covered by the annotations. Documentation about
|
||||
| `@sortable` | field is sortable if the core schema is used to put data into a database/key-value store. Fields are always sortable through generic sort, even without annotation. | sort method to be used: `ducet`, `price`, `distance` |
|
||||
| `@text` | string field is interpreted as text | |
|
||||
| `@date` | string field is interpreted as a date field | |
|
||||
| `@validatable` | marks the type as validatable if the core schema is used to put data into a database/key-value store | |
|
||||
| `@validatable` | Marks the type for json schema generation, which can be checked at runtime. Any top-level type that is put into a database should always be marked as validatable. | |
|
||||
| `@filterable` | non-object/nested field is filterable if the core schema is used to put data into a database/key-value store | |
|
||||
| `@inheritTags` | inherit all tags from another field | `[SCThingType]::[field]` |
|
||||
|
||||
|
||||
14
package-lock.json
generated
14
package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openstapps/core",
|
||||
"version": "0.47.0",
|
||||
"version": "0.48.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -540,9 +540,9 @@
|
||||
}
|
||||
},
|
||||
"@types/chai": {
|
||||
"version": "4.2.18",
|
||||
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.18.tgz",
|
||||
"integrity": "sha512-rS27+EkB/RE1Iz3u0XtVL5q36MGDWbgYe7zWiodyKNUnthxY0rukK5V36eiUCtCisB7NN8zKYH6DO2M37qxFEQ==",
|
||||
"version": "4.2.19",
|
||||
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.19.tgz",
|
||||
"integrity": "sha512-jRJgpRBuY+7izT7/WNXP/LsMO9YonsstuL+xuvycDyESpoDoIAsMd7suwpB4h9oEWB+ZlPTqJJ8EHomzNhwTPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/geojson": {
|
||||
@@ -599,9 +599,9 @@
|
||||
"integrity": "sha512-Sm0NWeLhS2QL7NNGsXvO+Fgp7e3JLHCO6RS3RCnfjAnkw6Y1bsji/AGfISdQZDIR/AeOyzkrxRk9jBkl55zdJw=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "14.17.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.3.tgz",
|
||||
"integrity": "sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw=="
|
||||
"version": "14.17.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.4.tgz",
|
||||
"integrity": "sha512-8kQ3+wKGRNN0ghtEn7EGps/B8CzuBz1nXZEIGGLP2GnwbqYn4dbTs7k+VKLTq1HvZLRCIDtN3Snx1Ege8B7L5A=="
|
||||
},
|
||||
"@types/nodemailer": {
|
||||
"version": "6.4.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openstapps/core",
|
||||
"version": "0.47.0",
|
||||
"version": "0.48.0",
|
||||
"description": "StAppsCore - Generalized model of data",
|
||||
"keywords": [
|
||||
"Model",
|
||||
@@ -47,7 +47,7 @@
|
||||
"@types/geojson": "1.0.6",
|
||||
"@types/json-patch": "0.0.30",
|
||||
"@types/json-schema": "7.0.7",
|
||||
"@types/node": "14.17.3",
|
||||
"@types/node": "14.17.4",
|
||||
"fast-clone": "1.5.13",
|
||||
"fast-deep-equal": "3.1.3",
|
||||
"http-status-codes": "2.1.4",
|
||||
@@ -59,7 +59,7 @@
|
||||
"@openstapps/configuration": "0.27.0",
|
||||
"@openstapps/logger": "0.7.0",
|
||||
"@testdeck/mocha": "0.1.2",
|
||||
"@types/chai": "4.2.18",
|
||||
"@types/chai": "4.2.19",
|
||||
"@types/rimraf": "3.0.0",
|
||||
"chai": "4.3.4",
|
||||
"conditional-type-checks": "1.0.5",
|
||||
|
||||
@@ -17,6 +17,8 @@ import {SCError} from '../error';
|
||||
|
||||
/**
|
||||
* An error that is returned, when an internal server error occurred
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCInternalServerErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,8 @@ import {SCError} from '../error';
|
||||
|
||||
/**
|
||||
* An error that is returned, when the used HTTP method is not allowed on the requested route
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCMethodNotAllowedErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,8 @@ import {SCError} from '../error';
|
||||
|
||||
/**
|
||||
* An error that is returned when the requested route or resource was not found
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCNotFoundErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -18,6 +18,8 @@ import {SCError} from '../error';
|
||||
/**
|
||||
* An error that is returned when the request is in the right format, but contains parameters that are invalid or not
|
||||
* acceptable.
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCParametersNotAcceptable extends SCError {
|
||||
/**
|
||||
|
||||
@@ -20,6 +20,8 @@ import {SCPluginMetaData} from '../routes/plugin-register';
|
||||
* An error that is returned when a plugin with the same name is already registered, to prevent two copies of a plugin
|
||||
* running at the same time.
|
||||
* This usually indicates that there is more than one instance a plugin running.
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCPluginAlreadyRegisteredErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,8 @@ import {SCError} from '../error';
|
||||
|
||||
/**
|
||||
* An error that is returned whenever there is an unexpected error while creating a plugin
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCPluginRegisteringFailedErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,8 @@ import {SCError} from '../error';
|
||||
|
||||
/**
|
||||
* An error that is returned, when the request body is too large.
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCRequestBodyTooLargeErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,8 @@ import {SCError} from '../error';
|
||||
|
||||
/**
|
||||
* An error that is returned whenever there is a syntax error
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCSyntaxErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,8 @@ import {SCError} from '../error';
|
||||
|
||||
/**
|
||||
* An error that is returned, when to many request are submitted at once
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCTooManyRequestsErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,8 @@ import {SCError} from '../error';
|
||||
|
||||
/**
|
||||
* An error that is returned when the content type of the request is not supported
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCUnsupportedMediaTypeErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -18,6 +18,8 @@ import {SCError} from '../error';
|
||||
|
||||
/**
|
||||
* An error that is returned when the validation of a request fails
|
||||
*
|
||||
* @validatable
|
||||
*/
|
||||
export class SCValidationErrorResponse extends SCError {
|
||||
/**
|
||||
|
||||
@@ -55,7 +55,7 @@ export class SCThingUpdateRoute extends SCAbstractRoute {
|
||||
];
|
||||
this.method = SCRouteHttpVerbs.PUT;
|
||||
this.obligatoryParameters = {
|
||||
TYPE: 'SCThingTypes',
|
||||
TYPE: 'SCThingType',
|
||||
UID: 'SCUuid',
|
||||
};
|
||||
this.requestBodyName = 'SCThingUpdateRequest';
|
||||
|
||||
@@ -19,6 +19,7 @@ import {SCMap} from '../../general/map';
|
||||
import {SCSearchAvailabilityFilter} from './filters/availability';
|
||||
import {SCSearchBooleanFilter} from './filters/boolean';
|
||||
import {SCSearchDistanceFilter} from './filters/distance';
|
||||
import {SCGeoFilter} from './filters/geo';
|
||||
import {SCSearchDateRangeFilter, SCSearchNumericRangeFilter} from './filters/range';
|
||||
import {SCSearchValueFilter} from './filters/value';
|
||||
|
||||
@@ -31,7 +32,8 @@ export type SCSearchFilterType =
|
||||
| 'distance'
|
||||
| 'value'
|
||||
| 'date range'
|
||||
| 'numeric range';
|
||||
| 'numeric range'
|
||||
| 'geo';
|
||||
|
||||
/**
|
||||
* Structure of a filter instruction
|
||||
@@ -62,4 +64,5 @@ export type SCSearchFilter =
|
||||
| SCSearchDistanceFilter
|
||||
| SCSearchValueFilter
|
||||
| SCSearchNumericRangeFilter
|
||||
| SCSearchDateRangeFilter;
|
||||
| SCSearchDateRangeFilter
|
||||
| SCGeoFilter;
|
||||
|
||||
55
src/protocol/search/filters/geo.ts
Normal file
55
src/protocol/search/filters/geo.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (C) 2021 StApps
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
// tslint:disable-next-line:no-implicit-dependencies
|
||||
import {Polygon} from 'geojson';
|
||||
import {SCThingsField} from '../../../meta';
|
||||
import {SCSearchAbstractFilter, SCSearchAbstractFilterArguments} from '../filter';
|
||||
|
||||
/**
|
||||
* A geo filter
|
||||
*
|
||||
* Filter for documents that are in relation to some geo data
|
||||
*/
|
||||
export interface SCGeoFilter extends SCSearchAbstractFilter<SCGeoFilterArguments> {
|
||||
/**
|
||||
* @see SCSearchAbstractFilter.type
|
||||
*/
|
||||
type: 'geo';
|
||||
}
|
||||
|
||||
/**
|
||||
* Arguments for filter instruction by geo data
|
||||
*/
|
||||
export interface SCGeoFilterArguments extends SCSearchAbstractFilterArguments {
|
||||
/**
|
||||
* Field on which to filter
|
||||
*/
|
||||
field: SCThingsField;
|
||||
|
||||
/**
|
||||
* Geo data to check up on
|
||||
*/
|
||||
shape: Polygon;
|
||||
|
||||
/**
|
||||
* Spatial relation between the provided shape and the shape of the field.
|
||||
*
|
||||
* intersects - both shapes intersect (default)
|
||||
* disjoint - both shapes don't intersect
|
||||
* within - the search shape contains the field shape
|
||||
* contains - the search shape is contained in the field shape
|
||||
*/
|
||||
spatialRelation?: 'intersects' | 'disjoint' | 'within' | 'contains';
|
||||
}
|
||||
Reference in New Issue
Block a user