node-type-registry 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/authz/authz-allow-all.js +10 -10
- package/authz/authz-composite.js +28 -28
- package/authz/authz-deny-all.js +10 -10
- package/authz/authz-direct-owner-any.js +19 -18
- package/authz/authz-direct-owner.js +17 -16
- package/authz/authz-entity-membership.js +39 -38
- package/authz/authz-member-list.js +17 -16
- package/authz/authz-membership-check.js +34 -34
- package/authz/authz-not-read-only.js +23 -22
- package/authz/authz-org-hierarchy.js +33 -31
- package/authz/authz-peer-ownership.js +40 -39
- package/authz/authz-publishable.js +26 -24
- package/authz/authz-related-entity-membership.js +57 -55
- package/authz/authz-related-member-list.js +35 -32
- package/authz/authz-related-peer-ownership.js +62 -59
- package/authz/authz-temporal.js +32 -30
- package/authz/index.d.ts +9 -9
- package/authz/index.js +19 -19
- package/blueprint-types.generated.js +1 -1
- package/codegen/generate-types.js +1 -1
- package/data/data-composite-field.js +27 -25
- package/data/data-direct-owner.js +24 -23
- package/data/data-entity-membership.js +24 -23
- package/data/data-force-current-user.js +17 -16
- package/data/data-id.js +16 -15
- package/data/data-immutable-fields.js +20 -19
- package/data/data-inflection.js +33 -32
- package/data/data-inherit-from-parent.js +31 -29
- package/data/data-job-trigger.js +87 -84
- package/data/data-jsonb.js +27 -26
- package/data/data-owned-fields.js +25 -23
- package/data/data-ownership-in-entity.js +21 -21
- package/data/data-peoplestamps.js +19 -19
- package/data/data-publishable.js +16 -16
- package/data/data-slug.js +21 -19
- package/data/data-soft-delete.js +14 -14
- package/data/data-status-field.js +32 -31
- package/data/data-tags.js +23 -22
- package/data/data-timestamps.js +15 -15
- package/data/index.d.ts +17 -17
- package/data/index.js +35 -35
- package/data/search-bm25.js +34 -33
- package/data/search-full-text.js +49 -47
- package/data/search-spatial-aggregate.js +77 -74
- package/data/search-spatial.js +51 -50
- package/data/search-trgm.js +20 -19
- package/data/search-unified.js +170 -162
- package/data/search-vector.js +104 -101
- package/data/table-organization-settings.js +13 -13
- package/data/table-user-profiles.js +13 -13
- package/data/table-user-settings.js +13 -13
- package/esm/authz/authz-allow-all.js +10 -10
- package/esm/authz/authz-composite.js +28 -28
- package/esm/authz/authz-deny-all.js +10 -10
- package/esm/authz/authz-direct-owner-any.js +19 -18
- package/esm/authz/authz-direct-owner.js +17 -16
- package/esm/authz/authz-entity-membership.js +39 -38
- package/esm/authz/authz-member-list.js +17 -16
- package/esm/authz/authz-membership-check.js +34 -34
- package/esm/authz/authz-not-read-only.js +23 -22
- package/esm/authz/authz-org-hierarchy.js +33 -31
- package/esm/authz/authz-peer-ownership.js +40 -39
- package/esm/authz/authz-publishable.js +26 -24
- package/esm/authz/authz-related-entity-membership.js +57 -55
- package/esm/authz/authz-related-member-list.js +35 -32
- package/esm/authz/authz-related-peer-ownership.js +62 -59
- package/esm/authz/authz-temporal.js +32 -30
- package/esm/authz/index.d.ts +9 -9
- package/esm/authz/index.js +9 -9
- package/esm/blueprint-types.generated.js +1 -1
- package/esm/codegen/generate-types.js +1 -1
- package/esm/data/data-composite-field.js +27 -25
- package/esm/data/data-direct-owner.js +24 -23
- package/esm/data/data-entity-membership.js +24 -23
- package/esm/data/data-force-current-user.js +17 -16
- package/esm/data/data-id.js +16 -15
- package/esm/data/data-immutable-fields.js +20 -19
- package/esm/data/data-inflection.js +33 -32
- package/esm/data/data-inherit-from-parent.js +31 -29
- package/esm/data/data-job-trigger.js +87 -84
- package/esm/data/data-jsonb.js +27 -26
- package/esm/data/data-owned-fields.js +25 -23
- package/esm/data/data-ownership-in-entity.js +21 -21
- package/esm/data/data-peoplestamps.js +19 -19
- package/esm/data/data-publishable.js +16 -16
- package/esm/data/data-slug.js +21 -19
- package/esm/data/data-soft-delete.js +14 -14
- package/esm/data/data-status-field.js +32 -31
- package/esm/data/data-tags.js +23 -22
- package/esm/data/data-timestamps.js +15 -15
- package/esm/data/index.d.ts +17 -17
- package/esm/data/index.js +17 -17
- package/esm/data/search-bm25.js +34 -33
- package/esm/data/search-full-text.js +49 -47
- package/esm/data/search-spatial-aggregate.js +77 -74
- package/esm/data/search-spatial.js +51 -50
- package/esm/data/search-trgm.js +20 -19
- package/esm/data/search-unified.js +170 -162
- package/esm/data/search-vector.js +104 -101
- package/esm/data/table-organization-settings.js +13 -13
- package/esm/data/table-user-profiles.js +13 -13
- package/esm/data/table-user-settings.js +13 -13
- package/esm/index.d.ts +3 -3
- package/esm/index.js +3 -3
- package/esm/module-presets/auth-email-magic.js +2 -2
- package/esm/module-presets/auth-email.js +8 -8
- package/esm/module-presets/auth-passkey.js +4 -4
- package/esm/module-presets/auth-sso.js +7 -7
- package/esm/module-presets/full.js +1 -1
- package/esm/module-presets/index.d.ts +5 -5
- package/esm/module-presets/index.js +4 -4
- package/esm/relation/index.d.ts +1 -1
- package/esm/relation/index.js +1 -1
- package/esm/relation/relation-belongs-to.js +41 -40
- package/esm/relation/relation-has-many.js +42 -41
- package/esm/relation/relation-has-one.js +42 -41
- package/esm/relation/relation-many-to-many.js +70 -68
- package/esm/relation/relation-spatial.js +54 -54
- package/esm/view/index.d.ts +3 -3
- package/esm/view/index.js +3 -3
- package/esm/view/view-aggregated.js +50 -48
- package/esm/view/view-composite.js +18 -18
- package/esm/view/view-filtered-table.js +37 -36
- package/esm/view/view-joined-tables.js +65 -61
- package/esm/view/view-table-projection.js +29 -28
- package/index.d.ts +3 -3
- package/index.js +3 -3
- package/module-presets/auth-email-magic.js +2 -2
- package/module-presets/auth-email.js +8 -8
- package/module-presets/auth-passkey.js +4 -4
- package/module-presets/auth-sso.js +7 -7
- package/module-presets/full.js +1 -1
- package/module-presets/index.d.ts +5 -5
- package/module-presets/index.js +7 -7
- package/package.json +2 -2
- package/relation/index.d.ts +1 -1
- package/relation/index.js +3 -3
- package/relation/relation-belongs-to.js +41 -40
- package/relation/relation-has-many.js +42 -41
- package/relation/relation-has-one.js +42 -41
- package/relation/relation-many-to-many.js +70 -68
- package/relation/relation-spatial.js +54 -54
- package/view/index.d.ts +3 -3
- package/view/index.js +7 -7
- package/view/view-aggregated.js +50 -48
- package/view/view-composite.js +18 -18
- package/view/view-filtered-table.js +37 -36
- package/view/view-joined-tables.js +65 -61
- package/view/view-table-projection.js +29 -28
package/esm/data/data-tags.js
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
export const DataTags = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
name: 'DataTags',
|
|
3
|
+
slug: 'data_tags',
|
|
4
|
+
category: 'data',
|
|
5
|
+
display_name: 'Tags',
|
|
6
|
+
description: 'Adds a citext[] tags column with GIN index for efficient array containment queries (@>, &&). Standard tagging pattern for categorization and filtering.',
|
|
7
|
+
parameter_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
field_name: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
format: 'column-ref',
|
|
13
|
+
description: 'Column name for the tags array',
|
|
14
|
+
default: 'tags'
|
|
14
15
|
},
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
default_value: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Default value expression for the tags column'
|
|
18
19
|
},
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
is_required: {
|
|
21
|
+
type: 'boolean',
|
|
22
|
+
description: 'Whether the column has a NOT NULL constraint',
|
|
23
|
+
default: false
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
},
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
tags: [
|
|
28
|
+
'tags',
|
|
29
|
+
'schema'
|
|
29
30
|
]
|
|
30
31
|
};
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
export const DataTimestamps = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
name: 'DataTimestamps',
|
|
3
|
+
slug: 'data_timestamps',
|
|
4
|
+
category: 'data',
|
|
5
|
+
display_name: 'Timestamps',
|
|
6
|
+
description: 'Adds automatic timestamp tracking with created_at and updated_at columns.',
|
|
7
|
+
parameter_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
include_id: {
|
|
11
|
+
type: 'boolean',
|
|
12
|
+
description: 'If true, also adds a UUID primary key column with auto-generation',
|
|
13
|
+
default: true
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
tags: [
|
|
18
|
+
'timestamps',
|
|
19
|
+
'schema'
|
|
20
20
|
]
|
|
21
21
|
};
|
package/esm/data/index.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { DataCompositeField } from './data-composite-field';
|
|
2
2
|
export { DataDirectOwner } from './data-direct-owner';
|
|
3
3
|
export { DataEntityMembership } from './data-entity-membership';
|
|
4
|
+
export { DataForceCurrentUser } from './data-force-current-user';
|
|
5
|
+
export { DataId } from './data-id';
|
|
6
|
+
export { DataImmutableFields } from './data-immutable-fields';
|
|
7
|
+
export { DataInflection } from './data-inflection';
|
|
8
|
+
export { DataInheritFromParent } from './data-inherit-from-parent';
|
|
9
|
+
export { DataJobTrigger } from './data-job-trigger';
|
|
10
|
+
export { DataJsonb } from './data-jsonb';
|
|
11
|
+
export { DataOwnedFields } from './data-owned-fields';
|
|
4
12
|
export { DataOwnershipInEntity } from './data-ownership-in-entity';
|
|
5
|
-
export { DataTimestamps } from './data-timestamps';
|
|
6
13
|
export { DataPeoplestamps } from './data-peoplestamps';
|
|
7
14
|
export { DataPublishable } from './data-publishable';
|
|
15
|
+
export { DataSlug } from './data-slug';
|
|
8
16
|
export { DataSoftDelete } from './data-soft-delete';
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
17
|
+
export { DataStatusField } from './data-status-field';
|
|
18
|
+
export { DataTags } from './data-tags';
|
|
19
|
+
export { DataTimestamps } from './data-timestamps';
|
|
11
20
|
export { SearchBm25 } from './search-bm25';
|
|
12
|
-
export {
|
|
21
|
+
export { SearchFullText } from './search-full-text';
|
|
13
22
|
export { SearchSpatial } from './search-spatial';
|
|
14
23
|
export { SearchSpatialAggregate } from './search-spatial-aggregate';
|
|
15
|
-
export { DataJobTrigger } from './data-job-trigger';
|
|
16
|
-
export { DataTags } from './data-tags';
|
|
17
|
-
export { DataStatusField } from './data-status-field';
|
|
18
|
-
export { DataJsonb } from './data-jsonb';
|
|
19
24
|
export { SearchTrgm } from './search-trgm';
|
|
20
|
-
export {
|
|
21
|
-
export {
|
|
22
|
-
export { DataOwnedFields } from './data-owned-fields';
|
|
23
|
-
export { DataInheritFromParent } from './data-inherit-from-parent';
|
|
24
|
-
export { DataForceCurrentUser } from './data-force-current-user';
|
|
25
|
-
export { DataImmutableFields } from './data-immutable-fields';
|
|
26
|
-
export { DataCompositeField } from './data-composite-field';
|
|
27
|
-
export { TableUserProfiles } from './table-user-profiles';
|
|
25
|
+
export { SearchUnified } from './search-unified';
|
|
26
|
+
export { SearchVector } from './search-vector';
|
|
28
27
|
export { TableOrganizationSettings } from './table-organization-settings';
|
|
28
|
+
export { TableUserProfiles } from './table-user-profiles';
|
|
29
29
|
export { TableUserSettings } from './table-user-settings';
|
package/esm/data/index.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { DataCompositeField } from './data-composite-field';
|
|
2
2
|
export { DataDirectOwner } from './data-direct-owner';
|
|
3
3
|
export { DataEntityMembership } from './data-entity-membership';
|
|
4
|
+
export { DataForceCurrentUser } from './data-force-current-user';
|
|
5
|
+
export { DataId } from './data-id';
|
|
6
|
+
export { DataImmutableFields } from './data-immutable-fields';
|
|
7
|
+
export { DataInflection } from './data-inflection';
|
|
8
|
+
export { DataInheritFromParent } from './data-inherit-from-parent';
|
|
9
|
+
export { DataJobTrigger } from './data-job-trigger';
|
|
10
|
+
export { DataJsonb } from './data-jsonb';
|
|
11
|
+
export { DataOwnedFields } from './data-owned-fields';
|
|
4
12
|
export { DataOwnershipInEntity } from './data-ownership-in-entity';
|
|
5
|
-
export { DataTimestamps } from './data-timestamps';
|
|
6
13
|
export { DataPeoplestamps } from './data-peoplestamps';
|
|
7
14
|
export { DataPublishable } from './data-publishable';
|
|
15
|
+
export { DataSlug } from './data-slug';
|
|
8
16
|
export { DataSoftDelete } from './data-soft-delete';
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
17
|
+
export { DataStatusField } from './data-status-field';
|
|
18
|
+
export { DataTags } from './data-tags';
|
|
19
|
+
export { DataTimestamps } from './data-timestamps';
|
|
11
20
|
export { SearchBm25 } from './search-bm25';
|
|
12
|
-
export {
|
|
21
|
+
export { SearchFullText } from './search-full-text';
|
|
13
22
|
export { SearchSpatial } from './search-spatial';
|
|
14
23
|
export { SearchSpatialAggregate } from './search-spatial-aggregate';
|
|
15
|
-
export { DataJobTrigger } from './data-job-trigger';
|
|
16
|
-
export { DataTags } from './data-tags';
|
|
17
|
-
export { DataStatusField } from './data-status-field';
|
|
18
|
-
export { DataJsonb } from './data-jsonb';
|
|
19
24
|
export { SearchTrgm } from './search-trgm';
|
|
20
|
-
export {
|
|
21
|
-
export {
|
|
22
|
-
export { DataOwnedFields } from './data-owned-fields';
|
|
23
|
-
export { DataInheritFromParent } from './data-inherit-from-parent';
|
|
24
|
-
export { DataForceCurrentUser } from './data-force-current-user';
|
|
25
|
-
export { DataImmutableFields } from './data-immutable-fields';
|
|
26
|
-
export { DataCompositeField } from './data-composite-field';
|
|
27
|
-
export { TableUserProfiles } from './table-user-profiles';
|
|
25
|
+
export { SearchUnified } from './search-unified';
|
|
26
|
+
export { SearchVector } from './search-vector';
|
|
28
27
|
export { TableOrganizationSettings } from './table-organization-settings';
|
|
28
|
+
export { TableUserProfiles } from './table-user-profiles';
|
|
29
29
|
export { TableUserSettings } from './table-user-settings';
|
package/esm/data/search-bm25.js
CHANGED
|
@@ -1,44 +1,45 @@
|
|
|
1
1
|
export const SearchBm25 = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
name: 'SearchBm25',
|
|
3
|
+
slug: 'search_bm25',
|
|
4
|
+
category: 'search',
|
|
5
|
+
display_name: 'BM25 Search',
|
|
6
|
+
description: 'Creates a BM25 index on an existing text column using pg_textsearch. Enables statistical relevance ranking with configurable k1 and b parameters. The BM25 index is auto-detected by graphile-search.',
|
|
7
|
+
parameter_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
field_name: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
format: 'column-ref',
|
|
13
|
+
description: 'Name of existing text column to index with BM25'
|
|
13
14
|
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
text_config: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
description: 'PostgreSQL text search configuration for BM25',
|
|
18
|
+
default: 'english'
|
|
18
19
|
},
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
k1: {
|
|
21
|
+
type: 'number',
|
|
22
|
+
description: 'BM25 k1 parameter: term frequency saturation (typical: 1.2-2.0)',
|
|
23
|
+
default: null
|
|
23
24
|
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
b: {
|
|
26
|
+
type: 'number',
|
|
27
|
+
description: 'BM25 b parameter: document length normalization (0=none, 1=full, typical: 0.75)',
|
|
28
|
+
default: null
|
|
28
29
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
search_score_weight: {
|
|
31
|
+
type: 'number',
|
|
32
|
+
description: 'Weight for this algorithm in composite searchScore',
|
|
33
|
+
default: 1
|
|
33
34
|
}
|
|
34
35
|
},
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
required: [
|
|
37
|
+
'field_name'
|
|
37
38
|
]
|
|
38
39
|
},
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
tags: [
|
|
41
|
+
'search',
|
|
42
|
+
'bm25',
|
|
43
|
+
'schema'
|
|
43
44
|
]
|
|
44
45
|
};
|
|
@@ -1,63 +1,65 @@
|
|
|
1
1
|
export const SearchFullText = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
name: 'SearchFullText',
|
|
3
|
+
slug: 'search_full_text',
|
|
4
|
+
category: 'search',
|
|
5
|
+
display_name: 'Full-Text Search',
|
|
6
|
+
description: 'Adds a tsvector column with GIN index and automatic trigger population from source fields. Enables PostgreSQL full-text search with configurable weights and language support. Leverages the existing metaschema full_text_search infrastructure.',
|
|
7
|
+
parameter_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
field_name: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
format: 'column-ref',
|
|
13
|
+
description: 'Name of the tsvector column',
|
|
14
|
+
default: 'search'
|
|
14
15
|
},
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
source_fields: {
|
|
17
|
+
type: 'array',
|
|
18
|
+
items: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
field: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
format: 'column-ref',
|
|
24
|
+
description: 'Name of the source column'
|
|
23
25
|
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
weight: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
enum: [
|
|
29
|
+
'A',
|
|
30
|
+
'B',
|
|
31
|
+
'C',
|
|
32
|
+
'D'
|
|
31
33
|
],
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
description: 'tsvector weight class (A=highest, D=lowest)',
|
|
35
|
+
default: 'D'
|
|
34
36
|
},
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
lang: {
|
|
38
|
+
type: 'string',
|
|
39
|
+
description: 'PostgreSQL text search configuration',
|
|
40
|
+
default: 'english'
|
|
39
41
|
}
|
|
40
42
|
},
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
required: [
|
|
44
|
+
'field'
|
|
43
45
|
]
|
|
44
46
|
},
|
|
45
|
-
|
|
47
|
+
description: 'Source columns that feed the tsvector. Each has a field name, weight (A-D), and language config.'
|
|
46
48
|
},
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
search_score_weight: {
|
|
50
|
+
type: 'number',
|
|
51
|
+
description: 'Weight for this algorithm in composite searchScore',
|
|
52
|
+
default: 1
|
|
51
53
|
}
|
|
52
54
|
},
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
required: [
|
|
56
|
+
'source_fields'
|
|
55
57
|
]
|
|
56
58
|
},
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
tags: [
|
|
60
|
+
'search',
|
|
61
|
+
'fts',
|
|
62
|
+
'tsvector',
|
|
63
|
+
'schema'
|
|
62
64
|
]
|
|
63
65
|
};
|
|
@@ -1,97 +1,100 @@
|
|
|
1
1
|
export const SearchSpatialAggregate = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
name: 'SearchSpatialAggregate',
|
|
3
|
+
slug: 'search_spatial_aggregate',
|
|
4
|
+
category: 'search',
|
|
5
|
+
display_name: 'Spatial Aggregate Search',
|
|
6
|
+
description: 'Creates a derived/materialized geometry field on the parent table that automatically aggregates geometries from a source (child) table via triggers. When child rows are inserted/updated/deleted, the parent aggregate field is recalculated using the specified PostGIS aggregation function (ST_Union, ST_Collect, ST_ConvexHull, ST_ConcaveHull). Useful for materializing spatial boundaries from collections of points or polygons.',
|
|
7
|
+
parameter_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
field_name: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
format: 'column-ref',
|
|
13
|
+
description: 'Name of the aggregate geometry column on the parent table',
|
|
14
|
+
default: 'geom_aggregate'
|
|
14
15
|
},
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
source_table_id: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
format: 'uuid',
|
|
19
|
+
description: 'UUID of the source (child) table containing individual geometries'
|
|
19
20
|
},
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
source_geom_field: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
format: 'column-ref',
|
|
24
|
+
description: 'Name of the geometry column on the source table',
|
|
25
|
+
default: 'geom'
|
|
24
26
|
},
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
source_fk_field: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
format: 'column-ref',
|
|
30
|
+
description: 'Name of the foreign key column on the source table pointing to the parent'
|
|
28
31
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
aggregate_function: {
|
|
33
|
+
type: 'string',
|
|
34
|
+
enum: [
|
|
35
|
+
'union',
|
|
36
|
+
'collect',
|
|
37
|
+
'convex_hull',
|
|
38
|
+
'concave_hull'
|
|
36
39
|
],
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
description: 'PostGIS aggregation function: union (ST_Union, merges overlapping), collect (ST_Collect, groups without merging), convex_hull (smallest convex polygon), concave_hull (tighter boundary)',
|
|
41
|
+
default: 'union'
|
|
39
42
|
},
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
geometry_type: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
enum: [
|
|
46
|
+
'Point',
|
|
47
|
+
'LineString',
|
|
48
|
+
'Polygon',
|
|
49
|
+
'MultiPoint',
|
|
50
|
+
'MultiLineString',
|
|
51
|
+
'MultiPolygon',
|
|
52
|
+
'GeometryCollection',
|
|
53
|
+
'Geometry'
|
|
51
54
|
],
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
description: 'Output geometry type constraint for the aggregate field',
|
|
56
|
+
default: 'MultiPolygon'
|
|
54
57
|
},
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
srid: {
|
|
59
|
+
type: 'integer',
|
|
60
|
+
description: 'Spatial Reference System Identifier (e.g. 4326 for WGS84)',
|
|
61
|
+
default: 4326
|
|
59
62
|
},
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
+
dimension: {
|
|
64
|
+
type: 'integer',
|
|
65
|
+
enum: [
|
|
63
66
|
2,
|
|
64
67
|
3,
|
|
65
68
|
4
|
|
66
69
|
],
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
description: 'Coordinate dimension (2=XY, 3=XYZ, 4=XYZM)',
|
|
71
|
+
default: 2
|
|
69
72
|
},
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
use_geography: {
|
|
74
|
+
type: 'boolean',
|
|
75
|
+
description: 'Use geography type instead of geometry',
|
|
76
|
+
default: false
|
|
74
77
|
},
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
index_method: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
enum: [
|
|
81
|
+
'gist',
|
|
82
|
+
'spgist'
|
|
80
83
|
],
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
description: 'Spatial index method for the aggregate field',
|
|
85
|
+
default: 'gist'
|
|
83
86
|
}
|
|
84
87
|
},
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
required: [
|
|
89
|
+
'source_table_id',
|
|
90
|
+
'source_fk_field'
|
|
88
91
|
]
|
|
89
92
|
},
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
tags: [
|
|
94
|
+
'spatial',
|
|
95
|
+
'postgis',
|
|
96
|
+
'geometry',
|
|
97
|
+
'aggregate',
|
|
98
|
+
'schema'
|
|
96
99
|
]
|
|
97
100
|
};
|