feat: add audit log tables, indexes, and CLI/content recording hooks
This commit is contained in:
@@ -7,6 +7,7 @@ from fastapi.responses import RedirectResponse, JSONResponse
|
||||
from devplacepy.database import get_table, db
|
||||
from devplacepy.utils import generate_uid, require_user
|
||||
from devplacepy.models import ReactionForm
|
||||
from devplacepy.services.audit import record as audit
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
router = APIRouter()
|
||||
@@ -35,6 +36,7 @@ async def react(
|
||||
)
|
||||
if existing:
|
||||
reactions.delete(id=existing["id"])
|
||||
reaction_event = "reaction.remove"
|
||||
else:
|
||||
reactions.insert(
|
||||
{
|
||||
@@ -46,6 +48,18 @@ async def react(
|
||||
"created_at": datetime.now(timezone.utc).isoformat(),
|
||||
}
|
||||
)
|
||||
reaction_event = "reaction.add"
|
||||
|
||||
audit.record(
|
||||
request,
|
||||
reaction_event,
|
||||
user=user,
|
||||
target_type=target_type,
|
||||
target_uid=target_uid,
|
||||
metadata={"emoji": emoji},
|
||||
summary=f"{user['username']} {'removed' if existing else 'added'} {emoji} on {target_type} {target_uid}",
|
||||
links=[audit.target(target_type, target_uid)],
|
||||
)
|
||||
|
||||
counts = {
|
||||
row["emoji"]: row["c"]
|
||||
|
||||
Reference in New Issue
Block a user