node-type-registry 0.21.0 → 0.22.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/blueprint-types.generated.d.ts +319 -269
- package/blueprint-types.generated.js +6 -0
- package/codegen/generate-types.js +105 -4
- package/data/data-image-embedding.d.ts +2 -0
- package/data/data-image-embedding.js +80 -0
- package/data/data-job-trigger.js +38 -1
- package/data/data-ownership-in-entity.js +12 -0
- package/data/data-peoplestamps.js +12 -0
- package/data/data-publishable.js +12 -0
- package/data/data-soft-delete.js +12 -0
- package/data/data-timestamps.js +12 -0
- package/data/index.d.ts +1 -0
- package/data/index.js +3 -1
- package/esm/blueprint-types.generated.d.ts +319 -269
- package/esm/blueprint-types.generated.js +6 -0
- package/esm/codegen/generate-types.js +105 -4
- package/esm/data/data-image-embedding.d.ts +2 -0
- package/esm/data/data-image-embedding.js +77 -0
- package/esm/data/data-job-trigger.js +38 -1
- package/esm/data/data-ownership-in-entity.js +12 -0
- package/esm/data/data-peoplestamps.js +12 -0
- package/esm/data/data-publishable.js +12 -0
- package/esm/data/data-soft-delete.js +12 -0
- package/esm/data/data-timestamps.js +12 -0
- package/esm/data/index.d.ts +1 -0
- package/esm/data/index.js +1 -0
- package/esm/view/view-aggregated.js +1 -0
- package/package.json +2 -2
- package/view/view-aggregated.js +1 -0
|
@@ -1,6 +1,30 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export interface
|
|
3
|
-
|
|
1
|
+
/** Recursive condition type for compound trigger WHEN clauses. Leaf conditions specify {field, op, value?, row?, ref?}. Combinators nest via AND, OR, NOT. */
|
|
2
|
+
export interface TriggerCondition {
|
|
3
|
+
/** Column name (validated against the table). */
|
|
4
|
+
field?: string;
|
|
5
|
+
/** Comparison operator. */
|
|
6
|
+
op?: '=' | '!=' | '>' | '<' | '>=' | '<=' | 'LIKE' | 'NOT LIKE' | 'IS NULL' | 'IS NOT NULL' | 'IS DISTINCT FROM';
|
|
7
|
+
/** Comparison value. Type is resolved from the column definition. */
|
|
8
|
+
value?: any;
|
|
9
|
+
/** Row reference (default: NEW). */
|
|
10
|
+
row?: 'NEW' | 'OLD';
|
|
11
|
+
/** Column reference for field-to-field comparison (alternative to value). */
|
|
12
|
+
ref?: {
|
|
13
|
+
field?: string;
|
|
14
|
+
row?: 'NEW' | 'OLD';
|
|
15
|
+
};
|
|
16
|
+
/** Array of conditions combined with AND. */
|
|
17
|
+
AND?: TriggerCondition[];
|
|
18
|
+
/** Array of conditions combined with OR. */
|
|
19
|
+
OR?: TriggerCondition[];
|
|
20
|
+
/** Negated condition. */
|
|
21
|
+
NOT?: TriggerCondition;
|
|
22
|
+
}
|
|
23
|
+
/** Creates a derived text field that automatically concatenates multiple source fields via BEFORE INSERT/UPDATE triggers. Used to produce a unified text representation (e.g., embedding_text) from multiple columns on a table. The trigger fires with '_000' prefix to run before Search* triggers alphabetically. */
|
|
24
|
+
export interface DataCompositeFieldParams {
|
|
25
|
+
target?: string;
|
|
26
|
+
source_fields: string[];
|
|
27
|
+
format?: 'labeled' | 'plain';
|
|
4
28
|
}
|
|
5
29
|
/** Adds ownership column for direct user ownership. Enables AuthzDirectOwner authorization. */
|
|
6
30
|
export interface DataDirectOwnerParams {
|
|
@@ -14,27 +38,41 @@ export interface DataEntityMembershipParams {
|
|
|
14
38
|
include_id?: boolean;
|
|
15
39
|
include_user_fk?: boolean;
|
|
16
40
|
}
|
|
17
|
-
/**
|
|
18
|
-
export interface
|
|
19
|
-
|
|
20
|
-
include_user_fk?: boolean;
|
|
41
|
+
/** BEFORE INSERT trigger that forces a field to the value of jwt_public.current_user_id(). Prevents clients from spoofing the actor/uploader identity. The field value is always overwritten regardless of what the client provides. */
|
|
42
|
+
export interface DataForceCurrentUserParams {
|
|
43
|
+
field_name?: string;
|
|
21
44
|
}
|
|
22
|
-
/** Adds
|
|
23
|
-
export interface
|
|
24
|
-
|
|
45
|
+
/** Adds a UUID primary key column with auto-generation default (uuidv7). This is the standard primary key pattern for all tables. */
|
|
46
|
+
export interface DataIdParams {
|
|
47
|
+
field_name?: string;
|
|
25
48
|
}
|
|
26
|
-
/**
|
|
27
|
-
export interface
|
|
28
|
-
|
|
29
|
-
|
|
49
|
+
/** Composition wrapper that creates a vector embedding field with HNSW/IVFFlat index (via SearchVector) and a job trigger with compound conditions (via DataJobTrigger) that fires on INSERT for image files matching mime_type patterns. Designed for storage file tables. */
|
|
50
|
+
export interface DataImageEmbeddingParams {
|
|
51
|
+
field_name?: string;
|
|
52
|
+
dimensions?: number;
|
|
53
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
54
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
55
|
+
task_identifier?: string;
|
|
56
|
+
mime_patterns?: string[];
|
|
57
|
+
payload_custom?: {
|
|
58
|
+
[key: string]: unknown;
|
|
59
|
+
};
|
|
30
60
|
}
|
|
31
|
-
/**
|
|
32
|
-
export interface
|
|
33
|
-
|
|
61
|
+
/** BEFORE UPDATE trigger that prevents changes to a list of specified fields after INSERT. Raises an exception if any of the listed fields have changed. Unlike FieldImmutable (single-field), this handles multiple fields in a single trigger for efficiency. */
|
|
62
|
+
export interface DataImmutableFieldsParams {
|
|
63
|
+
fields: string[];
|
|
34
64
|
}
|
|
35
|
-
/**
|
|
36
|
-
export interface
|
|
37
|
-
|
|
65
|
+
/** Transforms field values using inflection operations (snake_case, camelCase, slugify, plural, singular, etc). Attaches BEFORE INSERT and BEFORE UPDATE triggers. References fields by name in data jsonb. */
|
|
66
|
+
export interface DataInflectionParams {
|
|
67
|
+
field_name: string;
|
|
68
|
+
ops: ('plural' | 'singular' | 'camel' | 'pascal' | 'dashed' | 'slugify' | 'underscore' | 'lower' | 'upper')[];
|
|
69
|
+
}
|
|
70
|
+
/** BEFORE INSERT trigger that copies specified fields from a parent table via a foreign key. The parent row is looked up through RLS (SECURITY INVOKER), so the insert fails if the caller cannot see the parent. Used by the storage module to inherit owner_id and is_public from buckets to files. */
|
|
71
|
+
export interface DataInheritFromParentParams {
|
|
72
|
+
parent_fk_field: string;
|
|
73
|
+
fields: string[];
|
|
74
|
+
parent_table?: string;
|
|
75
|
+
parent_schema?: string;
|
|
38
76
|
}
|
|
39
77
|
/** Dynamically creates PostgreSQL triggers that enqueue jobs via app_jobs.add_job() when table rows are inserted, updated, or deleted. Supports configurable payload strategies (full row, row ID, selected fields, or custom mapping), conditional firing via WHEN clauses, watched field changes, and extended job options (queue, priority, delay, max attempts). */
|
|
40
78
|
export interface DataJobTriggerParams {
|
|
@@ -49,6 +87,7 @@ export interface DataJobTriggerParams {
|
|
|
49
87
|
include_meta?: boolean;
|
|
50
88
|
condition_field?: string;
|
|
51
89
|
condition_value?: string;
|
|
90
|
+
conditions?: TriggerCondition | TriggerCondition[];
|
|
52
91
|
watch_fields?: string[];
|
|
53
92
|
job_key?: string;
|
|
54
93
|
queue_name?: string;
|
|
@@ -56,20 +95,6 @@ export interface DataJobTriggerParams {
|
|
|
56
95
|
run_at_delay?: string;
|
|
57
96
|
max_attempts?: number;
|
|
58
97
|
}
|
|
59
|
-
/** Adds a citext[] tags column with GIN index for efficient array containment queries (@>, &&). Standard tagging pattern for categorization and filtering. */
|
|
60
|
-
export interface DataTagsParams {
|
|
61
|
-
field_name?: string;
|
|
62
|
-
default_value?: string;
|
|
63
|
-
is_required?: boolean;
|
|
64
|
-
}
|
|
65
|
-
/** Adds a status column with B-tree index for efficient equality filtering and sorting. Optionally constrains values via CHECK constraint when allowed_values is provided. */
|
|
66
|
-
export interface DataStatusFieldParams {
|
|
67
|
-
field_name?: string;
|
|
68
|
-
type?: string;
|
|
69
|
-
default_value?: string;
|
|
70
|
-
is_required?: boolean;
|
|
71
|
-
allowed_values?: string[];
|
|
72
|
-
}
|
|
73
98
|
/** Adds a JSONB column with optional GIN index for containment queries (@>, ?, ?|, ?&). Standard pattern for semi-structured metadata. */
|
|
74
99
|
export interface DataJsonbParams {
|
|
75
100
|
field_name?: string;
|
|
@@ -77,73 +102,75 @@ export interface DataJsonbParams {
|
|
|
77
102
|
is_required?: boolean;
|
|
78
103
|
create_index?: boolean;
|
|
79
104
|
}
|
|
80
|
-
/** Auto-generates URL-friendly slugs from field values on insert/update. Attaches BEFORE INSERT and BEFORE UPDATE triggers that call inflection.slugify() on the target field. References fields by name in data jsonb. */
|
|
81
|
-
export interface DataSlugParams {
|
|
82
|
-
field_name: string;
|
|
83
|
-
source_field_name?: string;
|
|
84
|
-
}
|
|
85
|
-
/** Transforms field values using inflection operations (snake_case, camelCase, slugify, plural, singular, etc). Attaches BEFORE INSERT and BEFORE UPDATE triggers. References fields by name in data jsonb. */
|
|
86
|
-
export interface DataInflectionParams {
|
|
87
|
-
field_name: string;
|
|
88
|
-
ops: ('plural' | 'singular' | 'camel' | 'pascal' | 'dashed' | 'slugify' | 'underscore' | 'lower' | 'upper')[];
|
|
89
|
-
}
|
|
90
105
|
/** Restricts which user can modify specific columns in shared objects. Creates an AFTER UPDATE trigger that throws OWNED_PROPS when a non-owner tries to change protected fields. References fields by name in data jsonb. */
|
|
91
106
|
export interface DataOwnedFieldsParams {
|
|
92
107
|
role_key_field_name: string;
|
|
93
108
|
protected_field_names: string[];
|
|
94
109
|
}
|
|
95
|
-
/**
|
|
96
|
-
export interface
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
110
|
+
/** Combines direct ownership with entity scoping. Adds both owner_id and entity_id columns. Enables AuthzDirectOwner, AuthzEntityMembership, and AuthzOrgHierarchy authorization. Particularly useful for OrgHierarchy where a user owns a row (owner_id) within an entity (entity_id), and managers above can see subordinate-owned records via the hierarchy closure table. */
|
|
111
|
+
export interface DataOwnershipInEntityParams {
|
|
112
|
+
owner_field_name?: string;
|
|
113
|
+
entity_field_name?: string;
|
|
114
|
+
include_id?: boolean;
|
|
115
|
+
include_user_fk?: boolean;
|
|
101
116
|
}
|
|
102
|
-
/**
|
|
103
|
-
export interface
|
|
117
|
+
/** Adds user tracking for creates/updates with created_by and updated_by columns. */
|
|
118
|
+
export interface DataPeoplestampsParams {
|
|
119
|
+
created_by_field?: string;
|
|
120
|
+
updated_by_field?: string;
|
|
121
|
+
include_id?: boolean;
|
|
122
|
+
include_user_fk?: boolean;
|
|
123
|
+
}
|
|
124
|
+
/** Adds publish state columns (is_published, published_at) for content visibility. Enables AuthzPublishable and AuthzTemporal authorization. */
|
|
125
|
+
export interface DataPublishableParams {
|
|
126
|
+
is_published_field?: string;
|
|
127
|
+
published_at_field?: string;
|
|
128
|
+
include_id?: boolean;
|
|
129
|
+
}
|
|
130
|
+
/** Auto-generates URL-friendly slugs from field values on insert/update. Attaches BEFORE INSERT and BEFORE UPDATE triggers that call inflection.slugify() on the target field. References fields by name in data jsonb. */
|
|
131
|
+
export interface DataSlugParams {
|
|
132
|
+
field_name: string;
|
|
133
|
+
source_field_name?: string;
|
|
134
|
+
}
|
|
135
|
+
/** Adds soft delete support with deleted_at and is_deleted columns. */
|
|
136
|
+
export interface DataSoftDeleteParams {
|
|
137
|
+
deleted_at_field?: string;
|
|
138
|
+
is_deleted_field?: string;
|
|
139
|
+
include_id?: boolean;
|
|
140
|
+
}
|
|
141
|
+
/** Adds a status column with B-tree index for efficient equality filtering and sorting. Optionally constrains values via CHECK constraint when allowed_values is provided. */
|
|
142
|
+
export interface DataStatusFieldParams {
|
|
104
143
|
field_name?: string;
|
|
144
|
+
type?: string;
|
|
145
|
+
default_value?: string;
|
|
146
|
+
is_required?: boolean;
|
|
147
|
+
allowed_values?: string[];
|
|
105
148
|
}
|
|
106
|
-
/**
|
|
107
|
-
export interface
|
|
108
|
-
|
|
149
|
+
/** Adds a citext[] tags column with GIN index for efficient array containment queries (@>, &&). Standard tagging pattern for categorization and filtering. */
|
|
150
|
+
export interface DataTagsParams {
|
|
151
|
+
field_name?: string;
|
|
152
|
+
default_value?: string;
|
|
153
|
+
is_required?: boolean;
|
|
109
154
|
}
|
|
110
|
-
/**
|
|
111
|
-
export interface
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
155
|
+
/** Adds automatic timestamp tracking with created_at and updated_at columns. */
|
|
156
|
+
export interface DataTimestampsParams {
|
|
157
|
+
created_at_field?: string;
|
|
158
|
+
updated_at_field?: string;
|
|
159
|
+
include_id?: boolean;
|
|
115
160
|
}
|
|
116
|
-
/** Creates a user profiles table with standard profile fields (profile_picture, bio, first_name, last_name, tags, desired). Uses AuthzDirectOwner for edit access and AuthzAllowAll for select. */
|
|
117
|
-
export type TableUserProfilesParams = {};
|
|
118
161
|
/** Creates an organization settings table with standard business fields (legal_name, address fields). Uses AuthzEntityMembership for access control. */
|
|
119
162
|
export type TableOrganizationSettingsParams = {};
|
|
163
|
+
/** Creates a user profiles table with standard profile fields (profile_picture, bio, first_name, last_name, tags, desired). Uses AuthzDirectOwner for edit access and AuthzAllowAll for select. */
|
|
164
|
+
export type TableUserProfilesParams = {};
|
|
120
165
|
/** Creates a user settings table for user-specific configuration. Uses AuthzDirectOwner for access control. */
|
|
121
166
|
export type TableUserSettingsParams = {};
|
|
122
|
-
/**
|
|
123
|
-
export interface
|
|
124
|
-
field_name
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
[key: string]: unknown;
|
|
130
|
-
};
|
|
131
|
-
include_stale_field?: boolean;
|
|
132
|
-
source_fields?: string[];
|
|
133
|
-
enqueue_job?: boolean;
|
|
134
|
-
job_task_name?: string;
|
|
135
|
-
stale_strategy?: 'column' | 'null' | 'hash';
|
|
136
|
-
chunks?: {
|
|
137
|
-
content_field_name?: string;
|
|
138
|
-
chunk_size?: number;
|
|
139
|
-
chunk_overlap?: number;
|
|
140
|
-
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
141
|
-
metadata_fields?: {
|
|
142
|
-
[key: string]: unknown;
|
|
143
|
-
};
|
|
144
|
-
enqueue_chunking_job?: boolean;
|
|
145
|
-
chunking_task_name?: string;
|
|
146
|
-
};
|
|
167
|
+
/** 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. */
|
|
168
|
+
export interface SearchBm25Params {
|
|
169
|
+
field_name: string;
|
|
170
|
+
text_config?: string;
|
|
171
|
+
k1?: number;
|
|
172
|
+
b?: number;
|
|
173
|
+
search_score_weight?: number;
|
|
147
174
|
}
|
|
148
175
|
/** 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. */
|
|
149
176
|
export interface SearchFullTextParams {
|
|
@@ -155,13 +182,31 @@ export interface SearchFullTextParams {
|
|
|
155
182
|
}[];
|
|
156
183
|
search_score_weight?: number;
|
|
157
184
|
}
|
|
158
|
-
/**
|
|
159
|
-
export interface
|
|
160
|
-
field_name
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
185
|
+
/** Adds a PostGIS geometry or geography column with a spatial index (GiST or SP-GiST). Supports configurable geometry types (Point, Polygon, etc.), SRID, and dimensionality. The graphile-postgis plugin auto-detects geometry/geography columns by codec type for spatial filtering (ST_Contains, ST_DWithin, bbox operators). */
|
|
186
|
+
export interface SearchSpatialParams {
|
|
187
|
+
field_name?: string;
|
|
188
|
+
geometry_type?: 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Geometry';
|
|
189
|
+
srid?: number;
|
|
190
|
+
dimension?: 2 | 3 | 4;
|
|
191
|
+
use_geography?: boolean;
|
|
192
|
+
index_method?: 'gist' | 'spgist';
|
|
193
|
+
}
|
|
194
|
+
/** 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. */
|
|
195
|
+
export interface SearchSpatialAggregateParams {
|
|
196
|
+
field_name?: string;
|
|
197
|
+
source_table_id: string;
|
|
198
|
+
source_geom_field?: string;
|
|
199
|
+
source_fk_field: string;
|
|
200
|
+
aggregate_function?: 'union' | 'collect' | 'convex_hull' | 'concave_hull';
|
|
201
|
+
geometry_type?: 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Geometry';
|
|
202
|
+
srid?: number;
|
|
203
|
+
dimension?: 2 | 3 | 4;
|
|
204
|
+
use_geography?: boolean;
|
|
205
|
+
index_method?: 'gist' | 'spgist';
|
|
206
|
+
}
|
|
207
|
+
/** Creates GIN trigram indexes (gin_trgm_ops) on specified text/citext fields for fuzzy LIKE/ILIKE/similarity search. Adds @trgmSearch smart tag for PostGraphile integration. Fields must already exist on the table. */
|
|
208
|
+
export interface SearchTrgmParams {
|
|
209
|
+
fields: string[];
|
|
165
210
|
}
|
|
166
211
|
/** Composite node type that orchestrates multiple search modalities (full-text search, BM25, embeddings, trigram) on a single table. Configures per-table search score weights, normalization strategy, and recency boost via the @searchConfig smart tag. */
|
|
167
212
|
export interface SearchUnifiedParams {
|
|
@@ -211,32 +256,45 @@ export interface SearchUnifiedParams {
|
|
|
211
256
|
boost_recency_decay?: number;
|
|
212
257
|
};
|
|
213
258
|
}
|
|
214
|
-
/** Adds a
|
|
215
|
-
export interface
|
|
216
|
-
field_name?: string;
|
|
217
|
-
geometry_type?: 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Geometry';
|
|
218
|
-
srid?: number;
|
|
219
|
-
dimension?: 2 | 3 | 4;
|
|
220
|
-
use_geography?: boolean;
|
|
221
|
-
index_method?: 'gist' | 'spgist';
|
|
222
|
-
}
|
|
223
|
-
/** 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. */
|
|
224
|
-
export interface SearchSpatialAggregateParams {
|
|
259
|
+
/** Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip), stale tracking strategies (column, null, hash), and automatic job enqueue triggers for embedding generation. */
|
|
260
|
+
export interface SearchVectorParams {
|
|
225
261
|
field_name?: string;
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
262
|
+
dimensions?: number;
|
|
263
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
264
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
265
|
+
index_options?: {
|
|
266
|
+
[key: string]: unknown;
|
|
267
|
+
};
|
|
268
|
+
include_stale_field?: boolean;
|
|
269
|
+
source_fields?: string[];
|
|
270
|
+
enqueue_job?: boolean;
|
|
271
|
+
job_task_name?: string;
|
|
272
|
+
stale_strategy?: 'column' | 'null' | 'hash';
|
|
273
|
+
chunks?: {
|
|
274
|
+
content_field_name?: string;
|
|
275
|
+
chunk_size?: number;
|
|
276
|
+
chunk_overlap?: number;
|
|
277
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
278
|
+
metadata_fields?: {
|
|
279
|
+
[key: string]: unknown;
|
|
280
|
+
};
|
|
281
|
+
enqueue_chunking_job?: boolean;
|
|
282
|
+
chunking_task_name?: string;
|
|
283
|
+
};
|
|
235
284
|
}
|
|
236
|
-
/**
|
|
237
|
-
export
|
|
238
|
-
|
|
285
|
+
/** Allows all access. Generates TRUE expression. */
|
|
286
|
+
export type AuthzAllowAllParams = {};
|
|
287
|
+
/** Composite authorization policy that combines multiple authorization nodes using boolean logic (AND/OR). The data field contains a JSONB AST with nested authorization nodes. */
|
|
288
|
+
export interface AuthzCompositeParams {
|
|
289
|
+
BoolExpr?: {
|
|
290
|
+
boolop?: 'AND_EXPR' | 'OR_EXPR' | 'NOT_EXPR';
|
|
291
|
+
args?: {
|
|
292
|
+
[key: string]: unknown;
|
|
293
|
+
}[];
|
|
294
|
+
};
|
|
239
295
|
}
|
|
296
|
+
/** Denies all access. Generates FALSE expression. */
|
|
297
|
+
export type AuthzDenyAllParams = {};
|
|
240
298
|
/** Direct equality comparison between a table column and the current user ID. Simplest authorization pattern with no subqueries. */
|
|
241
299
|
export interface AuthzDirectOwnerParams {
|
|
242
300
|
entity_field: string;
|
|
@@ -245,6 +303,21 @@ export interface AuthzDirectOwnerParams {
|
|
|
245
303
|
export interface AuthzDirectOwnerAnyParams {
|
|
246
304
|
entity_fields: string[];
|
|
247
305
|
}
|
|
306
|
+
/** Membership check scoped by a field on the row through the SPRT table. Verifies user has membership in the entity referenced by the row. */
|
|
307
|
+
export interface AuthzEntityMembershipParams {
|
|
308
|
+
entity_field: string;
|
|
309
|
+
sel_field?: string;
|
|
310
|
+
membership_type?: number | string;
|
|
311
|
+
entity_type?: string;
|
|
312
|
+
permission?: string;
|
|
313
|
+
permissions?: string[];
|
|
314
|
+
is_admin?: boolean;
|
|
315
|
+
is_owner?: boolean;
|
|
316
|
+
}
|
|
317
|
+
/** Check if current user is in an array column on the same row. */
|
|
318
|
+
export interface AuthzMemberListParams {
|
|
319
|
+
array_field: string;
|
|
320
|
+
}
|
|
248
321
|
/** Membership check that verifies the user has membership (optionally with specific permission) without binding to any entity from the row. Uses EXISTS subquery against SPRT table. */
|
|
249
322
|
export interface AuthzMembershipParams {
|
|
250
323
|
membership_type?: number | string;
|
|
@@ -254,19 +327,39 @@ export interface AuthzMembershipParams {
|
|
|
254
327
|
is_admin?: boolean;
|
|
255
328
|
is_owner?: boolean;
|
|
256
329
|
}
|
|
257
|
-
/**
|
|
258
|
-
export interface
|
|
330
|
+
/** Restrictive policy that blocks read-only members from mutations. Checks actor_id + is_read_only IS NOT TRUE on the SPRT. Designed to run as a restrictive counterpart after a permissive AuthzEntityMembership policy has already verified membership. */
|
|
331
|
+
export interface AuthzNotReadOnlyParams {
|
|
259
332
|
entity_field: string;
|
|
260
333
|
membership_type?: number | string;
|
|
334
|
+
}
|
|
335
|
+
/** Organizational hierarchy visibility using closure table. Managers can see subordinate data or subordinates can see manager data. */
|
|
336
|
+
export interface AuthzOrgHierarchyParams {
|
|
337
|
+
direction: 'up' | 'down';
|
|
338
|
+
entity_field?: string;
|
|
339
|
+
anchor_field: string;
|
|
340
|
+
max_depth?: number;
|
|
341
|
+
}
|
|
342
|
+
/** Peer visibility through shared entity membership. Authorizes access to user-owned rows when the owner and current user are both members of the same entity. Self-joins the SPRT table to find peers. */
|
|
343
|
+
export interface AuthzPeerOwnershipParams {
|
|
344
|
+
owner_field: string;
|
|
345
|
+
membership_type?: number | string;
|
|
261
346
|
entity_type?: string;
|
|
262
347
|
permission?: string;
|
|
263
348
|
permissions?: string[];
|
|
264
349
|
is_admin?: boolean;
|
|
265
350
|
is_owner?: boolean;
|
|
266
351
|
}
|
|
352
|
+
/** Published state access control. Restricts access to records that are published. */
|
|
353
|
+
export interface AuthzPublishableParams {
|
|
354
|
+
is_published_field?: string;
|
|
355
|
+
published_at_field?: string;
|
|
356
|
+
require_published_at?: boolean;
|
|
357
|
+
}
|
|
267
358
|
/** JOIN-based membership verification through related tables. Joins SPRT table with another table to verify membership. */
|
|
268
359
|
export interface AuthzRelatedEntityMembershipParams {
|
|
269
360
|
entity_field: string;
|
|
361
|
+
sel_field?: string;
|
|
362
|
+
sprt_join_field?: string;
|
|
270
363
|
membership_type?: number | string;
|
|
271
364
|
entity_type?: string;
|
|
272
365
|
obj_table_id?: string;
|
|
@@ -279,30 +372,6 @@ export interface AuthzRelatedEntityMembershipParams {
|
|
|
279
372
|
is_admin?: boolean;
|
|
280
373
|
is_owner?: boolean;
|
|
281
374
|
}
|
|
282
|
-
/** Organizational hierarchy visibility using closure table. Managers can see subordinate data or subordinates can see manager data. */
|
|
283
|
-
export interface AuthzOrgHierarchyParams {
|
|
284
|
-
direction: 'up' | 'down';
|
|
285
|
-
entity_field?: string;
|
|
286
|
-
anchor_field: string;
|
|
287
|
-
max_depth?: number;
|
|
288
|
-
}
|
|
289
|
-
/** Time-window based access control. Restricts access based on valid_from and/or valid_until timestamps. At least one of valid_from_field or valid_until_field must be provided. */
|
|
290
|
-
export interface AuthzTemporalParams {
|
|
291
|
-
valid_from_field?: string;
|
|
292
|
-
valid_until_field?: string;
|
|
293
|
-
valid_from_inclusive?: boolean;
|
|
294
|
-
valid_until_inclusive?: boolean;
|
|
295
|
-
}
|
|
296
|
-
/** Published state access control. Restricts access to records that are published. */
|
|
297
|
-
export interface AuthzPublishableParams {
|
|
298
|
-
is_published_field?: string;
|
|
299
|
-
published_at_field?: string;
|
|
300
|
-
require_published_at?: boolean;
|
|
301
|
-
}
|
|
302
|
-
/** Check if current user is in an array column on the same row. */
|
|
303
|
-
export interface AuthzMemberListParams {
|
|
304
|
-
array_field: string;
|
|
305
|
-
}
|
|
306
375
|
/** Array membership check in a related table. */
|
|
307
376
|
export interface AuthzRelatedMemberListParams {
|
|
308
377
|
owned_schema: string;
|
|
@@ -311,34 +380,6 @@ export interface AuthzRelatedMemberListParams {
|
|
|
311
380
|
owned_table_ref_key: string;
|
|
312
381
|
this_object_key: string;
|
|
313
382
|
}
|
|
314
|
-
/** Allows all access. Generates TRUE expression. */
|
|
315
|
-
export type AuthzAllowAllParams = {};
|
|
316
|
-
/** Denies all access. Generates FALSE expression. */
|
|
317
|
-
export type AuthzDenyAllParams = {};
|
|
318
|
-
/** Composite authorization policy that combines multiple authorization nodes using boolean logic (AND/OR). The data field contains a JSONB AST with nested authorization nodes. */
|
|
319
|
-
export interface AuthzCompositeParams {
|
|
320
|
-
BoolExpr?: {
|
|
321
|
-
boolop?: 'AND_EXPR' | 'OR_EXPR' | 'NOT_EXPR';
|
|
322
|
-
args?: {
|
|
323
|
-
[key: string]: unknown;
|
|
324
|
-
}[];
|
|
325
|
-
};
|
|
326
|
-
}
|
|
327
|
-
/** Restrictive policy that blocks read-only members from mutations. Checks actor_id + is_read_only IS NOT TRUE on the SPRT. Designed to run as a restrictive counterpart after a permissive AuthzEntityMembership policy has already verified membership. */
|
|
328
|
-
export interface AuthzNotReadOnlyParams {
|
|
329
|
-
entity_field: string;
|
|
330
|
-
membership_type?: number | string;
|
|
331
|
-
}
|
|
332
|
-
/** Peer visibility through shared entity membership. Authorizes access to user-owned rows when the owner and current user are both members of the same entity. Self-joins the SPRT table to find peers. */
|
|
333
|
-
export interface AuthzPeerOwnershipParams {
|
|
334
|
-
owner_field: string;
|
|
335
|
-
membership_type?: number | string;
|
|
336
|
-
entity_type?: string;
|
|
337
|
-
permission?: string;
|
|
338
|
-
permissions?: string[];
|
|
339
|
-
is_admin?: boolean;
|
|
340
|
-
is_owner?: boolean;
|
|
341
|
-
}
|
|
342
383
|
/** Peer visibility through shared entity membership via a related table. Like AuthzPeerOwnership but the owning user is resolved through a FK JOIN to a related table. Combines SPRT self-join with object table JOIN. */
|
|
343
384
|
export interface AuthzRelatedPeerOwnershipParams {
|
|
344
385
|
entity_field: string;
|
|
@@ -355,6 +396,13 @@ export interface AuthzRelatedPeerOwnershipParams {
|
|
|
355
396
|
is_admin?: boolean;
|
|
356
397
|
is_owner?: boolean;
|
|
357
398
|
}
|
|
399
|
+
/** Time-window based access control. Restricts access based on valid_from and/or valid_until timestamps. At least one of valid_from_field or valid_until_field must be provided. */
|
|
400
|
+
export interface AuthzTemporalParams {
|
|
401
|
+
valid_from_field?: string;
|
|
402
|
+
valid_until_field?: string;
|
|
403
|
+
valid_from_inclusive?: boolean;
|
|
404
|
+
valid_until_inclusive?: boolean;
|
|
405
|
+
}
|
|
358
406
|
/** Creates a foreign key field on the source table referencing the target table. Auto-derives the FK field name from the target table name using inflection (e.g., projects derives project_id). delete_action is required and must be explicitly provided by the caller. */
|
|
359
407
|
export interface RelationBelongsToParams {
|
|
360
408
|
source_table_id: string;
|
|
@@ -363,16 +411,16 @@ export interface RelationBelongsToParams {
|
|
|
363
411
|
delete_action: 'c' | 'r' | 'n' | 'd' | 'a';
|
|
364
412
|
is_required?: boolean;
|
|
365
413
|
}
|
|
366
|
-
/** Creates a foreign key field
|
|
367
|
-
export interface
|
|
414
|
+
/** Creates a foreign key field on the target table referencing the source table. Inverse of RelationBelongsTo — same FK, different perspective. "projects has many tasks" creates tasks.project_id. Auto-derives the FK field name from the source table name using inflection. delete_action is required and must be explicitly provided by the caller. */
|
|
415
|
+
export interface RelationHasManyParams {
|
|
368
416
|
source_table_id: string;
|
|
369
417
|
target_table_id: string;
|
|
370
418
|
field_name?: string;
|
|
371
419
|
delete_action: 'c' | 'r' | 'n' | 'd' | 'a';
|
|
372
420
|
is_required?: boolean;
|
|
373
421
|
}
|
|
374
|
-
/** Creates a foreign key field
|
|
375
|
-
export interface
|
|
422
|
+
/** Creates a foreign key field with a unique constraint on the source table referencing the target table. Enforces 1:1 cardinality. Auto-derives the FK field name from the target table name using inflection. delete_action is required and must be explicitly provided by the caller. */
|
|
423
|
+
export interface RelationHasOneParams {
|
|
376
424
|
source_table_id: string;
|
|
377
425
|
target_table_id: string;
|
|
378
426
|
field_name?: string;
|
|
@@ -416,11 +464,21 @@ export interface RelationSpatialParams {
|
|
|
416
464
|
operator: 'st_contains' | 'st_within' | 'st_intersects' | 'st_covers' | 'st_coveredby' | 'st_overlaps' | 'st_touches' | 'st_dwithin';
|
|
417
465
|
param_name?: string;
|
|
418
466
|
}
|
|
419
|
-
/**
|
|
420
|
-
export interface
|
|
467
|
+
/** View with GROUP BY and aggregate functions. Useful for summary/reporting views. */
|
|
468
|
+
export interface ViewAggregatedParams {
|
|
421
469
|
source_table_id: string;
|
|
422
|
-
|
|
423
|
-
|
|
470
|
+
group_by_fields: string[];
|
|
471
|
+
aggregates: {
|
|
472
|
+
function: 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX';
|
|
473
|
+
field?: string;
|
|
474
|
+
alias: string;
|
|
475
|
+
}[];
|
|
476
|
+
}
|
|
477
|
+
/** Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.). */
|
|
478
|
+
export interface ViewCompositeParams {
|
|
479
|
+
query_ast: {
|
|
480
|
+
[key: string]: unknown;
|
|
481
|
+
};
|
|
424
482
|
}
|
|
425
483
|
/** Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter. */
|
|
426
484
|
export interface ViewFilteredTableParams {
|
|
@@ -445,21 +503,11 @@ export interface ViewJoinedTablesParams {
|
|
|
445
503
|
}[];
|
|
446
504
|
field_ids?: string[];
|
|
447
505
|
}
|
|
448
|
-
/**
|
|
449
|
-
export interface
|
|
506
|
+
/** Simple column selection from a single source table. Projects all or specific fields. */
|
|
507
|
+
export interface ViewTableProjectionParams {
|
|
450
508
|
source_table_id: string;
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
function: 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX';
|
|
454
|
-
field?: string;
|
|
455
|
-
alias: string;
|
|
456
|
-
}[];
|
|
457
|
-
}
|
|
458
|
-
/** Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.). */
|
|
459
|
-
export interface ViewCompositeParams {
|
|
460
|
-
query_ast: {
|
|
461
|
-
[key: string]: unknown;
|
|
462
|
-
};
|
|
509
|
+
field_ids?: string[];
|
|
510
|
+
field_names?: string[];
|
|
463
511
|
}
|
|
464
512
|
/** A custom field (column) to add to a blueprint table. */
|
|
465
513
|
export interface BlueprintField {
|
|
@@ -477,7 +525,7 @@ export interface BlueprintField {
|
|
|
477
525
|
/** An RLS policy entry for a blueprint table. Uses $type to match the blueprint JSON convention. */
|
|
478
526
|
export interface BlueprintPolicy {
|
|
479
527
|
/** Authz* policy type name (e.g., "AuthzDirectOwner", "AuthzAllowAll"). */
|
|
480
|
-
$type: '
|
|
528
|
+
$type: 'AuthzAllowAll' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzMembership' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal';
|
|
481
529
|
/** Privileges this policy applies to (e.g., ["select"], ["insert", "update", "delete"]). */
|
|
482
530
|
privileges?: string[];
|
|
483
531
|
/** Whether this policy is permissive (true) or restrictive (false). Defaults to true. */
|
|
@@ -601,11 +649,10 @@ export interface BlueprintStorageConfig {
|
|
|
601
649
|
default_max_file_size?: number;
|
|
602
650
|
/** CORS allowed origins for the storage module. */
|
|
603
651
|
allowed_origins?: string[];
|
|
604
|
-
/** Per-table overrides for storage tables. Each key targets a specific storage table (files, buckets
|
|
652
|
+
/** Per-table overrides for storage tables. Each key targets a specific storage table (files, buckets) and uses the same shape as table_provision: { nodes, fields, grants, use_rls, policies }. Fanned out to secure_table_provision targeting the corresponding table. When a key includes policies[], those REPLACE the default storage policies for that table; tables without a key still get defaults. */
|
|
605
653
|
provisions?: {
|
|
606
654
|
files?: BlueprintEntityTableProvision;
|
|
607
655
|
buckets?: BlueprintEntityTableProvision;
|
|
608
|
-
upload_requests?: BlueprintEntityTableProvision;
|
|
609
656
|
};
|
|
610
657
|
}
|
|
611
658
|
/** Override object for the entity table created by a BlueprintEntityType. Shape mirrors BlueprintTable / secure_table_provision vocabulary. When supplied, policies[] replaces the default entity-table policies entirely. */
|
|
@@ -644,7 +691,7 @@ export interface BlueprintEntityType {
|
|
|
644
691
|
has_profiles?: boolean;
|
|
645
692
|
/** Whether to provision a levels module for this entity type. Defaults to false. */
|
|
646
693
|
has_levels?: boolean;
|
|
647
|
-
/** Whether to provision a storage module (buckets, files
|
|
694
|
+
/** Whether to provision a storage module (buckets, files tables) for this entity type. Defaults to false. */
|
|
648
695
|
has_storage?: boolean;
|
|
649
696
|
/** Whether to provision entity-scoped invite tables ({prefix}_invites, {prefix}_claimed_invites) and a submit_{prefix}_invite_code() function. Defaults to false. */
|
|
650
697
|
has_invites?: boolean;
|
|
@@ -656,139 +703,142 @@ export interface BlueprintEntityType {
|
|
|
656
703
|
storage?: BlueprintStorageConfig;
|
|
657
704
|
}
|
|
658
705
|
/** String shorthand -- just the node type name. */
|
|
659
|
-
export type BlueprintNodeShorthand = '
|
|
706
|
+
export type BlueprintNodeShorthand = 'AuthzAllowAll' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzMembership' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal' | 'DataCompositeField' | 'DataDirectOwner' | 'DataEntityMembership' | 'DataForceCurrentUser' | 'DataId' | 'DataImageEmbedding' | 'DataImmutableFields' | 'DataInflection' | 'DataInheritFromParent' | 'DataJobTrigger' | 'DataJsonb' | 'DataOwnedFields' | 'DataOwnershipInEntity' | 'DataPeoplestamps' | 'DataPublishable' | 'DataSlug' | 'DataSoftDelete' | 'DataStatusField' | 'DataTags' | 'DataTimestamps' | 'SearchBm25' | 'SearchFullText' | 'SearchSpatial' | 'SearchSpatialAggregate' | 'SearchTrgm' | 'SearchUnified' | 'SearchVector' | 'TableOrganizationSettings' | 'TableUserProfiles' | 'TableUserSettings';
|
|
660
707
|
/** Object form -- { $type, data } with typed parameters. */
|
|
661
708
|
export type BlueprintNodeObject = {
|
|
709
|
+
$type: 'AuthzAllowAll';
|
|
710
|
+
data?: Record<string, never>;
|
|
711
|
+
} | {
|
|
712
|
+
$type: 'AuthzComposite';
|
|
713
|
+
data: AuthzCompositeParams;
|
|
714
|
+
} | {
|
|
715
|
+
$type: 'AuthzDenyAll';
|
|
716
|
+
data?: Record<string, never>;
|
|
717
|
+
} | {
|
|
662
718
|
$type: 'AuthzDirectOwner';
|
|
663
719
|
data: AuthzDirectOwnerParams;
|
|
664
720
|
} | {
|
|
665
721
|
$type: 'AuthzDirectOwnerAny';
|
|
666
722
|
data: AuthzDirectOwnerAnyParams;
|
|
667
|
-
} | {
|
|
668
|
-
$type: 'AuthzMembership';
|
|
669
|
-
data: AuthzMembershipParams;
|
|
670
723
|
} | {
|
|
671
724
|
$type: 'AuthzEntityMembership';
|
|
672
725
|
data: AuthzEntityMembershipParams;
|
|
673
726
|
} | {
|
|
674
|
-
$type: '
|
|
675
|
-
data:
|
|
727
|
+
$type: 'AuthzMemberList';
|
|
728
|
+
data: AuthzMemberListParams;
|
|
729
|
+
} | {
|
|
730
|
+
$type: 'AuthzMembership';
|
|
731
|
+
data: AuthzMembershipParams;
|
|
732
|
+
} | {
|
|
733
|
+
$type: 'AuthzNotReadOnly';
|
|
734
|
+
data: AuthzNotReadOnlyParams;
|
|
676
735
|
} | {
|
|
677
736
|
$type: 'AuthzOrgHierarchy';
|
|
678
737
|
data: AuthzOrgHierarchyParams;
|
|
679
738
|
} | {
|
|
680
|
-
$type: '
|
|
681
|
-
data:
|
|
739
|
+
$type: 'AuthzPeerOwnership';
|
|
740
|
+
data: AuthzPeerOwnershipParams;
|
|
682
741
|
} | {
|
|
683
742
|
$type: 'AuthzPublishable';
|
|
684
743
|
data: AuthzPublishableParams;
|
|
685
744
|
} | {
|
|
686
|
-
$type: '
|
|
687
|
-
data:
|
|
745
|
+
$type: 'AuthzRelatedEntityMembership';
|
|
746
|
+
data: AuthzRelatedEntityMembershipParams;
|
|
688
747
|
} | {
|
|
689
748
|
$type: 'AuthzRelatedMemberList';
|
|
690
749
|
data: AuthzRelatedMemberListParams;
|
|
691
750
|
} | {
|
|
692
|
-
$type: '
|
|
693
|
-
data
|
|
751
|
+
$type: 'AuthzRelatedPeerOwnership';
|
|
752
|
+
data: AuthzRelatedPeerOwnershipParams;
|
|
694
753
|
} | {
|
|
695
|
-
$type: '
|
|
696
|
-
data
|
|
754
|
+
$type: 'AuthzTemporal';
|
|
755
|
+
data: AuthzTemporalParams;
|
|
697
756
|
} | {
|
|
698
|
-
$type: '
|
|
699
|
-
data:
|
|
757
|
+
$type: 'DataCompositeField';
|
|
758
|
+
data: DataCompositeFieldParams;
|
|
700
759
|
} | {
|
|
701
|
-
$type: '
|
|
702
|
-
data:
|
|
760
|
+
$type: 'DataDirectOwner';
|
|
761
|
+
data: DataDirectOwnerParams;
|
|
703
762
|
} | {
|
|
704
|
-
$type: '
|
|
705
|
-
data:
|
|
763
|
+
$type: 'DataEntityMembership';
|
|
764
|
+
data: DataEntityMembershipParams;
|
|
706
765
|
} | {
|
|
707
|
-
$type: '
|
|
708
|
-
data:
|
|
766
|
+
$type: 'DataForceCurrentUser';
|
|
767
|
+
data: DataForceCurrentUserParams;
|
|
709
768
|
} | {
|
|
710
769
|
$type: 'DataId';
|
|
711
770
|
data: DataIdParams;
|
|
712
771
|
} | {
|
|
713
|
-
$type: '
|
|
714
|
-
data:
|
|
772
|
+
$type: 'DataImageEmbedding';
|
|
773
|
+
data: DataImageEmbeddingParams;
|
|
715
774
|
} | {
|
|
716
|
-
$type: '
|
|
717
|
-
data:
|
|
775
|
+
$type: 'DataImmutableFields';
|
|
776
|
+
data: DataImmutableFieldsParams;
|
|
777
|
+
} | {
|
|
778
|
+
$type: 'DataInflection';
|
|
779
|
+
data: DataInflectionParams;
|
|
780
|
+
} | {
|
|
781
|
+
$type: 'DataInheritFromParent';
|
|
782
|
+
data: DataInheritFromParentParams;
|
|
783
|
+
} | {
|
|
784
|
+
$type: 'DataJobTrigger';
|
|
785
|
+
data: DataJobTriggerParams;
|
|
786
|
+
} | {
|
|
787
|
+
$type: 'DataJsonb';
|
|
788
|
+
data: DataJsonbParams;
|
|
789
|
+
} | {
|
|
790
|
+
$type: 'DataOwnedFields';
|
|
791
|
+
data: DataOwnedFieldsParams;
|
|
718
792
|
} | {
|
|
719
793
|
$type: 'DataOwnershipInEntity';
|
|
720
794
|
data: DataOwnershipInEntityParams;
|
|
721
|
-
} | {
|
|
722
|
-
$type: 'DataTimestamps';
|
|
723
|
-
data: DataTimestampsParams;
|
|
724
795
|
} | {
|
|
725
796
|
$type: 'DataPeoplestamps';
|
|
726
797
|
data: DataPeoplestampsParams;
|
|
727
798
|
} | {
|
|
728
799
|
$type: 'DataPublishable';
|
|
729
800
|
data: DataPublishableParams;
|
|
801
|
+
} | {
|
|
802
|
+
$type: 'DataSlug';
|
|
803
|
+
data: DataSlugParams;
|
|
730
804
|
} | {
|
|
731
805
|
$type: 'DataSoftDelete';
|
|
732
806
|
data: DataSoftDeleteParams;
|
|
733
807
|
} | {
|
|
734
|
-
$type: '
|
|
735
|
-
data:
|
|
808
|
+
$type: 'DataStatusField';
|
|
809
|
+
data: DataStatusFieldParams;
|
|
736
810
|
} | {
|
|
737
|
-
$type: '
|
|
738
|
-
data:
|
|
811
|
+
$type: 'DataTags';
|
|
812
|
+
data: DataTagsParams;
|
|
813
|
+
} | {
|
|
814
|
+
$type: 'DataTimestamps';
|
|
815
|
+
data: DataTimestampsParams;
|
|
739
816
|
} | {
|
|
740
817
|
$type: 'SearchBm25';
|
|
741
818
|
data: SearchBm25Params;
|
|
742
819
|
} | {
|
|
743
|
-
$type: '
|
|
744
|
-
data:
|
|
820
|
+
$type: 'SearchFullText';
|
|
821
|
+
data: SearchFullTextParams;
|
|
745
822
|
} | {
|
|
746
823
|
$type: 'SearchSpatial';
|
|
747
824
|
data: SearchSpatialParams;
|
|
748
825
|
} | {
|
|
749
826
|
$type: 'SearchSpatialAggregate';
|
|
750
827
|
data: SearchSpatialAggregateParams;
|
|
751
|
-
} | {
|
|
752
|
-
$type: 'DataJobTrigger';
|
|
753
|
-
data: DataJobTriggerParams;
|
|
754
|
-
} | {
|
|
755
|
-
$type: 'DataTags';
|
|
756
|
-
data: DataTagsParams;
|
|
757
|
-
} | {
|
|
758
|
-
$type: 'DataStatusField';
|
|
759
|
-
data: DataStatusFieldParams;
|
|
760
|
-
} | {
|
|
761
|
-
$type: 'DataJsonb';
|
|
762
|
-
data: DataJsonbParams;
|
|
763
828
|
} | {
|
|
764
829
|
$type: 'SearchTrgm';
|
|
765
830
|
data: SearchTrgmParams;
|
|
766
831
|
} | {
|
|
767
|
-
$type: '
|
|
768
|
-
data:
|
|
769
|
-
} | {
|
|
770
|
-
$type: 'DataInflection';
|
|
771
|
-
data: DataInflectionParams;
|
|
772
|
-
} | {
|
|
773
|
-
$type: 'DataOwnedFields';
|
|
774
|
-
data: DataOwnedFieldsParams;
|
|
775
|
-
} | {
|
|
776
|
-
$type: 'DataInheritFromParent';
|
|
777
|
-
data: DataInheritFromParentParams;
|
|
778
|
-
} | {
|
|
779
|
-
$type: 'DataForceCurrentUser';
|
|
780
|
-
data: DataForceCurrentUserParams;
|
|
781
|
-
} | {
|
|
782
|
-
$type: 'DataImmutableFields';
|
|
783
|
-
data: DataImmutableFieldsParams;
|
|
832
|
+
$type: 'SearchUnified';
|
|
833
|
+
data: SearchUnifiedParams;
|
|
784
834
|
} | {
|
|
785
|
-
$type: '
|
|
786
|
-
data:
|
|
835
|
+
$type: 'SearchVector';
|
|
836
|
+
data: SearchVectorParams;
|
|
787
837
|
} | {
|
|
788
|
-
$type: '
|
|
838
|
+
$type: 'TableOrganizationSettings';
|
|
789
839
|
data?: Record<string, never>;
|
|
790
840
|
} | {
|
|
791
|
-
$type: '
|
|
841
|
+
$type: 'TableUserProfiles';
|
|
792
842
|
data?: Record<string, never>;
|
|
793
843
|
} | {
|
|
794
844
|
$type: 'TableUserSettings';
|
|
@@ -804,18 +854,18 @@ export type BlueprintRelation = {
|
|
|
804
854
|
source_schema_name?: string;
|
|
805
855
|
target_schema_name?: string;
|
|
806
856
|
} & Partial<RelationBelongsToParams> | {
|
|
807
|
-
$type: '
|
|
857
|
+
$type: 'RelationHasMany';
|
|
808
858
|
source_table: string;
|
|
809
859
|
target_table: string;
|
|
810
860
|
source_schema_name?: string;
|
|
811
861
|
target_schema_name?: string;
|
|
812
|
-
} & Partial<
|
|
813
|
-
$type: '
|
|
862
|
+
} & Partial<RelationHasManyParams> | {
|
|
863
|
+
$type: 'RelationHasOne';
|
|
814
864
|
source_table: string;
|
|
815
865
|
target_table: string;
|
|
816
866
|
source_schema_name?: string;
|
|
817
867
|
target_schema_name?: string;
|
|
818
|
-
} & Partial<
|
|
868
|
+
} & Partial<RelationHasOneParams> | {
|
|
819
869
|
$type: 'RelationManyToMany';
|
|
820
870
|
source_table: string;
|
|
821
871
|
target_table: string;
|