From a387756a6e15ed157cb7333a1f85ab022ff64771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=B8=D0=B3=D0=BE=D1=80=D0=B8=D0=B9=20=D0=A1?= =?UTF-8?q?=D0=B0=D1=84=D1=80=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Sun, 24 May 2026 21:49:04 +0000 Subject: [PATCH] Delete internal/storage/audit.go --- internal/storage/audit.go | 126 -------------------------------------- 1 file changed, 126 deletions(-) delete mode 100644 internal/storage/audit.go diff --git a/internal/storage/audit.go b/internal/storage/audit.go deleted file mode 100644 index 19e0f33..0000000 --- a/internal/storage/audit.go +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2026 Safronov Grigorii - * - * Licensed under the CDDL, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * - * You may obtain a copy of the License at - * https://opensource.org/licenses/CDDL-1.0 - */ - -// Файл: internal/storage/audit.go -// Назначение: Аудит всех операций создания, изменения, удаления данных -// с записью временной метки с точностью до миллисекунды - -package storage - -import ( - "fmt" - "sync" - "time" -) - -// AuditEntry представляет запись аудита -type AuditEntry struct { - ID string `msgpack:"id"` - Timestamp int64 `msgpack:"timestamp"` // Unix миллисекунды - TimestampStr string `msgpack:"timestamp_str"` // Человекочитаемая строка - Operation string `msgpack:"operation"` // CREATE, UPDATE, DELETE, START, COMMIT, ABORT, CLUSTER - DataType string `msgpack:"data_type"` // DATABASE, COLLECTION, DOCUMENT, FIELD, TUPLE, SESSION, TRANSACTION, CLUSTER - Name string `msgpack:"name"` // Имя объекта - Details map[string]interface{} `msgpack:"details"` // Детали операции -} - -// AuditLogger управляет аудитом -type AuditLogger struct { - entries []AuditEntry - mu sync.RWMutex -} - -var globalAuditLogger = &AuditLogger{ - entries: make([]AuditEntry, 0), -} - -// GetCurrentTimestamp возвращает текущую временную метку с миллисекундами -func GetCurrentTimestamp() (int64, string) { - now := time.Now() - timestampMs := now.UnixMilli() - timestampStr := now.Format("2006-01-02 15:04:05.000") - return timestampMs, timestampStr -} - -// LogAudit записывает событие в аудит -func LogAudit(operation, dataType, name string, details map[string]interface{}) { - timestampMs, timestampStr := GetCurrentTimestamp() - - entry := AuditEntry{ - ID: fmt.Sprintf("%d", timestampMs), - Timestamp: timestampMs, - TimestampStr: timestampStr, - Operation: operation, - DataType: dataType, - Name: name, - Details: details, - } - - globalAuditLogger.mu.Lock() - globalAuditLogger.entries = append(globalAuditLogger.entries, entry) - globalAuditLogger.mu.Unlock() -} - -// GetAuditLog возвращает копию лога аудита -func GetAuditLog() []AuditEntry { - globalAuditLogger.mu.RLock() - defer globalAuditLogger.mu.RUnlock() - - result := make([]AuditEntry, len(globalAuditLogger.entries)) - copy(result, globalAuditLogger.entries) - return result -} - -// AuditDatabaseOperation логирует операцию с базой данных -func AuditDatabaseOperation(operation, dbName string) { - LogAudit(operation, "DATABASE", dbName, map[string]interface{}{ - "database": dbName, - }) -} - -// AuditCollectionOperation логирует операцию с коллекцией -func AuditCollectionOperation(operation, dbName, collName string, settings interface{}) { - LogAudit(operation, "COLLECTION", fmt.Sprintf("%s.%s", dbName, collName), map[string]interface{}{ - "database": dbName, - "collection": collName, - "settings": settings, - }) -} - -// AuditDocumentOperation логирует операцию с документом -func AuditDocumentOperation(operation, dbName, collName, docID string, fields map[string]interface{}) { - LogAudit(operation, "DOCUMENT", fmt.Sprintf("%s.%s.%s", dbName, collName, docID), map[string]interface{}{ - "database": dbName, - "collection": collName, - "document_id": docID, - "fields": fields, - }) -} - -// AuditFieldOperation логирует операцию с полем -func AuditFieldOperation(operation, dbName, collName, docID, fieldName string, value interface{}) { - LogAudit(operation, "FIELD", fmt.Sprintf("%s.%s.%s.%s", dbName, collName, docID, fieldName), map[string]interface{}{ - "database": dbName, - "collection": collName, - "document_id": docID, - "field": fieldName, - "value": value, - }) -} - -// AuditTupleOperation логирует операцию с кортежем -func AuditTupleOperation(operation, dbName, collName, docID, tuplePath string) { - LogAudit(operation, "TUPLE", fmt.Sprintf("%s.%s.%s.%s", dbName, collName, docID, tuplePath), map[string]interface{}{ - "database": dbName, - "collection": collName, - "document_id": docID, - "tuple_path": tuplePath, - }) -}