f1tness_parser/app/core/services/parser_service.py

27 lines
1.2 KiB
Python

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}")