@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.
@@ -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). */
@@ -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"}
@@ -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;
@@ -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;;;GAGG;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,CAejB;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
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
- await sql.begin(async (tx) => {
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
- await sql `
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":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/migrations/runner.ts"],"names":[],"mappings":"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"}
@@ -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,CA2B/C"}
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`;
@@ -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,+CAA+C,CAAC;IACzD,MAAM,GAAG,CAAA,8CAA8C,CAAC;IACxD,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"}
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"}
@@ -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.6",
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.5.5",
23
+ "@oktis-works/config": "^0.6.0",
24
24
  "postgres": "3.4.0"
25
25
  },
26
26
  "devDependencies": {