@pgpm/metaschema-schema 0.16.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.
Files changed (106) hide show
  1. package/LICENSE +22 -0
  2. package/Makefile +6 -0
  3. package/README.md +324 -0
  4. package/deploy/schemas/metaschema_private/schema.sql +12 -0
  5. package/deploy/schemas/metaschema_public/schema.sql +12 -0
  6. package/deploy/schemas/metaschema_public/tables/check_constraint/table.sql +33 -0
  7. package/deploy/schemas/metaschema_public/tables/database/indexes/databases_database_unique_name_idx.sql +20 -0
  8. package/deploy/schemas/metaschema_public/tables/database/table.sql +30 -0
  9. package/deploy/schemas/metaschema_public/tables/database_extension/table.sql +23 -0
  10. package/deploy/schemas/metaschema_public/tables/extension/table.sql +28 -0
  11. package/deploy/schemas/metaschema_public/tables/field/indexes/databases_field_uniq_names_idx.sql +13 -0
  12. package/deploy/schemas/metaschema_public/tables/field/table.sql +85 -0
  13. package/deploy/schemas/metaschema_public/tables/foreign_key_constraint/table.sql +40 -0
  14. package/deploy/schemas/metaschema_public/tables/full_text_search/table.sql +31 -0
  15. package/deploy/schemas/metaschema_public/tables/index/table.sql +39 -0
  16. package/deploy/schemas/metaschema_public/tables/limit_function/table.sql +34 -0
  17. package/deploy/schemas/metaschema_public/tables/policy/table.sql +41 -0
  18. package/deploy/schemas/metaschema_public/tables/primary_key_constraint/table.sql +30 -0
  19. package/deploy/schemas/metaschema_public/tables/procedure/table.sql +32 -0
  20. package/deploy/schemas/metaschema_public/tables/rls_function/table.sql +36 -0
  21. package/deploy/schemas/metaschema_public/tables/schema/table.sql +33 -0
  22. package/deploy/schemas/metaschema_public/tables/schema_grant/table.sql +27 -0
  23. package/deploy/schemas/metaschema_public/tables/table/indexes/databases_table_unique_name_idx.sql +20 -0
  24. package/deploy/schemas/metaschema_public/tables/table/table.sql +55 -0
  25. package/deploy/schemas/metaschema_public/tables/table_grant/table.sql +27 -0
  26. package/deploy/schemas/metaschema_public/tables/trigger/table.sql +32 -0
  27. package/deploy/schemas/metaschema_public/tables/trigger_function/table.sql +23 -0
  28. package/deploy/schemas/metaschema_public/tables/unique_constraint/table.sql +37 -0
  29. package/metaschema-schema.control +7 -0
  30. package/package.json +41 -0
  31. package/pgpm.plan +29 -0
  32. package/revert/schemas/metaschema_private/schema.sql +7 -0
  33. package/revert/schemas/metaschema_public/schema.sql +6 -0
  34. package/revert/schemas/metaschema_public/tables/check_constraint/table.sql +7 -0
  35. package/revert/schemas/metaschema_public/tables/database/indexes/databases_database_unique_name_idx.sql +6 -0
  36. package/revert/schemas/metaschema_public/tables/database/table.sql +6 -0
  37. package/revert/schemas/metaschema_public/tables/database_extension/table.sql +7 -0
  38. package/revert/schemas/metaschema_public/tables/extension/table.sql +7 -0
  39. package/revert/schemas/metaschema_public/tables/field/indexes/databases_field_uniq_names_idx.sql +7 -0
  40. package/revert/schemas/metaschema_public/tables/field/table.sql +9 -0
  41. package/revert/schemas/metaschema_public/tables/foreign_key_constraint/table.sql +7 -0
  42. package/revert/schemas/metaschema_public/tables/full_text_search/table.sql +7 -0
  43. package/revert/schemas/metaschema_public/tables/index/table.sql +7 -0
  44. package/revert/schemas/metaschema_public/tables/limit_function/table.sql +7 -0
  45. package/revert/schemas/metaschema_public/tables/policy/table.sql +7 -0
  46. package/revert/schemas/metaschema_public/tables/primary_key_constraint/table.sql +7 -0
  47. package/revert/schemas/metaschema_public/tables/procedure/table.sql +7 -0
  48. package/revert/schemas/metaschema_public/tables/rls_function/table.sql +7 -0
  49. package/revert/schemas/metaschema_public/tables/schema/table.sql +7 -0
  50. package/revert/schemas/metaschema_public/tables/schema_grant/table.sql +7 -0
  51. package/revert/schemas/metaschema_public/tables/table/indexes/databases_table_unique_name_idx.sql +6 -0
  52. package/revert/schemas/metaschema_public/tables/table/table.sql +6 -0
  53. package/revert/schemas/metaschema_public/tables/table_grant/table.sql +7 -0
  54. package/revert/schemas/metaschema_public/tables/trigger/table.sql +7 -0
  55. package/revert/schemas/metaschema_public/tables/trigger_function/table.sql +7 -0
  56. package/revert/schemas/metaschema_public/tables/unique_constraint/table.sql +7 -0
  57. package/revert/schemas/services_private/schema.sql +7 -0
  58. package/revert/schemas/services_public/schema.sql +7 -0
  59. package/revert/schemas/services_public/tables/api_extensions/table.sql +7 -0
  60. package/revert/schemas/services_public/tables/api_modules/table.sql +7 -0
  61. package/revert/schemas/services_public/tables/api_schemata/table.sql +7 -0
  62. package/revert/schemas/services_public/tables/apis/table.sql +7 -0
  63. package/revert/schemas/services_public/tables/apps/table.sql +7 -0
  64. package/revert/schemas/services_public/tables/domains/table.sql +7 -0
  65. package/revert/schemas/services_public/tables/site_metadata/table.sql +7 -0
  66. package/revert/schemas/services_public/tables/site_modules/table.sql +7 -0
  67. package/revert/schemas/services_public/tables/site_themes/table.sql +7 -0
  68. package/revert/schemas/services_public/tables/sites/table.sql +7 -0
  69. package/sql/metaschema-schema--0.15.5.sql +582 -0
  70. package/verify/schemas/metaschema_private/schema.sql +7 -0
  71. package/verify/schemas/metaschema_public/schema.sql +6 -0
  72. package/verify/schemas/metaschema_public/tables/check_constraint/table.sql +7 -0
  73. package/verify/schemas/metaschema_public/tables/database/indexes/databases_database_unique_name_idx.sql +6 -0
  74. package/verify/schemas/metaschema_public/tables/database/table.sql +6 -0
  75. package/verify/schemas/metaschema_public/tables/database_extension/table.sql +7 -0
  76. package/verify/schemas/metaschema_public/tables/extension/table.sql +7 -0
  77. package/verify/schemas/metaschema_public/tables/field/indexes/databases_field_uniq_names_idx.sql +7 -0
  78. package/verify/schemas/metaschema_public/tables/field/table.sql +6 -0
  79. package/verify/schemas/metaschema_public/tables/foreign_key_constraint/table.sql +7 -0
  80. package/verify/schemas/metaschema_public/tables/full_text_search/table.sql +7 -0
  81. package/verify/schemas/metaschema_public/tables/index/table.sql +7 -0
  82. package/verify/schemas/metaschema_public/tables/limit_function/table.sql +7 -0
  83. package/verify/schemas/metaschema_public/tables/policy/table.sql +7 -0
  84. package/verify/schemas/metaschema_public/tables/primary_key_constraint/table.sql +7 -0
  85. package/verify/schemas/metaschema_public/tables/procedure/table.sql +7 -0
  86. package/verify/schemas/metaschema_public/tables/rls_function/table.sql +7 -0
  87. package/verify/schemas/metaschema_public/tables/schema/table.sql +7 -0
  88. package/verify/schemas/metaschema_public/tables/schema_grant/table.sql +7 -0
  89. package/verify/schemas/metaschema_public/tables/table/indexes/databases_table_unique_name_idx.sql +6 -0
  90. package/verify/schemas/metaschema_public/tables/table/table.sql +6 -0
  91. package/verify/schemas/metaschema_public/tables/table_grant/table.sql +7 -0
  92. package/verify/schemas/metaschema_public/tables/trigger/table.sql +7 -0
  93. package/verify/schemas/metaschema_public/tables/trigger_function/table.sql +7 -0
  94. package/verify/schemas/metaschema_public/tables/unique_constraint/table.sql +7 -0
  95. package/verify/schemas/services_private/schema.sql +7 -0
  96. package/verify/schemas/services_public/schema.sql +7 -0
  97. package/verify/schemas/services_public/tables/api_extensions/table.sql +7 -0
  98. package/verify/schemas/services_public/tables/api_modules/table.sql +7 -0
  99. package/verify/schemas/services_public/tables/api_schemata/table.sql +7 -0
  100. package/verify/schemas/services_public/tables/apis/table.sql +7 -0
  101. package/verify/schemas/services_public/tables/apps/table.sql +7 -0
  102. package/verify/schemas/services_public/tables/domains/table.sql +7 -0
  103. package/verify/schemas/services_public/tables/site_metadata/table.sql +7 -0
  104. package/verify/schemas/services_public/tables/site_modules/table.sql +7 -0
  105. package/verify/schemas/services_public/tables/site_themes/table.sql +7 -0
  106. package/verify/schemas/services_public/tables/sites/table.sql +7 -0
