39269-vm/core/services/ingestion.py
Flatlogic Bot b19870501a RIPLEY
2026-03-22 22:50:51 +00:00

31 lines
1.1 KiB
Python

from django.db import transaction
from core.models import Source, Entity, IdentityProfile
class IngestionService:
@staticmethod
def ingest_data(source_name, entity_type, value, profile_data=None):
"""
Aggregates and normalizes data into the system, optionally linking it to an IdentityProfile.
"""
with transaction.atomic():
source, _ = Source.objects.get_or_create(name=source_name)
profile = None
if profile_data:
profile, _ = IdentityProfile.objects.get_or_create(
full_name=profile_data.get('full_name', 'Unknown'),
defaults={'description': profile_data.get('description', '')}
)
entity, created = Entity.objects.get_or_create(
entity_type=entity_type,
value=value,
source=source,
defaults={'profile': profile}
)
if not created and profile:
entity.profile = profile
entity.save()
return entity