@weave-kit/engine 1.4.0 → 1.6.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/CHANGELOG.md +80 -0
- package/README.md +15 -8
- package/dist/adapters/graphql/resolvers.d.ts +3 -2
- package/dist/adapters/graphql/resolvers.d.ts.map +1 -1
- package/dist/adapters/graphql/resolvers.js +1 -0
- package/dist/adapters/graphql/resolvers.js.map +1 -1
- package/dist/adapters/graphql/schema.d.ts.map +1 -1
- package/dist/adapters/graphql/schema.js +11 -1
- package/dist/adapters/graphql/schema.js.map +1 -1
- package/dist/adapters/mcp/generate.d.ts +0 -1
- package/dist/adapters/mcp/generate.d.ts.map +1 -1
- package/dist/adapters/mcp/generate.js +2 -12
- package/dist/adapters/mcp/generate.js.map +1 -1
- package/dist/adapters/mcp/tools.d.ts.map +1 -1
- package/dist/adapters/mcp/tools.js +2 -0
- package/dist/adapters/mcp/tools.js.map +1 -1
- package/dist/adapters/openapi/document.d.ts.map +1 -1
- package/dist/adapters/openapi/document.js +4 -3
- package/dist/adapters/openapi/document.js.map +1 -1
- package/dist/adapters/rest/plugin.d.ts.map +1 -1
- package/dist/adapters/rest/plugin.js +8 -1
- package/dist/adapters/rest/plugin.js.map +1 -1
- package/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/deploy.js +8 -4
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/dev.js +4 -4
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +69 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +6 -2
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/workflow-switch.js +2 -2
- package/dist/cli/commands/workflow-switch.js.map +1 -1
- package/dist/cli/project-types/manifest.d.ts +7 -0
- package/dist/cli/project-types/manifest.d.ts.map +1 -1
- package/dist/cli/project-types/manifest.js +4 -0
- package/dist/cli/project-types/manifest.js.map +1 -1
- package/dist/cli/scaffold.d.ts.map +1 -1
- package/dist/cli/scaffold.js +33 -7
- package/dist/cli/scaffold.js.map +1 -1
- package/dist/core/api/params.d.ts.map +1 -1
- package/dist/core/api/params.js +3 -0
- package/dist/core/api/params.js.map +1 -1
- package/dist/core/api/types.d.ts +4 -1
- package/dist/core/api/types.d.ts.map +1 -1
- package/dist/core/i18n/ar.d.ts.map +1 -1
- package/dist/core/i18n/ar.js +1 -0
- package/dist/core/i18n/ar.js.map +1 -1
- package/dist/core/i18n/de.d.ts.map +1 -1
- package/dist/core/i18n/de.js +1 -0
- package/dist/core/i18n/de.js.map +1 -1
- package/dist/core/i18n/en.d.ts +1 -0
- package/dist/core/i18n/en.d.ts.map +1 -1
- package/dist/core/i18n/en.js +1 -0
- package/dist/core/i18n/en.js.map +1 -1
- package/dist/core/i18n/es.d.ts.map +1 -1
- package/dist/core/i18n/es.js +1 -0
- package/dist/core/i18n/es.js.map +1 -1
- package/dist/core/i18n/fr.d.ts.map +1 -1
- package/dist/core/i18n/fr.js +1 -0
- package/dist/core/i18n/fr.js.map +1 -1
- package/dist/core/i18n/hi.d.ts.map +1 -1
- package/dist/core/i18n/hi.js +1 -0
- package/dist/core/i18n/hi.js.map +1 -1
- package/dist/core/i18n/id.d.ts.map +1 -1
- package/dist/core/i18n/id.js +1 -0
- package/dist/core/i18n/id.js.map +1 -1
- package/dist/core/i18n/ja.d.ts.map +1 -1
- package/dist/core/i18n/ja.js +1 -0
- package/dist/core/i18n/ja.js.map +1 -1
- package/dist/core/i18n/ko.d.ts.map +1 -1
- package/dist/core/i18n/ko.js +1 -0
- package/dist/core/i18n/ko.js.map +1 -1
- package/dist/core/i18n/pt.d.ts.map +1 -1
- package/dist/core/i18n/pt.js +1 -0
- package/dist/core/i18n/pt.js.map +1 -1
- package/dist/core/i18n/ru.d.ts.map +1 -1
- package/dist/core/i18n/ru.js +1 -0
- package/dist/core/i18n/ru.js.map +1 -1
- package/dist/core/i18n/vi.d.ts.map +1 -1
- package/dist/core/i18n/vi.js +1 -0
- package/dist/core/i18n/vi.js.map +1 -1
- package/dist/core/i18n/zh-hant.d.ts.map +1 -1
- package/dist/core/i18n/zh-hant.js +1 -0
- package/dist/core/i18n/zh-hant.js.map +1 -1
- package/dist/core/i18n/zh.d.ts.map +1 -1
- package/dist/core/i18n/zh.js +1 -0
- package/dist/core/i18n/zh.js.map +1 -1
- package/dist/core/rbac/index.d.ts +1 -1
- package/dist/core/rbac/index.d.ts.map +1 -1
- package/dist/core/rbac/index.js +1 -1
- package/dist/core/rbac/index.js.map +1 -1
- package/dist/core/rbac/rls.d.ts +34 -0
- package/dist/core/rbac/rls.d.ts.map +1 -1
- package/dist/core/rbac/rls.js +110 -0
- package/dist/core/rbac/rls.js.map +1 -1
- package/dist/core/storage/diff.d.ts +11 -0
- package/dist/core/storage/diff.d.ts.map +1 -1
- package/dist/core/storage/diff.js +56 -12
- package/dist/core/storage/diff.js.map +1 -1
- package/dist/core/storage/index.d.ts +5 -2
- package/dist/core/storage/index.d.ts.map +1 -1
- package/dist/core/storage/index.js +4 -2
- package/dist/core/storage/index.js.map +1 -1
- package/dist/core/storage/inspect.d.ts +10 -0
- package/dist/core/storage/inspect.d.ts.map +1 -1
- package/dist/core/storage/inspect.js +33 -24
- package/dist/core/storage/inspect.js.map +1 -1
- package/dist/core/storage/link-table.d.ts +3 -2
- package/dist/core/storage/link-table.d.ts.map +1 -1
- package/dist/core/storage/link-table.js +5 -4
- package/dist/core/storage/link-table.js.map +1 -1
- package/dist/core/storage/meta.d.ts +3 -2
- package/dist/core/storage/meta.d.ts.map +1 -1
- package/dist/core/storage/meta.js +5 -4
- package/dist/core/storage/meta.js.map +1 -1
- package/dist/core/storage/migrate.d.ts +16 -0
- package/dist/core/storage/migrate.d.ts.map +1 -1
- package/dist/core/storage/migrate.js +54 -23
- package/dist/core/storage/migrate.js.map +1 -1
- package/dist/core/storage/object-rls.d.ts +25 -0
- package/dist/core/storage/object-rls.d.ts.map +1 -0
- package/dist/core/storage/object-rls.js +45 -0
- package/dist/core/storage/object-rls.js.map +1 -0
- package/dist/core/storage/pool.d.ts +7 -0
- package/dist/core/storage/pool.d.ts.map +1 -1
- package/dist/core/storage/pool.js +9 -0
- package/dist/core/storage/pool.js.map +1 -1
- package/dist/core/storage/record-meta.d.ts +2 -1
- package/dist/core/storage/record-meta.d.ts.map +1 -1
- package/dist/core/storage/record-meta.js +3 -1
- package/dist/core/storage/record-meta.js.map +1 -1
- package/dist/core/storage/schema-scope.d.ts +33 -0
- package/dist/core/storage/schema-scope.d.ts.map +1 -0
- package/dist/core/storage/schema-scope.js +45 -0
- package/dist/core/storage/schema-scope.js.map +1 -0
- package/dist/core/storage/system-tables.d.ts +3 -2
- package/dist/core/storage/system-tables.d.ts.map +1 -1
- package/dist/core/storage/system-tables.js +7 -4
- package/dist/core/storage/system-tables.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/runtime/data-access/builder.d.ts +7 -0
- package/dist/runtime/data-access/builder.d.ts.map +1 -1
- package/dist/runtime/data-access/builder.js +12 -0
- package/dist/runtime/data-access/builder.js.map +1 -1
- package/dist/runtime/data-access/index.d.ts +3 -3
- package/dist/runtime/data-access/index.d.ts.map +1 -1
- package/dist/runtime/data-access/index.js +2 -2
- package/dist/runtime/data-access/index.js.map +1 -1
- package/dist/runtime/data-access/query.d.ts +49 -7
- package/dist/runtime/data-access/query.d.ts.map +1 -1
- package/dist/runtime/data-access/query.js +235 -113
- package/dist/runtime/data-access/query.js.map +1 -1
- package/dist/runtime/data-access/rls-session.d.ts +24 -0
- package/dist/runtime/data-access/rls-session.d.ts.map +1 -0
- package/dist/runtime/data-access/rls-session.js +30 -0
- package/dist/runtime/data-access/rls-session.js.map +1 -0
- package/dist/runtime/data-access/sql-executor.d.ts.map +1 -1
- package/dist/runtime/data-access/sql-executor.js +2 -16
- package/dist/runtime/data-access/sql-executor.js.map +1 -1
- package/dist/runtime/data-access/types.d.ts +10 -2
- package/dist/runtime/data-access/types.d.ts.map +1 -1
- package/dist/runtime/data-access/types.js.map +1 -1
- package/dist/runtime/data-access/values.d.ts +10 -0
- package/dist/runtime/data-access/values.d.ts.map +1 -1
- package/dist/runtime/data-access/values.js +9 -0
- package/dist/runtime/data-access/values.js.map +1 -1
- package/dist/runtime/engine.d.ts +44 -4
- package/dist/runtime/engine.d.ts.map +1 -1
- package/dist/runtime/engine.js +38 -4
- package/dist/runtime/engine.js.map +1 -1
- package/dist/runtime/git/sync.d.ts +6 -0
- package/dist/runtime/git/sync.d.ts.map +1 -1
- package/dist/runtime/git/sync.js +2 -0
- package/dist/runtime/git/sync.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -9,10 +9,11 @@ const FK_DELETE_ACTIONS = {
|
|
|
9
9
|
/** read the current schema of every table in the connection's schema */
|
|
10
10
|
export async function inspectSchema(pool, options = {}) {
|
|
11
11
|
const tables = new Map();
|
|
12
|
+
const schemaParam = options.schema ?? null;
|
|
12
13
|
const cols = await pool.query(`SELECT table_name, column_name, data_type, is_nullable, column_default,
|
|
13
14
|
udt_name, numeric_precision, numeric_scale, character_maximum_length
|
|
14
15
|
FROM information_schema.columns
|
|
15
|
-
WHERE table_schema = current_schema()
|
|
16
|
+
WHERE table_schema = COALESCE($1::text, current_schema())`, [schemaParam]);
|
|
16
17
|
for (const row of cols.rows) {
|
|
17
18
|
const t = tables.get(row.table_name) ?? {
|
|
18
19
|
name: row.table_name,
|
|
@@ -41,8 +42,8 @@ export async function inspectSchema(pool, options = {}) {
|
|
|
41
42
|
FROM information_schema.table_constraints tc
|
|
42
43
|
JOIN information_schema.key_column_usage kcu
|
|
43
44
|
ON tc.constraint_name = kcu.constraint_name AND tc.constraint_schema = kcu.constraint_schema
|
|
44
|
-
WHERE tc.constraint_type = 'PRIMARY KEY' AND tc.table_schema = current_schema()
|
|
45
|
-
ORDER BY tc.table_name, kcu.ordinal_position
|
|
45
|
+
WHERE tc.constraint_type = 'PRIMARY KEY' AND tc.table_schema = COALESCE($1::text, current_schema())
|
|
46
|
+
ORDER BY tc.table_name, kcu.ordinal_position`, [schemaParam]);
|
|
46
47
|
for (const row of pkRows.rows) {
|
|
47
48
|
tables.get(row.table_name)?.pk.push(row.column_name);
|
|
48
49
|
}
|
|
@@ -59,8 +60,8 @@ export async function inspectSchema(pool, options = {}) {
|
|
|
59
60
|
JOIN pg_attribute a ON a.attrelid = con.conrelid AND a.attnum = k.attnum
|
|
60
61
|
JOIN unnest(con.confkey) WITH ORDINALITY AS fk(attnum, ord) ON fk.ord = k.ord
|
|
61
62
|
JOIN pg_attribute fa ON fa.attrelid = con.confrelid AND fa.attnum = fk.attnum
|
|
62
|
-
WHERE con.contype = 'f' AND n.nspname = current_schema()
|
|
63
|
-
GROUP BY c.relname, rc.relname, con.conname, con.confdeltype
|
|
63
|
+
WHERE con.contype = 'f' AND n.nspname = COALESCE($1::text, current_schema())
|
|
64
|
+
GROUP BY c.relname, rc.relname, con.conname, con.confdeltype`, [schemaParam]);
|
|
64
65
|
for (const row of fkRows.rows) {
|
|
65
66
|
tables.get(row.table_name)?.fks.push({
|
|
66
67
|
columns: row.columns,
|
|
@@ -69,7 +70,7 @@ export async function inspectSchema(pool, options = {}) {
|
|
|
69
70
|
onDelete: FK_DELETE_ACTIONS[row.confdeltype] ?? 'restrict',
|
|
70
71
|
});
|
|
71
72
|
}
|
|
72
|
-
const idxRows = await pool.query(`SELECT tablename, indexname FROM pg_indexes WHERE schemaname = current_schema()
|
|
73
|
+
const idxRows = await pool.query(`SELECT tablename, indexname FROM pg_indexes WHERE schemaname = COALESCE($1::text, current_schema())`, [schemaParam]);
|
|
73
74
|
for (const row of idxRows.rows) {
|
|
74
75
|
tables.get(row.tablename)?.indexNames.push(row.indexname);
|
|
75
76
|
}
|
|
@@ -77,7 +78,7 @@ export async function inspectSchema(pool, options = {}) {
|
|
|
77
78
|
const rlsRows = await pool.query(`SELECT c.relname, c.relrowsecurity, r.rolname AS owner
|
|
78
79
|
FROM pg_class c
|
|
79
80
|
JOIN pg_roles r ON c.relowner = r.oid
|
|
80
|
-
WHERE c.relkind = 'r' AND c.relnamespace = current_schema()
|
|
81
|
+
WHERE c.relkind = 'r' AND c.relnamespace = to_regnamespace(COALESCE($1::text, current_schema()))`, [schemaParam]);
|
|
81
82
|
for (const row of rlsRows.rows) {
|
|
82
83
|
const t = tables.get(row.relname);
|
|
83
84
|
if (t !== undefined) {
|
|
@@ -85,28 +86,36 @@ export async function inspectSchema(pool, options = {}) {
|
|
|
85
86
|
t.owner = row.owner;
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
|
-
const policyRows = await pool.query(`SELECT tablename,
|
|
89
|
+
const policyRows = await pool.query(`SELECT c.relname AS tablename, p.polname AS policyname, d.description
|
|
90
|
+
FROM pg_policy p
|
|
91
|
+
JOIN pg_class c ON c.oid = p.polrelid
|
|
92
|
+
LEFT JOIN pg_description d ON d.objoid = p.oid AND d.classoid = 'pg_policy'::regclass
|
|
93
|
+
WHERE c.relnamespace = to_regnamespace(COALESCE($1::text, current_schema()))`, [schemaParam]);
|
|
89
94
|
for (const row of policyRows.rows) {
|
|
90
95
|
const t = tables.get(row.tablename);
|
|
91
|
-
if (t !== undefined)
|
|
96
|
+
if (t !== undefined) {
|
|
92
97
|
(t.rlsPolicies ??= []).push(row.policyname);
|
|
98
|
+
(t.rlsPolicyComments ??= {})[row.policyname] = row.description;
|
|
99
|
+
}
|
|
93
100
|
}
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
const grantRows = await pool.query(`SELECT c.relname AS table_name, r.rolname AS role
|
|
101
|
+
// per-role table privileges (PUBLIC grants are ignored — if PUBLIC holds a
|
|
102
|
+
// privilege the role inherits it, and a redundant GRANT would just be emitted)
|
|
103
|
+
const grantRows = await pool.query(`SELECT c.relname AS table_name, r.rolname AS role, acl.privilege_type AS privilege
|
|
98
104
|
FROM pg_class c
|
|
99
105
|
JOIN pg_namespace n ON c.relnamespace = n.oid
|
|
100
106
|
CROSS JOIN LATERAL aclexplode(COALESCE(c.relacl, acldefault('r', c.relowner))) acl
|
|
101
107
|
JOIN pg_roles r ON r.oid = acl.grantee
|
|
102
|
-
WHERE n.nspname = current_schema()
|
|
108
|
+
WHERE n.nspname = COALESCE($1::text, current_schema())`, [schemaParam]);
|
|
103
109
|
for (const row of grantRows.rows) {
|
|
104
110
|
const t = tables.get(row.table_name);
|
|
105
|
-
if (t
|
|
111
|
+
if (t === undefined)
|
|
112
|
+
continue;
|
|
113
|
+
((t.grants ??= {})[row.role] ??= []).push(row.privilege);
|
|
114
|
+
if (row.privilege === 'SELECT')
|
|
106
115
|
(t.selectGrantedTo ??= []).push(row.role);
|
|
107
116
|
}
|
|
108
117
|
if (options.detail === true) {
|
|
109
|
-
await loadDetail(pool, tables);
|
|
118
|
+
await loadDetail(pool, tables, schemaParam);
|
|
110
119
|
}
|
|
111
120
|
return tables;
|
|
112
121
|
}
|
|
@@ -115,15 +124,15 @@ export async function inspectSchema(pool, options = {}) {
|
|
|
115
124
|
* unique constraints, FK on-delete actions). Runs only when `detail` is set so
|
|
116
125
|
* `migrate`/drift checks stay query-lean.
|
|
117
126
|
*/
|
|
118
|
-
async function loadDetail(pool, tables) {
|
|
127
|
+
async function loadDetail(pool, tables, schemaParam) {
|
|
119
128
|
const enumRows = await pool.query(`SELECT c.relname AS table_name, a.attname AS column_name, e.enumlabel AS label
|
|
120
129
|
FROM pg_attribute a
|
|
121
130
|
JOIN pg_class c ON a.attrelid = c.oid
|
|
122
131
|
JOIN pg_namespace n ON c.relnamespace = n.oid
|
|
123
132
|
JOIN pg_type t ON a.atttypid = t.oid
|
|
124
133
|
JOIN pg_enum e ON e.enumtypid = t.oid
|
|
125
|
-
WHERE n.nspname = current_schema() AND a.attnum > 0 AND NOT a.attisdropped
|
|
126
|
-
ORDER BY c.relname, a.attnum, e.enumsortorder
|
|
134
|
+
WHERE n.nspname = COALESCE($1::text, current_schema()) AND a.attnum > 0 AND NOT a.attisdropped
|
|
135
|
+
ORDER BY c.relname, a.attnum, e.enumsortorder`, [schemaParam]);
|
|
127
136
|
for (const row of enumRows.rows) {
|
|
128
137
|
const col = tables.get(row.table_name)?.columns.find((c) => c.name === row.column_name);
|
|
129
138
|
if (col !== undefined)
|
|
@@ -137,8 +146,8 @@ async function loadDetail(pool, tables) {
|
|
|
137
146
|
JOIN pg_type at ON a.atttypid = at.oid
|
|
138
147
|
JOIN pg_type et ON at.typelem = et.oid
|
|
139
148
|
JOIN pg_enum e ON e.enumtypid = et.oid
|
|
140
|
-
WHERE n.nspname = current_schema() AND a.attnum > 0 AND NOT a.attisdropped
|
|
141
|
-
ORDER BY c.relname, a.attnum, e.enumsortorder
|
|
149
|
+
WHERE n.nspname = COALESCE($1::text, current_schema()) AND a.attnum > 0 AND NOT a.attisdropped
|
|
150
|
+
ORDER BY c.relname, a.attnum, e.enumsortorder`, [schemaParam]);
|
|
142
151
|
for (const row of arrayEnumRows.rows) {
|
|
143
152
|
const col = tables.get(row.table_name)?.columns.find((c) => c.name === row.column_name);
|
|
144
153
|
if (col === undefined)
|
|
@@ -149,7 +158,7 @@ async function loadDetail(pool, tables) {
|
|
|
149
158
|
const tableComments = await pool.query(`SELECT c.relname AS table_name, obj_description(c.oid, 'pg_class') AS comment
|
|
150
159
|
FROM pg_class c
|
|
151
160
|
JOIN pg_namespace n ON c.relnamespace = n.oid
|
|
152
|
-
WHERE n.nspname = current_schema() AND c.relkind = 'r'
|
|
161
|
+
WHERE n.nspname = COALESCE($1::text, current_schema()) AND c.relkind = 'r'`, [schemaParam]);
|
|
153
162
|
for (const row of tableComments.rows) {
|
|
154
163
|
const t = tables.get(row.table_name);
|
|
155
164
|
if (t !== undefined && row.comment !== null)
|
|
@@ -159,7 +168,7 @@ async function loadDetail(pool, tables) {
|
|
|
159
168
|
FROM pg_class c
|
|
160
169
|
JOIN pg_namespace n ON c.relnamespace = n.oid
|
|
161
170
|
JOIN pg_attribute a ON a.attrelid = c.oid AND a.attnum > 0 AND NOT a.attisdropped
|
|
162
|
-
WHERE n.nspname = current_schema() AND c.relkind = 'r'
|
|
171
|
+
WHERE n.nspname = COALESCE($1::text, current_schema()) AND c.relkind = 'r'`, [schemaParam]);
|
|
163
172
|
for (const row of columnComments.rows) {
|
|
164
173
|
const col = tables.get(row.table_name)?.columns.find((c) => c.name === row.column_name);
|
|
165
174
|
if (col !== undefined && row.comment !== null)
|
|
@@ -170,7 +179,7 @@ async function loadDetail(pool, tables) {
|
|
|
170
179
|
JOIN pg_class c ON i.indrelid = c.oid
|
|
171
180
|
JOIN pg_namespace n ON c.relnamespace = n.oid
|
|
172
181
|
JOIN pg_attribute a ON a.attrelid = c.oid AND a.attnum = ANY(i.indkey)
|
|
173
|
-
WHERE n.nspname = current_schema() AND i.indisunique AND NOT i.indisprimary AND i.indnkeyatts = 1
|
|
182
|
+
WHERE n.nspname = COALESCE($1::text, current_schema()) AND i.indisunique AND NOT i.indisprimary AND i.indnkeyatts = 1`, [schemaParam]);
|
|
174
183
|
for (const row of uniqueRows.rows) {
|
|
175
184
|
const t = tables.get(row.table_name);
|
|
176
185
|
if (t !== undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/core/storage/inspect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/core/storage/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FIELD_TYPES, type FieldTypeRegistry, type ObjectDefinition } from '../types/index.js';
|
|
2
2
|
import type { ExpectedTable } from './diff.js';
|
|
3
|
+
import type { SchemaScope } from './schema-scope.js';
|
|
3
4
|
/**
|
|
4
5
|
* Engine-owned many-to-many **link tables** backing `multiRelation` fields.
|
|
5
6
|
*
|
|
@@ -41,7 +42,7 @@ export declare function multiRelationsOf(owner: ObjectDefinition, defs: Readonly
|
|
|
41
42
|
/** the expected (DDL) shape of one multiRelation link table */
|
|
42
43
|
export declare function buildLinkTable(owner: ObjectDefinition, field: Extract<ObjectDefinition['fields'][number], {
|
|
43
44
|
type: typeof FIELD_TYPES.MULTI_RELATION;
|
|
44
|
-
}>, target: ObjectDefinition, registry?: FieldTypeRegistry): ExpectedTable;
|
|
45
|
+
}>, target: ObjectDefinition, registry?: FieldTypeRegistry, scope?: SchemaScope): ExpectedTable;
|
|
45
46
|
/** every link table implied by the given object definitions, in stable order */
|
|
46
|
-
export declare function buildLinkTables(defs: ReadonlyMap<string, ObjectDefinition>, registry?: FieldTypeRegistry): ExpectedTable[];
|
|
47
|
+
export declare function buildLinkTables(defs: ReadonlyMap<string, ObjectDefinition>, registry?: FieldTypeRegistry, scope?: SchemaScope): ExpectedTable[];
|
|
47
48
|
//# sourceMappingURL=link-table.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-table.d.ts","sourceRoot":"","sources":["../../../src/core/storage/link-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEX,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAA6C,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"link-table.d.ts","sourceRoot":"","sources":["../../../src/core/storage/link-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEX,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAA6C,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;;;;;;GAYG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,qEAAqE;AACrE,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,4EAA4E;AAC5E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,WAAW,CAAC,cAAc,CAAA;KAAE,CAAC,CAAC;IAChG,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAC1C,qBAAqB,EAAE,CAQzB;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAC5B,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,OAAO,WAAW,CAAC,cAAc,CAAA;CAAE,CAAC,EAC/F,MAAM,EAAE,gBAAgB,EACxB,QAAQ,GAAE,iBAA+C,EACzD,KAAK,CAAC,EAAE,WAAW,GAClB,aAAa,CAoDf;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAC7B,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC3C,QAAQ,GAAE,iBAA+C,EACzD,KAAK,CAAC,EAAE,WAAW,GAClB,aAAa,EAAE,CAQjB"}
|
|
@@ -50,8 +50,9 @@ export function multiRelationsOf(owner, defs) {
|
|
|
50
50
|
return out;
|
|
51
51
|
}
|
|
52
52
|
/** the expected (DDL) shape of one multiRelation link table */
|
|
53
|
-
export function buildLinkTable(owner, field, target, registry = DEFAULT_FIELD_TYPE_REGISTRY) {
|
|
53
|
+
export function buildLinkTable(owner, field, target, registry = DEFAULT_FIELD_TYPE_REGISTRY, scope) {
|
|
54
54
|
const name = linkTableName(owner.name, field.name);
|
|
55
|
+
const schema = scope?.systemSchema;
|
|
55
56
|
const ownerPks = primaryFieldsOf(owner);
|
|
56
57
|
const targetPks = primaryFieldsOf(target);
|
|
57
58
|
const ownerCols = ownerPks.map((pk) => ({ pk, column: linkOwnerColumn(pk.name) }));
|
|
@@ -95,14 +96,14 @@ export function buildLinkTable(owner, field, target, registry = DEFAULT_FIELD_TY
|
|
|
95
96
|
const indexes = [
|
|
96
97
|
{ name: `${name}_target_idx`, method: 'btree', columns: targetCols.map((c) => c.column) },
|
|
97
98
|
];
|
|
98
|
-
return { name, columns, fks, indexes, uniques: [] };
|
|
99
|
+
return { name, ...(schema === undefined ? {} : { schema }), columns, fks, indexes, uniques: [] };
|
|
99
100
|
}
|
|
100
101
|
/** every link table implied by the given object definitions, in stable order */
|
|
101
|
-
export function buildLinkTables(defs, registry = DEFAULT_FIELD_TYPE_REGISTRY) {
|
|
102
|
+
export function buildLinkTables(defs, registry = DEFAULT_FIELD_TYPE_REGISTRY, scope) {
|
|
102
103
|
const tables = [];
|
|
103
104
|
for (const owner of defs.values()) {
|
|
104
105
|
for (const { field, target } of multiRelationsOf(owner, defs)) {
|
|
105
|
-
tables.push(buildLinkTable(owner, field, target, registry));
|
|
106
|
+
tables.push(buildLinkTable(owner, field, target, registry, scope));
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
109
|
return tables;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-table.js","sourceRoot":"","sources":["../../../src/core/storage/link-table.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,WAAW,EACX,eAAe,GAGhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"link-table.js","sourceRoot":"","sources":["../../../src/core/storage/link-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { SqlQueryable } from './queryable.js';
|
|
2
|
+
import { type SchemaScope } from './schema-scope.js';
|
|
2
3
|
/**
|
|
3
4
|
* Upsert a meta record (e.g. `schema.applied.<object>` -> applied_at).
|
|
4
5
|
* The table is created by `weave migrate` — the runtime never runs DDL.
|
|
5
6
|
* Takes any {@link SqlQueryable} so it can run inside the deploy transaction.
|
|
6
7
|
*/
|
|
7
|
-
export declare function setMeta(db: SqlQueryable, key: string, value: string): Promise<void>;
|
|
8
|
+
export declare function setMeta(db: SqlQueryable, key: string, value: string, scope?: SchemaScope): Promise<void>;
|
|
8
9
|
/** read a meta value (null when the key is absent) */
|
|
9
|
-
export declare function getMeta(db: SqlQueryable, key: string): Promise<string | null>;
|
|
10
|
+
export declare function getMeta(db: SqlQueryable, key: string, scope?: SchemaScope): Promise<string | null>;
|
|
10
11
|
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/core/storage/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/core/storage/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAInE;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9G;AAED,sDAAsD;AACtD,wBAAsB,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxG"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
+
import { qualifyTable } from './schema-scope.js';
|
|
1
2
|
const META_TABLE = 'weavekit_meta';
|
|
2
3
|
/**
|
|
3
4
|
* Upsert a meta record (e.g. `schema.applied.<object>` -> applied_at).
|
|
4
5
|
* The table is created by `weave migrate` — the runtime never runs DDL.
|
|
5
6
|
* Takes any {@link SqlQueryable} so it can run inside the deploy transaction.
|
|
6
7
|
*/
|
|
7
|
-
export async function setMeta(db, key, value) {
|
|
8
|
-
await db.query(`INSERT INTO ${META_TABLE} (key, value) VALUES ($1, $2)
|
|
8
|
+
export async function setMeta(db, key, value, scope) {
|
|
9
|
+
await db.query(`INSERT INTO ${qualifyTable(META_TABLE, scope)} (key, value) VALUES ($1, $2)
|
|
9
10
|
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`, [key, value]);
|
|
10
11
|
}
|
|
11
12
|
/** read a meta value (null when the key is absent) */
|
|
12
|
-
export async function getMeta(db, key) {
|
|
13
|
-
const res = await db.query(`SELECT value FROM ${META_TABLE} WHERE key = $1`, [key]);
|
|
13
|
+
export async function getMeta(db, key, scope) {
|
|
14
|
+
const res = await db.query(`SELECT value FROM ${qualifyTable(META_TABLE, scope)} WHERE key = $1`, [key]);
|
|
14
15
|
return res.rows[0]?.value ?? null;
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=meta.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/core/storage/meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/core/storage/meta.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAEnE,MAAM,UAAU,GAAG,eAAe,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAgB,EAAE,GAAW,EAAE,KAAa,EAAE,KAAmB;IAC7F,MAAM,EAAE,CAAC,KAAK,CACZ,eAAe,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC;4DACU,EACxD,CAAC,GAAG,EAAE,KAAK,CAAC,CACb,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAgB,EAAE,GAAW,EAAE,KAAmB;IAC9E,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzG,OAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAmC,EAAE,KAAK,IAAI,IAAI,CAAC;AACvE,CAAC"}
|
|
@@ -16,6 +16,22 @@ export interface MigrateOptions {
|
|
|
16
16
|
rls?: {
|
|
17
17
|
role: string;
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* object-path RLS (`EngineConfig.rls.enforce`): provision `role` and the
|
|
21
|
+
* per-table `TO <role>` policies + privileges the engine's own data access
|
|
22
|
+
* runs under. Same table gating as `rls` (new tables, or `alter` + owned).
|
|
23
|
+
*/
|
|
24
|
+
objectRls?: {
|
|
25
|
+
role: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* dedicated schema for the engine's own tables (`weavekit_*` system tables,
|
|
29
|
+
* `weavekit_record__<object>` side tables, `weavekit_m2m__*` link tables).
|
|
30
|
+
* Default undefined = create them in the connection's `current_schema()`
|
|
31
|
+
* (legacy). When set, `migrate` creates the schema and qualifies those tables;
|
|
32
|
+
* customer/identity object tables stay in the object schema.
|
|
33
|
+
*/
|
|
34
|
+
systemSchema?: string;
|
|
19
35
|
/**
|
|
20
36
|
* Run additional writes in the SAME transaction as the DDL (after DDL +
|
|
21
37
|
* `schema.applied.*` meta + workflow-definition registration, before COMMIT).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/core/storage/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/core/storage/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAuBrC,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA4HD;;;;;;;;;;;;GAYG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAsK9G"}
|
|
@@ -6,11 +6,13 @@ import { buildExpectedTable, diffAll, diffRls, diffTable } from './diff.js';
|
|
|
6
6
|
import { inspectSchema } from './inspect.js';
|
|
7
7
|
import { buildLinkTables } from './link-table.js';
|
|
8
8
|
import { setMeta } from './meta.js';
|
|
9
|
-
import { createPool } from './pool.js';
|
|
9
|
+
import { createPool, searchPathOptions } from './pool.js';
|
|
10
10
|
import { buildRecordMetaTable } from './record-meta.js';
|
|
11
11
|
import { sqlIdent, sqlLiteral } from './sql-literals.js';
|
|
12
12
|
import { SYSTEM_TABLES, buildSystemTables, systemHardeningStatements } from './system-tables.js';
|
|
13
|
+
import { createSchemaScope, qualifyTable } from './schema-scope.js';
|
|
13
14
|
import { isSafeRlsRole } from '../rbac/index.js';
|
|
15
|
+
import { planObjectRls } from './object-rls.js';
|
|
14
16
|
/**
|
|
15
17
|
* Advisory-lock key serializing `migrate`/`deploy apply` writes across
|
|
16
18
|
* processes (stable across releases; `0x77656176` = 'weav', fits int4).
|
|
@@ -93,6 +95,25 @@ async function provisionRlsRole(pool, role, warnings) {
|
|
|
93
95
|
}
|
|
94
96
|
return true;
|
|
95
97
|
}
|
|
98
|
+
/** object-path RLS DDL (role provisioned first; skipped tables become warnings) */
|
|
99
|
+
async function objectRlsStatements(pool, registry, actual, objectRls, warnings, scope) {
|
|
100
|
+
if (objectRls === undefined)
|
|
101
|
+
return [];
|
|
102
|
+
if (!(await provisionRlsRole(pool, objectRls.role, warnings)))
|
|
103
|
+
return [];
|
|
104
|
+
const { rows } = await pool.query('SELECT current_user AS u');
|
|
105
|
+
const owner = String(rows[0].u);
|
|
106
|
+
const plan = planObjectRls(registry, actual, objectRls.role, { owner, scope });
|
|
107
|
+
for (const name of plan.skipped) {
|
|
108
|
+
warnings.push(`skip object RLS on "${name}": existing table needs "alter": true and ownership by ${owner}`);
|
|
109
|
+
}
|
|
110
|
+
const stmts = [...plan.statements];
|
|
111
|
+
// the RLS role must be able to resolve engine tables that live in the system schema
|
|
112
|
+
if (scope?.systemSchema !== undefined) {
|
|
113
|
+
stmts.unshift(`GRANT USAGE ON SCHEMA ${q(scope.systemSchema)} TO ${sqlIdent(objectRls.role)};`);
|
|
114
|
+
}
|
|
115
|
+
return stmts;
|
|
116
|
+
}
|
|
96
117
|
/**
|
|
97
118
|
* True when `PUBLIC` still holds `TRUNCATE` on `table`, i.e. the append-only
|
|
98
119
|
* hardening `REVOKE` is worth emitting. New tables grant nothing to `PUBLIC`
|
|
@@ -125,51 +146,58 @@ export async function migrate(registry, options = {}) {
|
|
|
125
146
|
throw new Error('DATABASE_URL is not set');
|
|
126
147
|
const dryRun = options.dryRun ?? false;
|
|
127
148
|
const warnings = [];
|
|
128
|
-
const
|
|
149
|
+
const scope = createSchemaScope(options.systemSchema);
|
|
150
|
+
const pool = createPool(url, searchPathOptions(scope.systemSchema));
|
|
129
151
|
try {
|
|
130
152
|
const defs = new Map([...systemObjects(), ...registry.list()].map((d) => [d.name, d]));
|
|
131
|
-
const
|
|
153
|
+
const objectActual = await inspectSchema(pool);
|
|
154
|
+
const systemActual = scope.systemSchema === undefined ? objectActual : await inspectSchema(pool, { schema: scope.systemSchema });
|
|
155
|
+
// merged view for object-RLS planning (spans object + system tables)
|
|
156
|
+
const actual = systemActual === objectActual ? objectActual : new Map([...objectActual, ...systemActual]);
|
|
132
157
|
if (options.rls !== undefined && !isSafeRlsRole(options.rls.role)) {
|
|
133
158
|
throw new Error(`invalid RLS role name "${options.rls.role}"`);
|
|
134
159
|
}
|
|
160
|
+
if (options.objectRls !== undefined && !isSafeRlsRole(options.objectRls.role)) {
|
|
161
|
+
throw new Error(`invalid RLS role name "${options.objectRls.role}"`);
|
|
162
|
+
}
|
|
135
163
|
// new objects (no live table by that name) are diffed and created; objects
|
|
136
164
|
// that opted in via `alter: true` are diffed against their existing table
|
|
137
165
|
// too (additive ALTER DDL only)
|
|
138
166
|
const expected = [...defs.values()]
|
|
139
|
-
.filter((d) => d.alter === true ||
|
|
167
|
+
.filter((d) => d.alter === true || objectActual.get(d.name) === undefined)
|
|
140
168
|
.map((d) => buildExpectedTable(d, defs, registry.fieldTypes));
|
|
141
|
-
const statements = diffAll(expected,
|
|
169
|
+
const statements = diffAll(expected, objectActual);
|
|
142
170
|
// native enum types must exist before the tables that reference them
|
|
143
171
|
const enumStatements = await buildEnumStatements(pool, defs, new Set(expected.map((t) => t.name)));
|
|
144
172
|
// engine-owned per-object record metadata side tables: one per object (R1),
|
|
145
173
|
// created idempotently for every object regardless of `alter`/ownership —
|
|
146
174
|
// they never touch the customer's own table
|
|
147
|
-
const metaTables = [...defs.keys()].map((name) => buildRecordMetaTable(name));
|
|
148
|
-
const metaStatements = diffAll(metaTables,
|
|
175
|
+
const metaTables = [...defs.keys()].map((name) => buildRecordMetaTable(name, scope));
|
|
176
|
+
const metaStatements = diffAll(metaTables, systemActual);
|
|
149
177
|
// engine-owned many-to-many link tables for every `multiRelation` field:
|
|
150
178
|
// one per (object, field), created idempotently regardless of `alter`.
|
|
151
|
-
const linkTables = buildLinkTables(defs, registry.fieldTypes);
|
|
152
|
-
const linkStatements = diffAll(linkTables,
|
|
179
|
+
const linkTables = buildLinkTables(defs, registry.fieldTypes, scope);
|
|
180
|
+
const linkStatements = diffAll(linkTables, systemActual);
|
|
153
181
|
// engine-owned system tables (metadata cache / seq / audit / approvals /
|
|
154
182
|
// timers / counters) + their ACL hardening: provisioned here (and only
|
|
155
183
|
// here) so the runtime never runs DDL and can be least-privileged.
|
|
156
184
|
// one-time reshape of the legacy workflow timer table
|
|
157
185
|
// (id/state/workflow_version -> record_key/node_id): engine-owned and
|
|
158
186
|
// transient, so drop+recreate is safe (there are no users yet).
|
|
159
|
-
const legacyTimers =
|
|
187
|
+
const legacyTimers = systemActual.get(SYSTEM_TABLES.WORKFLOW_TIMERS);
|
|
160
188
|
const dropLegacyTimers = legacyTimers !== undefined &&
|
|
161
189
|
legacyTimers.columns.some((c) => c.name === 'state') &&
|
|
162
190
|
!legacyTimers.columns.some((c) => c.name === 'record_key');
|
|
163
191
|
if (dropLegacyTimers)
|
|
164
|
-
|
|
165
|
-
const systemStatements = diffAll(buildSystemTables(),
|
|
166
|
-
const hardening = (await publicHasTruncate(pool, SYSTEM_TABLES.AUDIT)) ? systemHardeningStatements() : [];
|
|
192
|
+
systemActual.delete(SYSTEM_TABLES.WORKFLOW_TIMERS);
|
|
193
|
+
const systemStatements = diffAll(buildSystemTables(scope), systemActual);
|
|
194
|
+
const hardening = (await publicHasTruncate(pool, qualifyTable(SYSTEM_TABLES.AUDIT, scope))) ? systemHardeningStatements(scope) : [];
|
|
167
195
|
// existing tables are read-only unless the object opted in (`alter: true`):
|
|
168
196
|
// verify every declared field is a live column (prevents REST/MCP pointing
|
|
169
197
|
// at ghost columns). With `alter: true`, missing fields become ADD COLUMN
|
|
170
198
|
// instead of throwing.
|
|
171
199
|
for (const def of defs.values()) {
|
|
172
|
-
const actualTable =
|
|
200
|
+
const actualTable = objectActual.get(def.name);
|
|
173
201
|
if (actualTable === undefined)
|
|
174
202
|
continue; // new object, handled above
|
|
175
203
|
const cols = new Set(actualTable.columns.map((c) => c.name));
|
|
@@ -192,7 +220,7 @@ export async function migrate(registry, options = {}) {
|
|
|
192
220
|
}
|
|
193
221
|
}
|
|
194
222
|
}
|
|
195
|
-
const applied = expected.filter((t) => diffTable(t,
|
|
223
|
+
const applied = expected.filter((t) => diffTable(t, objectActual.get(t.name)).length > 0).map((t) => t.name);
|
|
196
224
|
// row-level security for the restricted-SQL role: provision the role
|
|
197
225
|
// (non-transactional) then diff the policy against the live RLS state.
|
|
198
226
|
// New tables always; existing tables only under `alter` and when the
|
|
@@ -205,7 +233,7 @@ export async function migrate(registry, options = {}) {
|
|
|
205
233
|
const { rows } = await pool.query('SELECT current_user AS u');
|
|
206
234
|
const currentUser = String(rows[0].u);
|
|
207
235
|
for (const def of registry.list()) {
|
|
208
|
-
const actualTable =
|
|
236
|
+
const actualTable = objectActual.get(def.name);
|
|
209
237
|
const applies = actualTable === undefined || (def.alter === true && actualTable.owner === currentUser);
|
|
210
238
|
if (!applies) {
|
|
211
239
|
if (actualTable !== undefined) {
|
|
@@ -220,20 +248,23 @@ export async function migrate(registry, options = {}) {
|
|
|
220
248
|
// ever granted, a second layer behind the sql-gate. The engine runs as
|
|
221
249
|
// the owner and bypasses RLS, so its own reads are unaffected.
|
|
222
250
|
for (const table of linkTables) {
|
|
223
|
-
if (
|
|
224
|
-
rlsStatements.push(`ALTER TABLE ${
|
|
251
|
+
if (systemActual.get(table.name)?.rlsEnabled !== true) {
|
|
252
|
+
rlsStatements.push(`ALTER TABLE ${qualifyTable(table.name, scope)} ENABLE ROW LEVEL SECURITY;`);
|
|
225
253
|
}
|
|
226
254
|
}
|
|
227
255
|
}
|
|
228
256
|
}
|
|
257
|
+
const sysSchema = scope.systemSchema;
|
|
229
258
|
const allStatements = [
|
|
259
|
+
...(sysSchema === undefined ? [] : [`CREATE SCHEMA IF NOT EXISTS ${q(sysSchema)};`]),
|
|
230
260
|
...enumStatements,
|
|
231
|
-
...(dropLegacyTimers ? [`DROP TABLE ${
|
|
261
|
+
...(dropLegacyTimers ? [`DROP TABLE ${qualifyTable(SYSTEM_TABLES.WORKFLOW_TIMERS, scope)};`] : []),
|
|
232
262
|
...statements,
|
|
233
263
|
...metaStatements,
|
|
234
264
|
...linkStatements,
|
|
235
265
|
...systemStatements,
|
|
236
266
|
...rlsStatements,
|
|
267
|
+
...(await objectRlsStatements(pool, registry, actual, options.objectRls, warnings, scope)),
|
|
237
268
|
...hardening,
|
|
238
269
|
];
|
|
239
270
|
// One transaction for DDL + `schema.applied.*` meta + workflow-definition
|
|
@@ -248,8 +279,8 @@ export async function migrate(registry, options = {}) {
|
|
|
248
279
|
await applyStatementsOn(client, allStatements);
|
|
249
280
|
const ts = new Date().toISOString();
|
|
250
281
|
for (const name of applied)
|
|
251
|
-
await setMeta(client, `schema.applied.${name}`, ts);
|
|
252
|
-
await registerWorkflowDefinitions(client, defs);
|
|
282
|
+
await setMeta(client, `schema.applied.${name}`, ts, scope);
|
|
283
|
+
await registerWorkflowDefinitions(client, defs, scope);
|
|
253
284
|
if (options.onCommit !== undefined)
|
|
254
285
|
await options.onCommit(client);
|
|
255
286
|
await client.query('COMMIT');
|
|
@@ -274,8 +305,8 @@ export async function migrate(registry, options = {}) {
|
|
|
274
305
|
* `version_seq` is a monotonic display/switch ordinal. Never rewrites or drops
|
|
275
306
|
* an existing row (append-only revision history for instance pinning).
|
|
276
307
|
*/
|
|
277
|
-
async function registerWorkflowDefinitions(db, defs) {
|
|
278
|
-
const table =
|
|
308
|
+
async function registerWorkflowDefinitions(db, defs, scope) {
|
|
309
|
+
const table = qualifyTable(SYSTEM_TABLES.WORKFLOW_DEFINITIONS, scope);
|
|
279
310
|
for (const def of defs.values()) {
|
|
280
311
|
if (def.workflow === undefined || def.workflowHash === undefined)
|
|
281
312
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/core/storage/migrate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/core/storage/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ObjectRegistry } from '../object/index.js';
|
|
2
|
+
import type { ActualTable } from './inspect.js';
|
|
3
|
+
import type { SchemaScope } from './schema-scope.js';
|
|
4
|
+
export interface ObjectRlsPlan {
|
|
5
|
+
statements: string[];
|
|
6
|
+
/** objects whose existing table cannot take RLS (not opted into `alter`, or not owned by the migrating role) */
|
|
7
|
+
skipped: string[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Plan the object-path RLS DDL (`EngineConfig.rls.enforce`) for every registry
|
|
11
|
+
* object: per-table policies + privileges for `role`, plus read access to the
|
|
12
|
+
* engine tables the scoped queries touch (identity directory for department /
|
|
13
|
+
* external-id scopes, record-metadata side tables, multiRelation link tables).
|
|
14
|
+
*
|
|
15
|
+
* With `owner` (migrate), an existing table is only touched when the object
|
|
16
|
+
* opted into `alter` and `owner` owns it — enabling RLS on a shared customer
|
|
17
|
+
* table would also hide its rows from other non-owner roles. Without `owner`
|
|
18
|
+
* (startup / doctor check) every object is planned, so any remaining statement
|
|
19
|
+
* means the database is not provisioned.
|
|
20
|
+
*/
|
|
21
|
+
export declare function planObjectRls(registry: ObjectRegistry, actual: ReadonlyMap<string, ActualTable>, role: string, options?: {
|
|
22
|
+
owner?: string;
|
|
23
|
+
scope?: SchemaScope;
|
|
24
|
+
}): ObjectRlsPlan;
|
|
25
|
+
//# sourceMappingURL=object-rls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-rls.d.ts","sourceRoot":"","sources":["../../../src/core/storage/object-rls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gHAAgH;IAChH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,EACxC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAO,GACpD,aAAa,CAwBf"}
|