Implement Manticore fully and re-theme
This commit is contained in:
46
core/management/commands/manticore_backfill.py
Normal file
46
core/management/commands/manticore_backfill.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
|
||||
from core.events.manticore import upsert_conversation_event
|
||||
from core.models import ConversationEvent
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Backfill behavioral events into Manticore from ConversationEvent rows."
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument(
|
||||
"--from-conversation-events",
|
||||
action="store_true",
|
||||
help="Replay ConversationEvent rows into the Manticore event table.",
|
||||
)
|
||||
parser.add_argument("--user-id", type=int, default=None)
|
||||
parser.add_argument("--limit", type=int, default=5000)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
if not bool(options.get("from_conversation_events")):
|
||||
raise CommandError("Pass --from-conversation-events to run this backfill.")
|
||||
|
||||
queryset = (
|
||||
ConversationEvent.objects.select_related("session__identifier")
|
||||
.order_by("ts", "created_at")
|
||||
)
|
||||
user_id = options.get("user_id")
|
||||
if user_id is not None:
|
||||
queryset = queryset.filter(user_id=int(user_id))
|
||||
|
||||
scanned = 0
|
||||
indexed = 0
|
||||
limit = max(1, int(options.get("limit") or 5000))
|
||||
for event in queryset[:limit]:
|
||||
scanned += 1
|
||||
upsert_conversation_event(event)
|
||||
indexed += 1
|
||||
|
||||
self.stdout.write(
|
||||
self.style.SUCCESS(
|
||||
"manticore-backfill scanned=%s indexed=%s user=%s"
|
||||
% (scanned, indexed, user_id if user_id is not None else "-")
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user