from typing import List from app.schemas.parser import ParseRequest, ParseResponse, ParseFormat from app.core.parsers.text_data import parse_old_data from app.core.parsers.apple import AppleNotesParser from app.core.parsers.obsidian import ObsidianNotesParser class ParserService: def __init__(self): self._apple_parser = AppleNotesParser() self._obsidian_parser = ObsidianNotesParser() async def parse_data(self, request: ParseRequest) -> List[ParseResponse]: if request.format == ParseFormat.text: trainings = parse_old_data() return [ParseResponse(**training.model_dump()) for training in trainings] elif request.format == ParseFormat.apple: trainings = self._apple_parser.parse(request.data) return [ParseResponse(**training.model_dump()) for training in trainings] elif request.format == ParseFormat.obsidian: trainings = self._obsidian_parser.parse(request.data) return [ParseResponse(**training.model_dump()) for training in trainings] else: raise ValueError(f"Unsupported format: {request.format}")