@oktis-works/database 0.5.6 → 0.5.8
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/dist/connection.d.ts +2 -0
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +4 -0
- package/dist/connection.js.map +1 -1
- package/dist/migrations/runner.d.ts +2 -0
- package/dist/migrations/runner.d.ts.map +1 -1
- package/dist/migrations/runner.js +23 -3
- package/dist/migrations/runner.js.map +1 -1
- package/dist/rls/index.d.ts.map +1 -1
- package/dist/rls/index.js +5 -1
- package/dist/rls/index.js.map +1 -1
- package/dist/schema/schema.sql +36 -1
- package/package.json +2 -2
package/dist/connection.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ import type { DatabaseConfig } from '@oktis-works/config';
|
|
|
9
9
|
export type RepoSql = postgres.Sql & {
|
|
10
10
|
unsafe<T extends any[] = postgres.Row[]>(query: string, parameters?: any[], queryOptions?: any): postgres.PendingQuery<T>;
|
|
11
11
|
};
|
|
12
|
+
/** Tagged template para interpolação segura de identificadores (ex.: sql`CREATE TABLE \${sql(name)}`). Não disponível no runtime; usamos sanitização simples. */
|
|
13
|
+
export declare function sqlId(name: string): string;
|
|
12
14
|
export declare function createConnection(config: DatabaseConfig): RepoSql;
|
|
13
15
|
export declare function getConnection(): RepoSql;
|
|
14
16
|
/** Conexão de leitura — usa replica se configurada, senão primary (transparente). */
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAKA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,GAAG;IACnC,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,EACrC,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,GAAG,EAAE,EAClB,YAAY,CAAC,EAAE,GAAG,GACjB,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAC7B,CAAC;AAOF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAsChE;AAED,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOpG;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED,wBAAgB,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAoB;AAEzE,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAKrD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAQpD"}
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAKA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,GAAG;IACnC,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,EACrC,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,GAAG,EAAE,EAClB,YAAY,CAAC,EAAE,GAAG,GACjB,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAC7B,CAAC;AAOF,iKAAiK;AACjK,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAsChE;AAED,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOpG;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED,wBAAgB,SAAS,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAoB;AAEzE,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAKrD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAQpD"}
|
package/dist/connection.js
CHANGED
|
@@ -8,6 +8,10 @@ let _sql = null;
|
|
|
8
8
|
let _replicaSql = null;
|
|
9
9
|
let _driver = 'postgres';
|
|
10
10
|
const requestConnection = new AsyncLocalStorage();
|
|
11
|
+
/** Tagged template para interpolação segura de identificadores (ex.: sql`CREATE TABLE \${sql(name)}`). Não disponível no runtime; usamos sanitização simples. */
|
|
12
|
+
export function sqlId(name) {
|
|
13
|
+
return name.replace(/[^a-zA-Z0-9_]/g, '');
|
|
14
|
+
}
|
|
11
15
|
export function createConnection(config) {
|
|
12
16
|
if (_sql)
|
|
13
17
|
return _sql;
|
package/dist/connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,8 @@ export declare function runMigrations(tenantId: string, migrationsDir: string):
|
|
|
34
34
|
/**
|
|
35
35
|
* Aplica todas as migrations de um plugin em ordem de versão (idempotente).
|
|
36
36
|
* Usado no install/upgrade do plugin; cada migration roda em transação própria.
|
|
37
|
+
*
|
|
38
|
+
* WP8: cria schema `plugin_<name>` e aplica RLS automático nas tabelas criadas.
|
|
37
39
|
*/
|
|
38
40
|
export declare function runPluginMigrations(tenantId: string, owner: string, files: Array<Pick<MigrationFile, 'version' | 'name' | 'sql'>>): Promise<number>;
|
|
39
41
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/migrations/runner.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiBD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CA0BlE;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAOvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoCnD;AAED
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/migrations/runner.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiBD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CA0BlE;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAOvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoCnD;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,GAC5D,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
|
|
@@ -3,7 +3,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
3
3
|
import { readFileSync, readdirSync } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
import { createHash } from 'node:crypto';
|
|
6
|
-
import { getConnection } from '../connection.js';
|
|
6
|
+
import { getConnection, sqlId } from '../connection.js';
|
|
7
7
|
function computeChecksum(content) {
|
|
8
8
|
return createHash('sha256').update(content).digest('hex');
|
|
9
9
|
}
|
|
@@ -167,12 +167,30 @@ export async function runMigrations(tenantId, migrationsDir) {
|
|
|
167
167
|
/**
|
|
168
168
|
* Aplica todas as migrations de um plugin em ordem de versão (idempotente).
|
|
169
169
|
* Usado no install/upgrade do plugin; cada migration roda em transação própria.
|
|
170
|
+
*
|
|
171
|
+
* WP8: cria schema `plugin_<name>` e aplica RLS automático nas tabelas criadas.
|
|
170
172
|
*/
|
|
171
173
|
export async function runPluginMigrations(tenantId, owner, files) {
|
|
174
|
+
// Deriva o nome do plugin do owner (ex.: "plugin_seo" → "seo")
|
|
175
|
+
const pluginName = owner.startsWith('plugin_') ? owner.slice(7) : owner;
|
|
176
|
+
const schemaName = `plugin_${pluginName}`;
|
|
172
177
|
let applied = 0;
|
|
173
178
|
const sorted = [...files].sort((a, b) => a.version.localeCompare(b.version));
|
|
174
179
|
for (const file of sorted) {
|
|
175
180
|
const before = await getAppliedMigrations(tenantId);
|
|
181
|
+
// Executa a migration dentro do schema do plugin com RLS
|
|
182
|
+
await getConnection().begin(async (tx) => {
|
|
183
|
+
// Define tenant context para RLS
|
|
184
|
+
await tx `SELECT set_config('app.current_tenant_id', ${tenantId}, false)`;
|
|
185
|
+
// Cria schema do plugin se não existe e concede uso
|
|
186
|
+
await tx `CREATE SCHEMA IF NOT EXISTS ${sqlId(schemaName)}`;
|
|
187
|
+
await tx `GRANT USAGE ON SCHEMA ${sqlId(schemaName)} TO CURRENT_ROLE`;
|
|
188
|
+
// Define search_path para o schema do plugin (tabelas criadas vão para lá)
|
|
189
|
+
await tx `SET LOCAL search_path = ${sqlId(schemaName)}, public`;
|
|
190
|
+
// Executa a migration
|
|
191
|
+
await tx.unsafe(extractUpSection(file.sql));
|
|
192
|
+
});
|
|
193
|
+
// Registra a migration (na tabela core.migrations, não no schema do plugin)
|
|
176
194
|
await applyMigration(tenantId, {
|
|
177
195
|
...file,
|
|
178
196
|
owner,
|
|
@@ -201,12 +219,14 @@ export async function rollbackPluginMigrations(tenantId, owner, downSql) {
|
|
|
201
219
|
if (applied.length === 0)
|
|
202
220
|
return 0;
|
|
203
221
|
if (downSql) {
|
|
204
|
-
|
|
222
|
+
const conn = getConnection();
|
|
223
|
+
await conn.begin(async (tx) => {
|
|
205
224
|
await tx `SELECT set_config('app.current_tenant_id', ${tenantId}, false)`;
|
|
206
225
|
await tx.unsafe(downSql);
|
|
207
226
|
});
|
|
208
227
|
}
|
|
209
|
-
|
|
228
|
+
const conn = getConnection();
|
|
229
|
+
await conn `
|
|
210
230
|
DELETE FROM migrations
|
|
211
231
|
WHERE tenant_id = ${tenantId} AND owner = ${owner}
|
|
212
232
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/migrations/runner.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/migrations/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/rls/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rls/index.ts"],"names":[],"mappings":"AAIA,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQtE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGxD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMjE;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rls/index.ts"],"names":[],"mappings":"AAIA,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQtE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGxD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMjE;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B/C"}
|
package/dist/rls/index.js
CHANGED
|
@@ -32,14 +32,18 @@ export async function enableRLS() {
|
|
|
32
32
|
await sql `ALTER TABLE menus FORCE ROW LEVEL SECURITY`;
|
|
33
33
|
await sql `ALTER TABLE settings ENABLE ROW LEVEL SECURITY`;
|
|
34
34
|
await sql `ALTER TABLE settings FORCE ROW LEVEL SECURITY`;
|
|
35
|
+
await sql `ALTER TABLE plugins ENABLE ROW LEVEL SECURITY`;
|
|
36
|
+
await sql `ALTER TABLE plugins FORCE ROW LEVEL SECURITY`;
|
|
37
|
+
await sql `ALTER TABLE plugin_tenants ENABLE ROW LEVEL SECURITY`;
|
|
38
|
+
await sql `ALTER TABLE plugin_tenants FORCE ROW LEVEL SECURITY`;
|
|
35
39
|
await sql `ALTER TABLE taxonomies ENABLE ROW LEVEL SECURITY`;
|
|
36
40
|
await sql `ALTER TABLE taxonomies FORCE ROW LEVEL SECURITY`;
|
|
37
41
|
await sql `ALTER TABLE taxonomy_terms ENABLE ROW LEVEL SECURITY`;
|
|
38
42
|
await sql `ALTER TABLE taxonomy_terms FORCE ROW LEVEL SECURITY`;
|
|
39
43
|
await sql `ALTER TABLE content_taxonomy_terms ENABLE ROW LEVEL SECURITY`;
|
|
40
44
|
await sql `ALTER TABLE content_taxonomy_terms FORCE ROW LEVEL SECURITY`;
|
|
41
|
-
await sql `ALTER TABLE plugins ENABLE ROW LEVEL SECURITY`;
|
|
42
45
|
await sql `ALTER TABLE themes ENABLE ROW LEVEL SECURITY`;
|
|
46
|
+
await sql `ALTER TABLE themes FORCE ROW LEVEL SECURITY`;
|
|
43
47
|
await sql `ALTER TABLE builds ENABLE ROW LEVEL SECURITY`;
|
|
44
48
|
await sql `ALTER TABLE deployments ENABLE ROW LEVEL SECURITY`;
|
|
45
49
|
await sql `ALTER TABLE events ENABLE ROW LEVEL SECURITY`;
|
package/dist/rls/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rls/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,yEAAyE;IACzE,gEAAgE;IAChE,0EAA0E;IAC1E,gCAAgC;IAChC,MAAM,GAAG,CAAA,8CAA8C,QAAQ,UAAU,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,CAAA,6BAA6B,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,GAAG,CAA4C;;GAEnE,CAAC;IACF,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,qBAAqB,IAAI,IAAI,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,CAAA,+CAA+C,CAAC;IACzD,MAAM,GAAG,CAAA,8CAA8C,CAAC;IACxD,MAAM,GAAG,CAAA,6CAA6C,CAAC;IACvD,MAAM,GAAG,CAAA,4CAA4C,CAAC;IACtD,MAAM,GAAG,CAAA,kDAAkD,CAAC;IAC5D,MAAM,GAAG,CAAA,4CAA4C,CAAC;IACtD,MAAM,GAAG,CAAA,6CAA6C,CAAC;IACvD,MAAM,GAAG,CAAA,4CAA4C,CAAC;IACtD,MAAM,GAAG,CAAA,gDAAgD,CAAC;IAC1D,MAAM,GAAG,CAAA,+CAA+C,CAAC;IACzD,MAAM,GAAG,CAAA,kDAAkD,CAAC;IAC5D,MAAM,GAAG,CAAA,iDAAiD,CAAC;IAC3D,MAAM,GAAG,CAAA,sDAAsD,CAAC;IAChE,MAAM,GAAG,CAAA,qDAAqD,CAAC;IAC/D,MAAM,GAAG,CAAA,8DAA8D,CAAC;IACxE,MAAM,GAAG,CAAA,6DAA6D,CAAC;IACvE,MAAM,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rls/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,yEAAyE;IACzE,gEAAgE;IAChE,0EAA0E;IAC1E,gCAAgC;IAChC,MAAM,GAAG,CAAA,8CAA8C,QAAQ,UAAU,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,CAAA,6BAA6B,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,GAAG,CAA4C;;GAEnE,CAAC;IACF,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,qBAAqB,IAAI,IAAI,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,CAAA,+CAA+C,CAAC;IACzD,MAAM,GAAG,CAAA,8CAA8C,CAAC;IACxD,MAAM,GAAG,CAAA,6CAA6C,CAAC;IACvD,MAAM,GAAG,CAAA,4CAA4C,CAAC;IACtD,MAAM,GAAG,CAAA,kDAAkD,CAAC;IAC5D,MAAM,GAAG,CAAA,4CAA4C,CAAC;IACtD,MAAM,GAAG,CAAA,6CAA6C,CAAC;IACvD,MAAM,GAAG,CAAA,4CAA4C,CAAC;IACtD,MAAM,GAAG,CAAA,gDAAgD,CAAC;IAC1D,MAAM,GAAG,CAAA,+CAA+C,CAAC;IACzD,MAAM,GAAG,CAAA,+CAA+C,CAAC;IACzD,MAAM,GAAG,CAAA,8CAA8C,CAAC;IACxD,MAAM,GAAG,CAAA,sDAAsD,CAAC;IAChE,MAAM,GAAG,CAAA,qDAAqD,CAAC;IAC/D,MAAM,GAAG,CAAA,kDAAkD,CAAC;IAC5D,MAAM,GAAG,CAAA,iDAAiD,CAAC;IAC3D,MAAM,GAAG,CAAA,sDAAsD,CAAC;IAChE,MAAM,GAAG,CAAA,qDAAqD,CAAC;IAC/D,MAAM,GAAG,CAAA,8DAA8D,CAAC;IACxE,MAAM,GAAG,CAAA,6DAA6D,CAAC;IACvE,MAAM,GAAG,CAAA,8CAA8C,CAAC;IACxD,MAAM,GAAG,CAAA,6CAA6C,CAAC;IACvD,MAAM,GAAG,CAAA,8CAA8C,CAAC;IACxD,MAAM,GAAG,CAAA,mDAAmD,CAAC;IAC7D,MAAM,GAAG,CAAA,8CAA8C,CAAC;IACxD,MAAM,GAAG,CAAA,kDAAkD,CAAC;IAC5D,MAAM,GAAG,CAAA,kDAAkD,CAAC;IAC5D,MAAM,GAAG,CAAA,gDAAgD,CAAC;IAC1D,MAAM,GAAG,CAAA,gDAAgD,CAAC;AAC5D,CAAC"}
|
package/dist/schema/schema.sql
CHANGED
|
@@ -276,7 +276,8 @@ CREATE TABLE IF NOT EXISTS plugins (
|
|
|
276
276
|
status VARCHAR(50) NOT NULL DEFAULT 'DISCOVERED' CHECK (status IN (
|
|
277
277
|
'DISCOVERED', 'VALIDATED', 'INSTALLED', 'MIGRATED', 'ACTIVATED', 'RUNNING',
|
|
278
278
|
'DEACTIVATED', 'UNINSTALLED', 'INSTALL_FAILED', 'MIGRATION_FAILED',
|
|
279
|
-
'ACTIVATION_FAILED', 'INCOMPATIBLE', 'QUARANTINED'
|
|
279
|
+
'ACTIVATION_FAILED', 'INCOMPATIBLE', 'QUARANTINED',
|
|
280
|
+
'MISSING', 'LOAD_FAILED'
|
|
280
281
|
)),
|
|
281
282
|
manifest JSONB NOT NULL,
|
|
282
283
|
permissions JSONB NOT NULL DEFAULT '[]'::jsonb,
|
|
@@ -292,6 +293,25 @@ CREATE INDEX IF NOT EXISTS idx_plugins_tenant ON plugins(tenant_id) WHERE tenant
|
|
|
292
293
|
CREATE INDEX IF NOT EXISTS idx_plugins_name ON plugins(name);
|
|
293
294
|
CREATE INDEX IF NOT EXISTS idx_plugins_status ON plugins(status);
|
|
294
295
|
|
|
296
|
+
-- ============================================================
|
|
297
|
+
-- Plugin <-> Tenant (ativação por tenant)
|
|
298
|
+
-- ============================================================
|
|
299
|
+
CREATE TABLE IF NOT EXISTS plugin_tenants (
|
|
300
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
301
|
+
plugin_id UUID NOT NULL REFERENCES plugins(id) ON DELETE CASCADE,
|
|
302
|
+
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
303
|
+
status VARCHAR(20) NOT NULL DEFAULT 'ENABLED' CHECK (status IN ('ENABLED', 'DISABLED')),
|
|
304
|
+
error TEXT,
|
|
305
|
+
enabled_at TIMESTAMP WITH TIME ZONE,
|
|
306
|
+
disabled_at TIMESTAMP WITH TIME ZONE,
|
|
307
|
+
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
|
308
|
+
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
|
309
|
+
UNIQUE (plugin_id, tenant_id)
|
|
310
|
+
);
|
|
311
|
+
|
|
312
|
+
CREATE INDEX IF NOT EXISTS idx_plugin_tenants_tenant ON plugin_tenants(tenant_id, status);
|
|
313
|
+
CREATE INDEX IF NOT EXISTS idx_plugin_tenants_plugin ON plugin_tenants(plugin_id);
|
|
314
|
+
|
|
295
315
|
-- ============================================================
|
|
296
316
|
-- Plugin Dependencies
|
|
297
317
|
-- ============================================================
|
|
@@ -777,7 +797,11 @@ ALTER TABLE menus FORCE ROW LEVEL SECURITY;
|
|
|
777
797
|
ALTER TABLE settings ENABLE ROW LEVEL SECURITY;
|
|
778
798
|
ALTER TABLE settings FORCE ROW LEVEL SECURITY;
|
|
779
799
|
ALTER TABLE plugins ENABLE ROW LEVEL SECURITY;
|
|
800
|
+
ALTER TABLE plugins FORCE ROW LEVEL SECURITY;
|
|
780
801
|
ALTER TABLE themes ENABLE ROW LEVEL SECURITY;
|
|
802
|
+
ALTER TABLE themes FORCE ROW LEVEL SECURITY;
|
|
803
|
+
ALTER TABLE plugin_tenants ENABLE ROW LEVEL SECURITY;
|
|
804
|
+
ALTER TABLE plugin_tenants FORCE ROW LEVEL SECURITY;
|
|
781
805
|
ALTER TABLE builds ENABLE ROW LEVEL SECURITY;
|
|
782
806
|
ALTER TABLE deployments ENABLE ROW LEVEL SECURITY;
|
|
783
807
|
ALTER TABLE events ENABLE ROW LEVEL SECURITY;
|
|
@@ -856,6 +880,17 @@ BEGIN
|
|
|
856
880
|
END IF;
|
|
857
881
|
END $$;
|
|
858
882
|
|
|
883
|
+
DO $$
|
|
884
|
+
BEGIN
|
|
885
|
+
IF NOT EXISTS (
|
|
886
|
+
SELECT 1 FROM pg_policies
|
|
887
|
+
WHERE policyname = 'tenant_isolation_plugin_tenants' AND tablename = 'plugin_tenants'
|
|
888
|
+
) THEN
|
|
889
|
+
CREATE POLICY tenant_isolation_plugin_tenants ON plugin_tenants
|
|
890
|
+
USING (tenant_id = current_setting('app.current_tenant_id', true)::uuid);
|
|
891
|
+
END IF;
|
|
892
|
+
END $$;
|
|
893
|
+
|
|
859
894
|
DO $$
|
|
860
895
|
BEGIN
|
|
861
896
|
IF NOT EXISTS (
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oktis-works/database",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.8",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@oktis-works/types": "^0.5.5",
|
|
23
|
-
"@oktis-works/config": "^0.
|
|
23
|
+
"@oktis-works/config": "^0.6.0",
|
|
24
24
|
"postgres": "3.4.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|