39269-vm/core/services/ingestion.py
Flatlogic Bot 00fab55ca3 RIPLEY
2026-03-22 22:04:10 +00:00

31 lines
1.1 KiB
Python

from django.db import transaction
from core.models import Source, Entity
class IngestionService:
@staticmethod
def ingest_data(source_name, entity_type, raw_data):
"""
Aggregates and normalizes raw data into the system.
"""
with transaction.atomic():
source, _ = Source.objects.get_or_create(name=source_name)
# Simple normalization logic: assume raw_data is a dict
# In a real scenario, this would be more complex depending on source schema
identifier = raw_data.get('identifier')
if not identifier:
raise ValueError("Missing identifier in raw_data")
entity, created = Entity.objects.get_or_create(
identifier=identifier,
entity_type=entity_type,
defaults={'source': source, 'metadata': raw_data.get('metadata', {})}
)
if not created:
# Update existing entity metadata
entity.metadata.update(raw_data.get('metadata', {}))
entity.save()
return entity