v2: выделение валидации — validate() в crud, db/queries получает готовый cidr

This commit is contained in:
2026-06-13 07:11:53 +04:00
parent 3c061b6c4b
commit fe5a7d0d37
4 changed files with 10 additions and 9 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
// ═══════════════════════════════════════════════════════════════════════════════
module.exports = {
version: '0.5.90',
version: '0.5.91',
iamUrl: process.env.V2_IAM_API_URL || 'https://auth-api.ngcloud.ru',
appUrl: process.env.V2_APP_URL || 'https://whitelist.nodejsk8s.services.ngcloud.ru',
};
+5 -2
View File
@@ -12,6 +12,7 @@
// ═══════════════════════════════════════════════════════════════════════════════
const q = require('../db/queries');
const { validate } = require('../validators');
async function resolve(clientId) {
return q.getOrCreateCompany(clientId, clientId);
@@ -26,13 +27,15 @@ async function list(clientId, includeDeleted = false) {
}
async function add(clientId, cidr, comment, email, impBy) {
const { cidr: validated, wasNormalized } = validate(cidr);
const co = await resolve(clientId);
return q.createEntry(co.id, cidr, comment, email, impBy);
return q.createEntry(co.id, validated, comment, email, impBy, wasNormalized);
}
async function edit(entryId, clientId, cidr, comment, email, impBy) {
const { cidr: validated, wasNormalized } = validate(cidr);
const co = await resolve(clientId);
return q.updateEntry(entryId, co.id, cidr, comment, email, impBy);
return q.updateEntry(entryId, co.id, validated, comment, email, impBy, wasNormalized);
}
async function remove(entryId, clientId, email, impBy) {
+3 -5
View File
@@ -4,7 +4,7 @@
// ═══════════════════════════════════════════════════════════════════════════════
const { pool } = require('./index');
const { validate, overlaps } = require('../validators');
const { overlaps } = require('../validators');
// ── Компании ──────────────────────────────────────────────────────────────────
@@ -48,8 +48,7 @@ async function listEntries(companyId, includeDeleted = false) {
/**
* Создать запись (с валидацией, проверкой лимита и пересечений).
*/
async function createEntry(companyId, rawValue, comment, userEmail, impersonatedBy) {
const { cidr, wasNormalized } = validate(rawValue);
async function createEntry(companyId, cidr, comment, userEmail, impersonatedBy, wasNormalized = false) {
const client = await pool.connect();
try {
await client.query('BEGIN');
@@ -95,8 +94,7 @@ async function createEntry(companyId, rawValue, comment, userEmail, impersonated
/**
* Обновить запись.
*/
async function updateEntry(entryId, companyId, rawValue, comment, userEmail, impersonatedBy) {
const { cidr, wasNormalized } = validate(rawValue);
async function updateEntry(entryId, companyId, cidr, comment, userEmail, impersonatedBy, wasNormalized = false) {
const client = await pool.connect();
try {
await client.query('BEGIN');