v2: таблицы v2_→оригинальные + impersonation модуль (IMPERSONATION_TARGET + EXTRA_COMPANIES)

This commit is contained in:
2026-06-15 09:16:10 +04:00
parent cfaf8f34c3
commit 814d066b10
6 changed files with 70 additions and 37 deletions
+9 -9
View File
@@ -8,9 +8,9 @@
// 3. Безопасно для production: IF NOT EXISTS.
//
// ТАБЛИЦЫ:
// v2_companies — client_id (W-номер), name, custom_limit
// v2_entries — CIDR, комментарий, кто создал/изменил/удалил
// v2_audit — все действия: CREATE/UPDATE/DELETE, с impersonated_by
// companies — client_id (W-номер), name, custom_limit
// whitelist_entries — CIDR, комментарий, кто создал/изменил/удалил
// audit_log — все действия: CREATE/UPDATE/DELETE, с impersonated_by
//
// ИНДЕКСЫ: на company_id для быстрых SELECT + на unique(client_id).
// ═══════════════════════════════════════════════════════════════════════════════
@@ -18,7 +18,7 @@
async function ensureSchema(pool) {
await pool.query(`
-- Компании: W-номер уникален, upsert через ON CONFLICT
CREATE TABLE IF NOT EXISTS v2_companies (
CREATE TABLE IF NOT EXISTS companies (
id SERIAL PRIMARY KEY,
client_id VARCHAR(64) NOT NULL UNIQUE,
name VARCHAR(255),
@@ -28,7 +28,7 @@ async function ensureSchema(pool) {
);
-- Записи: CIDR + метаданные, soft delete
CREATE TABLE IF NOT EXISTS v2_entries (
CREATE TABLE IF NOT EXISTS whitelist_entries (
id SERIAL PRIMARY KEY,
company_id INTEGER NOT NULL,
value_cidr VARCHAR(64) NOT NULL,
@@ -42,7 +42,7 @@ async function ensureSchema(pool) {
);
-- Аудит: каждое действие с возможностью отследить имперсонацию
CREATE TABLE IF NOT EXISTS v2_audit (
CREATE TABLE IF NOT EXISTS audit_log (
id SERIAL PRIMARY KEY,
user_email VARCHAR(255) NOT NULL,
company_id INTEGER NOT NULL,
@@ -54,11 +54,11 @@ async function ensureSchema(pool) {
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_v2_audit_company_time
ON v2_audit(company_id, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_audit_log_company_time
ON audit_log(company_id, created_at DESC);
`);
console.log('[v2:db] Schema ensured');
console.log('[db] Schema ensured');
}
module.exports = { ensureSchema };