inital commit

This commit is contained in:
2026-06-08 15:57:11 +02:00
parent aaf8729663
commit d9ca48addc
114 changed files with 12172 additions and 1 deletions

View File

@@ -0,0 +1,65 @@
from __future__ import annotations
import argparse
import json
from app.db.bootstrap import create_all_tables
from app.db.models import AuditLog
from app.db.session import SessionLocal
from app.security.api_keys import authenticate_api_key
from app.settings import settings
def _row(item: AuditLog) -> dict:
return {
"id": item.id,
"created_at": item.created_at.isoformat() if item.created_at else None,
"tenant_id": item.tenant_id,
"user_id": item.user_id,
"api_key_id": item.api_key_id,
"action": item.action,
"object_type": item.object_type,
"object_id": item.object_id,
"details": item.details,
}
def main() -> None:
parser = argparse.ArgumentParser(description="List audit log entries.")
parser.add_argument("--api-key", default=settings.dev_bootstrap_api_key)
parser.add_argument("--limit", type=int, default=50)
parser.add_argument("--offset", type=int, default=0)
parser.add_argument("--action")
parser.add_argument("--object-type")
parser.add_argument("--object-id")
parser.add_argument("--json", action="store_true")
args = parser.parse_args()
create_all_tables()
with SessionLocal() as session:
api_key = authenticate_api_key(session, args.api_key)
if not api_key:
raise SystemExit("Invalid API key")
query = session.query(AuditLog).filter(AuditLog.tenant_id == api_key.tenant_id)
if args.action:
query = query.filter(AuditLog.action == args.action)
if args.object_type:
query = query.filter(AuditLog.object_type == args.object_type)
if args.object_id:
query = query.filter(AuditLog.object_id == args.object_id)
items = query.order_by(AuditLog.created_at.desc()).offset(args.offset).limit(args.limit).all()
rows = [_row(item) for item in items]
if args.json:
print(json.dumps({"items": rows}, indent=2, ensure_ascii=False, default=str))
return
for row in rows:
print(
f"{row['created_at']} | {row['action']} | "
f"{row['object_type'] or '-'}:{row['object_id'] or '-'} | {row['details'] or {}}"
)
if __name__ == "__main__":
main()