@@ -0,0 +1,582 @@
1
+ \echo Use "CREATE EXTENSION metaschema-schema" to load this file. \quit
2
+ CREATE SCHEMA metaschema_private;
3
+
4
+ GRANT USAGE ON SCHEMA metaschema_private TO authenticated;
5
+
6
+ ALTER DEFAULT PRIVILEGES IN SCHEMA metaschema_private
7
+ GRANT ALL ON TABLES TO authenticated;
8
+
9
+ ALTER DEFAULT PRIVILEGES IN SCHEMA metaschema_private
10
+ GRANT ALL ON SEQUENCES TO authenticated;
11
+
12
+ ALTER DEFAULT PRIVILEGES IN SCHEMA metaschema_private
13
+ GRANT ALL ON FUNCTIONS TO authenticated;
14
+
15
+ CREATE SCHEMA metaschema_public;
16
+
17
+ GRANT USAGE ON SCHEMA metaschema_public TO authenticated;
18
+
19
+ ALTER DEFAULT PRIVILEGES IN SCHEMA metaschema_public
20
+ GRANT ALL ON TABLES TO authenticated;
21
+
22
+ ALTER DEFAULT PRIVILEGES IN SCHEMA metaschema_public
23
+ GRANT ALL ON SEQUENCES TO authenticated;
24
+
25
+ ALTER DEFAULT PRIVILEGES IN SCHEMA metaschema_public
26
+ GRANT ALL ON FUNCTIONS TO authenticated;
27
+
28
+ CREATE TABLE metaschema_public.database (
29
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
30
+ owner_id uuid,
31
+ schema_hash text,
32
+ schema_name text,
33
+ private_schema_name text,
34
+ name text,
35
+ label text,
36
+ hash uuid,
37
+ UNIQUE (schema_hash),
38
+ UNIQUE (schema_name),
39
+ UNIQUE (private_schema_name)
40
+ );
41
+
42
+ ALTER TABLE metaschema_public.database
43
+ ADD CONSTRAINT db_namechk
44
+ CHECK (char_length(name) > 2);
45
+
46
+ COMMENT ON COLUMN metaschema_public.database.schema_hash IS '@omit';
47
+
48
+ CREATE TABLE metaschema_public.schema (
49
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
50
+ database_id uuid NOT NULL,
51
+ name text NOT NULL,
52
+ schema_name text NOT NULL,
53
+ label text,
54
+ description text,
55
+ CONSTRAINT db_fkey
56
+ FOREIGN KEY(database_id)
57
+ REFERENCES metaschema_public.database (id)
58
+ ON DELETE CASCADE,
59
+ UNIQUE (database_id, name),
60
+ UNIQUE (schema_name)
61
+ );
62
+
63
+ ALTER TABLE metaschema_public.schema
64
+ ADD CONSTRAINT schema_namechk
65
+ CHECK (char_length(name) > 2);
66
+
67
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.schema IS '@omit manyToMany';
68
+
69
+ CREATE INDEX schema_database_id_idx ON metaschema_public.schema (database_id);
70
+
71
+ CREATE TYPE metaschema_public.table_category AS ENUM ('core', 'module', 'app');
72
+
73
+ CREATE TABLE metaschema_public."table" (
74
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
75
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
76
+ schema_id uuid NOT NULL,
77
+ name text NOT NULL,
78
+ label text,
79
+ description text,
80
+ smart_tags jsonb,
81
+ category metaschema_public.table_category NOT NULL DEFAULT 'app',
82
+ module text NULL,
83
+ scope int NULL,
84
+ use_rls boolean NOT NULL DEFAULT false,
85
+ timestamps boolean NOT NULL DEFAULT false,
86
+ peoplestamps boolean NOT NULL DEFAULT false,
87
+ plural_name text,
88
+ singular_name text,
89
+ tags citext[] NOT NULL DEFAULT '{}',
90
+ CONSTRAINT db_fkey
91
+ FOREIGN KEY(database_id)
92
+ REFERENCES metaschema_public.database (id)
93
+ ON DELETE CASCADE,
94
+ CONSTRAINT schema_fkey
95
+ FOREIGN KEY(schema_id)
96
+ REFERENCES metaschema_public.schema (id)
97
+ ON DELETE CASCADE,
98
+ UNIQUE (database_id, name)
99
+ );
100
+
101
+ ALTER TABLE metaschema_public."table"
102
+ ADD COLUMN inherits_id uuid
103
+ NULL
104
+ REFERENCES metaschema_public."table" (id);
105
+
106
+ COMMENT ON CONSTRAINT schema_fkey ON metaschema_public."table" IS '@omit manyToMany';
107
+
108
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public."table" IS '@omit manyToMany';
109
+
110
+ CREATE INDEX table_schema_id_idx ON metaschema_public."table" (schema_id);
111
+
112
+ CREATE INDEX table_database_id_idx ON metaschema_public."table" (database_id);
113
+
114
+ CREATE TABLE metaschema_public.check_constraint (
115
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
116
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
117
+ table_id uuid NOT NULL,
118
+ name text,
119
+ type text,
120
+ field_ids uuid[] NOT NULL,
121
+ expr jsonb,
122
+ CONSTRAINT db_fkey
123
+ FOREIGN KEY(database_id)
124
+ REFERENCES metaschema_public.database (id)
125
+ ON DELETE CASCADE,
126
+ CONSTRAINT table_fkey
127
+ FOREIGN KEY(table_id)
128
+ REFERENCES metaschema_public."table" (id)
129
+ ON DELETE CASCADE,
130
+ UNIQUE (table_id, name),
131
+ CHECK (field_ids <> '{}')
132
+ );
133
+
134
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.check_constraint IS '@omit manyToMany';
135
+
136
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.check_constraint IS '@omit manyToMany';
137
+
138
+ CREATE INDEX check_constraint_table_id_idx ON metaschema_public.check_constraint (table_id);
139
+
140
+ CREATE INDEX check_constraint_database_id_idx ON metaschema_public.check_constraint (database_id);
141
+
142
+ CREATE TABLE metaschema_public.extension (
143
+ name text NOT NULL PRIMARY KEY,
144
+ public_schemas text[],
145
+ private_schemas text[]
146
+ );
147
+
148
+ INSERT INTO metaschema_public.extension (
149
+ name,
150
+ public_schemas,
151
+ private_schemas
152
+ ) VALUES
153
+ ('collections', ARRAY['metaschema_public'], ARRAY['metaschema_private']),
154
+ ('meta', ARRAY['services_public'], ARRAY['services_private']);
155
+
156
+ CREATE TABLE metaschema_public.database_extension (
157
+ name text NOT NULL PRIMARY KEY,
158
+ database_id uuid NOT NULL,
159
+ CONSTRAINT ext_fkey
160
+ FOREIGN KEY(name)
161
+ REFERENCES metaschema_public.extension (name)
162
+ ON DELETE CASCADE,
163
+ CONSTRAINT db_fkey
164
+ FOREIGN KEY(database_id)
165
+ REFERENCES metaschema_public.database (id)
166
+ ON DELETE CASCADE,
167
+ UNIQUE (database_id, name)
168
+ );
169
+
170
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.database_extension IS '@omit manyToMany';
171
+
172
+ CREATE INDEX database_extension_database_id_idx ON metaschema_public.database_extension (database_id);
173
+
174
+ CREATE FUNCTION metaschema_private.database_name_hash(name text) RETURNS bytea AS $EOFCODE$
175
+ SELECT
176
+ DECODE(MD5(LOWER(inflection.plural (name))), 'hex');
177
+ $EOFCODE$ LANGUAGE sql IMMUTABLE;
178
+
179
+ CREATE UNIQUE INDEX databases_database_unique_name_idx ON metaschema_public.database (owner_id, (metaschema_private.database_name_hash(name)));
180
+
181
+ CREATE TYPE metaschema_public.field_category AS ENUM ('core', 'module', 'app');
182
+
183
+ CREATE TABLE metaschema_public.field (
184
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
185
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
186
+ table_id uuid NOT NULL,
187
+ name text NOT NULL,
188
+ label text,
189
+ description text,
190
+ smart_tags jsonb,
191
+ is_required boolean NOT NULL DEFAULT false,
192
+ default_value text NULL DEFAULT NULL,
193
+ default_value_ast jsonb NULL DEFAULT NULL,
194
+ is_hidden boolean NOT NULL DEFAULT false,
195
+ type citext NOT NULL,
196
+ field_order int NOT NULL DEFAULT 0,
197
+ regexp text DEFAULT NULL,
198
+ chk jsonb DEFAULT NULL,
199
+ chk_expr jsonb DEFAULT NULL,
200
+ min double precision DEFAULT NULL,
201
+ max double precision DEFAULT NULL,
202
+ tags citext[] NOT NULL DEFAULT '{}',
203
+ category metaschema_public.field_category NOT NULL DEFAULT 'app',
204
+ module text NULL,
205
+ scope int NULL,
206
+ CONSTRAINT db_fkey
207
+ FOREIGN KEY(database_id)
208
+ REFERENCES metaschema_public.database (id)
209
+ ON DELETE CASCADE,
210
+ CONSTRAINT table_fkey
211
+ FOREIGN KEY(table_id)
212
+ REFERENCES metaschema_public."table" (id)
213
+ ON DELETE CASCADE,
214
+ UNIQUE (table_id, name)
215
+ );
216
+
217
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.field IS '@omit manyToMany';
218
+
219
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.field IS '@omit manyToMany';
220
+
221
+ CREATE INDEX field_table_id_idx ON metaschema_public.field (table_id);
222
+
223
+ CREATE INDEX field_database_id_idx ON metaschema_public.field (database_id);
224
+
225
+ COMMENT ON COLUMN metaschema_public.field.default_value IS '@sqlExpression';
226
+
227
+ CREATE UNIQUE INDEX databases_field_uniq_names_idx ON metaschema_public.field (table_id, (decode(md5(lower(regexp_replace(name, '^(.+?)(_row_id|_id|_uuid|_fk|_pk)$', E'\\1', 'i'))), 'hex')));
228
+
229
+ CREATE TABLE metaschema_public.foreign_key_constraint (
230
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
231
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
232
+ table_id uuid NOT NULL,
233
+ name text,
234
+ description text,
235
+ smart_tags jsonb,
236
+ type text,
237
+ field_ids uuid[] NOT NULL,
238
+ ref_table_id uuid NOT NULL REFERENCES metaschema_public."table" (id)
239
+ ON DELETE CASCADE,
240
+ ref_field_ids uuid[] NOT NULL,
241
+ delete_action char(1) DEFAULT 'c',
242
+ update_action char(1) DEFAULT 'a',
243
+ CONSTRAINT db_fkey
244
+ FOREIGN KEY(database_id)
245
+ REFERENCES metaschema_public.database (id)
246
+ ON DELETE CASCADE,
247
+ CONSTRAINT table_fkey
248
+ FOREIGN KEY(table_id)
249
+ REFERENCES metaschema_public."table" (id)
250
+ ON DELETE CASCADE,
251
+ UNIQUE (table_id, name),
252
+ CHECK (field_ids <> '{}'),
253
+ CHECK (ref_field_ids <> '{}')
254
+ );
255
+
256
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.foreign_key_constraint IS '@omit manyToMany';
257
+
258
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.foreign_key_constraint IS '@omit manyToMany';
259
+
260
+ CREATE INDEX foreign_key_constraint_table_id_idx ON metaschema_public.foreign_key_constraint (table_id);
261
+
262
+ CREATE INDEX foreign_key_constraint_database_id_idx ON metaschema_public.foreign_key_constraint (database_id);
263
+
264
+ CREATE TABLE metaschema_public.full_text_search (
265
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
266
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
267
+ table_id uuid NOT NULL,
268
+ field_id uuid NOT NULL,
269
+ field_ids uuid[] NOT NULL,
270
+ weights text[] NOT NULL,
271
+ langs text[] NOT NULL,
272
+ CONSTRAINT db_fkey
273
+ FOREIGN KEY(database_id)
274
+ REFERENCES metaschema_public.database (id)
275
+ ON DELETE CASCADE,
276
+ CONSTRAINT table_fkey
277
+ FOREIGN KEY(table_id)
278
+ REFERENCES metaschema_public."table" (id)
279
+ ON DELETE CASCADE,
280
+ CHECK (
281
+ cardinality(field_ids) = cardinality(weights)
282
+ AND cardinality(weights) = cardinality(langs)
283
+ )
284
+ );
285
+
286
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.full_text_search IS '@omit manyToMany';
287
+
288
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.full_text_search IS '@omit manyToMany';
289
+
290
+ CREATE INDEX full_text_search_table_id_idx ON metaschema_public.full_text_search (table_id);
291
+
292
+ CREATE INDEX full_text_search_database_id_idx ON metaschema_public.full_text_search (database_id);
293
+
294
+ CREATE TABLE metaschema_public.index (
295
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
296
+ database_id uuid NOT NULL,
297
+ table_id uuid NOT NULL,
298
+ name text NOT NULL DEFAULT '',
299
+ field_ids uuid[],
300
+ include_field_ids uuid[],
301
+ access_method text NOT NULL DEFAULT 'BTREE',
302
+ index_params jsonb,
303
+ where_clause jsonb,
304
+ is_unique boolean NOT NULL DEFAULT false,
305
+ CONSTRAINT db_fkey
306
+ FOREIGN KEY(database_id)
307
+ REFERENCES metaschema_public.database (id)
308
+ ON DELETE CASCADE,
309
+ CONSTRAINT table_fkey
310
+ FOREIGN KEY(table_id)
311
+ REFERENCES metaschema_public."table" (id)
312
+ ON DELETE CASCADE,
313
+ UNIQUE (database_id, name)
314
+ );
315
+
316
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.index IS '@omit manyToMany';
317
+
318
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.index IS '@omit manyToMany';
319
+
320
+ CREATE INDEX index_table_id_idx ON metaschema_public.index (table_id);
321
+
322
+ CREATE INDEX index_database_id_idx ON metaschema_public.index (database_id);
323
+
324
+ CREATE TABLE metaschema_public.limit_function (
325
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
326
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
327
+ table_id uuid NOT NULL,
328
+ name text,
329
+ label text,
330
+ description text,
331
+ data jsonb,
332
+ security int DEFAULT 0,
333
+ CONSTRAINT db_fkey
334
+ FOREIGN KEY(database_id)
335
+ REFERENCES metaschema_public.database (id)
336
+ ON DELETE CASCADE,
337
+ CONSTRAINT table_fkey
338
+ FOREIGN KEY(table_id)
339
+ REFERENCES metaschema_public."table" (id)
340
+ ON DELETE CASCADE,
341
+ UNIQUE (database_id, name)
342
+ );
343
+
344
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.limit_function IS '@omit manyToMany';
345
+
346
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.limit_function IS '@omit manyToMany';
347
+
348
+ CREATE INDEX limit_function_table_id_idx ON metaschema_public.limit_function (table_id);
349
+
350
+ CREATE INDEX limit_function_database_id_idx ON metaschema_public.limit_function (database_id);
351
+
352
+ CREATE TABLE metaschema_public.policy (
353
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
354
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
355
+ table_id uuid NOT NULL,
356
+ name text,
357
+ role_name text,
358
+ privilege text,
359
+ permissive boolean DEFAULT true,
360
+ disabled boolean DEFAULT false,
361
+ template text,
362
+ data jsonb,
363
+ CONSTRAINT db_fkey
364
+ FOREIGN KEY(database_id)
365
+ REFERENCES metaschema_public.database (id)
366
+ ON DELETE CASCADE,
367
+ CONSTRAINT table_fkey
368
+ FOREIGN KEY(table_id)
369
+ REFERENCES metaschema_public."table" (id)
370
+ ON DELETE CASCADE,
371
+ UNIQUE (table_id, name)
372
+ );
373
+
374
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.policy IS '@omit manyToMany';
375
+
376
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.policy IS '@omit manyToMany';
377
+
378
+ CREATE INDEX policy_table_id_idx ON metaschema_public.policy (table_id);
379
+
380
+ CREATE INDEX policy_database_id_idx ON metaschema_public.policy (database_id);
381
+
382
+ CREATE TABLE metaschema_public.primary_key_constraint (
383
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
384
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
385
+ table_id uuid NOT NULL,
386
+ name text,
387
+ type text,
388
+ field_ids uuid[] NOT NULL,
389
+ CONSTRAINT db_fkey
390
+ FOREIGN KEY(database_id)
391
+ REFERENCES metaschema_public.database (id)
392
+ ON DELETE CASCADE,
393
+ CONSTRAINT table_fkey
394
+ FOREIGN KEY(table_id)
395
+ REFERENCES metaschema_public."table" (id)
396
+ ON DELETE CASCADE,
397
+ UNIQUE (table_id, name),
398
+ CHECK (field_ids <> '{}')
399
+ );
400
+
401
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.primary_key_constraint IS '@omit manyToMany';
402
+
403
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.primary_key_constraint IS '@omit manyToMany';
404
+
405
+ CREATE INDEX primary_key_constraint_table_id_idx ON metaschema_public.primary_key_constraint (table_id);
406
+
407
+ CREATE INDEX primary_key_constraint_database_id_idx ON metaschema_public.primary_key_constraint (database_id);
408
+
409
+ CREATE TABLE metaschema_public.procedure (
410
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
411
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
412
+ name text NOT NULL,
413
+ argnames text[],
414
+ argtypes text[],
415
+ argdefaults text[],
416
+ lang_name text,
417
+ definition text,
418
+ CONSTRAINT db_fkey
419
+ FOREIGN KEY(database_id)
420
+ REFERENCES metaschema_public.database (id)
421
+ ON DELETE CASCADE,
422
+ UNIQUE (database_id, name)
423
+ );
424
+
425
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.procedure IS '@omit manyToMany';
426
+
427
+ CREATE INDEX procedure_database_id_idx ON metaschema_public.procedure (database_id);
428
+
429
+ CREATE TABLE metaschema_public.rls_function (
430
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
431
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
432
+ table_id uuid NOT NULL,
433
+ name text,
434
+ label text,
435
+ description text,
436
+ data jsonb,
437
+ inline boolean DEFAULT false,
438
+ security int DEFAULT 0,
439
+ CONSTRAINT db_fkey
440
+ FOREIGN KEY(database_id)
441
+ REFERENCES metaschema_public.database (id)
442
+ ON DELETE CASCADE,
443
+ CONSTRAINT table_fkey
444
+ FOREIGN KEY(table_id)
445
+ REFERENCES metaschema_public."table" (id)
446
+ ON DELETE CASCADE,
447
+ UNIQUE (database_id, name)
448
+ );
449
+
450
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.rls_function IS '@omit manyToMany';
451
+
452
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.rls_function IS '@omit manyToMany';
453
+
454
+ CREATE INDEX rls_function_table_id_idx ON metaschema_public.rls_function (table_id);
455
+
456
+ CREATE INDEX rls_function_database_id_idx ON metaschema_public.rls_function (database_id);
457
+
458
+ CREATE TABLE metaschema_public.schema_grant (
459
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
460
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
461
+ schema_id uuid NOT NULL,
462
+ grantee_name text NOT NULL,
463
+ CONSTRAINT db_fkey
464
+ FOREIGN KEY(database_id)
465
+ REFERENCES metaschema_public.database (id)
466
+ ON DELETE CASCADE,
467
+ CONSTRAINT schema_fkey
468
+ FOREIGN KEY(schema_id)
469
+ REFERENCES metaschema_public.schema (id)
470
+ ON DELETE CASCADE
471
+ );
472
+
473
+ COMMENT ON CONSTRAINT schema_fkey ON metaschema_public.schema_grant IS '@omit manyToMany';
474
+
475
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.schema_grant IS '@omit manyToMany';
476
+
477
+ CREATE INDEX schema_grant_schema_id_idx ON metaschema_public.schema_grant (schema_id);
478
+
479
+ CREATE INDEX schema_grant_database_id_idx ON metaschema_public.schema_grant (database_id);
480
+
481
+ CREATE TABLE metaschema_public.table_grant (
482
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
483
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
484
+ table_id uuid NOT NULL,
485
+ privilege text NOT NULL,
486
+ role_name text NOT NULL,
487
+ field_ids uuid[],
488
+ CONSTRAINT db_fkey
489
+ FOREIGN KEY(database_id)
490
+ REFERENCES metaschema_public.database (id)
491
+ ON DELETE CASCADE,
492
+ CONSTRAINT table_fkey
493
+ FOREIGN KEY(table_id)
494
+ REFERENCES metaschema_public."table" (id)
495
+ ON DELETE CASCADE
496
+ );
497
+
498
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.table_grant IS '@omit manyToMany';
499
+
500
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.table_grant IS '@omit manyToMany';
501
+
502
+ CREATE INDEX table_grant_table_id_idx ON metaschema_public.table_grant (table_id);
503
+
504
+ CREATE INDEX table_grant_database_id_idx ON metaschema_public.table_grant (database_id);
505
+
506
+ CREATE FUNCTION metaschema_private.table_name_hash(name text) RETURNS bytea AS $EOFCODE$
507
+ SELECT
508
+ DECODE(MD5(LOWER(inflection.plural (name))), 'hex');
509
+ $EOFCODE$ LANGUAGE sql IMMUTABLE;
510
+
511
+ CREATE UNIQUE INDEX databases_table_unique_name_idx ON metaschema_public."table" (database_id, (metaschema_private.table_name_hash(name)));
512
+
513
+ CREATE TABLE metaschema_public.trigger_function (
514
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
515
+ database_id uuid NOT NULL,
516
+ name text NOT NULL,
517
+ code text,
518
+ CONSTRAINT db_fkey
519
+ FOREIGN KEY(database_id)
520
+ REFERENCES metaschema_public.database (id)
521
+ ON DELETE CASCADE,
522
+ UNIQUE (database_id, name)
523
+ );
524
+
525
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.trigger_function IS '@omit manyToMany';
526
+
527
+ CREATE INDEX trigger_function_database_id_idx ON metaschema_public.trigger_function (database_id);
528
+
529
+ CREATE TABLE metaschema_public.trigger (
530
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
531
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
532
+ table_id uuid NOT NULL,
533
+ name text NOT NULL,
534
+ event text,
535
+ function_name text,
536
+ CONSTRAINT db_fkey
537
+ FOREIGN KEY(database_id)
538
+ REFERENCES metaschema_public.database (id)
539
+ ON DELETE CASCADE,
540
+ CONSTRAINT table_fkey
541
+ FOREIGN KEY(table_id)
542
+ REFERENCES metaschema_public."table" (id)
543
+ ON DELETE CASCADE,
544
+ UNIQUE (table_id, name)
545
+ );
546
+
547
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.trigger IS '@omit manyToMany';
548
+
549
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.trigger IS '@omit manyToMany';
550
+
551
+ CREATE INDEX trigger_table_id_idx ON metaschema_public.trigger (table_id);
552
+
553
+ CREATE INDEX trigger_database_id_idx ON metaschema_public.trigger (database_id);
554
+
555
+ CREATE TABLE metaschema_public.unique_constraint (
556
+ id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
557
+ database_id uuid NOT NULL DEFAULT uuid_nil(),
558
+ table_id uuid NOT NULL,
559
+ name text,
560
+ description text,
561
+ smart_tags jsonb,
562
+ type text,
563
+ field_ids uuid[] NOT NULL,
564
+ CONSTRAINT db_fkey
565
+ FOREIGN KEY(database_id)
566
+ REFERENCES metaschema_public.database (id)
567
+ ON DELETE CASCADE,
568
+ CONSTRAINT table_fkey
569
+ FOREIGN KEY(table_id)
570
+ REFERENCES metaschema_public."table" (id)
571
+ ON DELETE CASCADE,
572
+ UNIQUE (table_id, name),
573
+ CHECK (field_ids <> '{}')
574
+ );
575
+
576
+ COMMENT ON CONSTRAINT table_fkey ON metaschema_public.unique_constraint IS '@omit manyToMany';
577
+
578
+ COMMENT ON CONSTRAINT db_fkey ON metaschema_public.unique_constraint IS '@omit manyToMany';
579
+
580
+ CREATE INDEX unique_constraint_table_id_idx ON metaschema_public.unique_constraint (table_id);
581
+
582
+ CREATE INDEX unique_constraint_database_id_idx ON metaschema_public.unique_constraint (database_id);
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_private/schema on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_schema ('metaschema_private');
6
+
7
+ ROLLBACK;
@@ -0,0 +1,6 @@
1
+
2
+ BEGIN;
3
+
4
+ SELECT verify_schema ('metaschema_public');
5
+
6
+ ROLLBACK;
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_public/tables/check_constraint/table on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_table ('metaschema_public.check_constraint');
6
+
7
+ ROLLBACK;
@@ -0,0 +1,6 @@
1
+
2
+ BEGIN;
3
+
4
+ SELECT verify_index ('metaschema_public.database', 'databases_database_unique_name_idx');
5
+
6
+ ROLLBACK;
@@ -0,0 +1,6 @@
1
+
2
+ BEGIN;
3
+
4
+ SELECT verify_table ('metaschema_public.database');
5
+
6
+ ROLLBACK;
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_public/tables/database_extension/table on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_table ('metaschema_public.database_extension');
6
+
7
+ ROLLBACK;
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_public/tables/extension/table on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_table ('metaschema_public.extension');
6
+
7
+ ROLLBACK;
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_public/tables/field/indexes/databases_field_uniq_names_idx on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_index ('metaschema_public.field', 'databases_field_uniq_names_idx');
6
+
7
+ ROLLBACK;
@@ -0,0 +1,6 @@
1
+
2
+ BEGIN;
3
+
4
+ SELECT verify_table ('metaschema_public.field');
5
+
6
+ ROLLBACK;
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_public/tables/foreign_key_constraint/table on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_table ('metaschema_public.foreign_key_constraint');
6
+
7
+ ROLLBACK;
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_public/tables/full_text_search/table on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_table ('metaschema_public.full_text_search');
6
+
7
+ ROLLBACK;
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_public/tables/index/table on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_table ('metaschema_public.index');
6
+
7
+ ROLLBACK;
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_public/tables/limit_function/table on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_table ('metaschema_public.limit_function');
6
+
7
+ ROLLBACK;
@@ -0,0 +1,7 @@
1
+ -- Verify schemas/metaschema_public/tables/policy/table on pg
2
+
3
+ BEGIN;
4
+
5
+ SELECT verify_table ('metaschema_public.policy');
6
+
7
+ ROLLBACK;