27 lines
1.2 KiB
Python
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}")
|