It includes some key organisational changes as well:
Addition of a DAO & Models Architecture, Router, Services pattern
This is matches up with the standard MVC pattern
Routers contain all logic for handling api requests and sending the incoming fast api objects to services. They also handle any exceptions thrown by the services
Services contain the business logic that connects the data with the front end. This is where the bulk of the magic happens
DAO = Data Access Objects. These are files which usually take in simple parameters or orm models and do operations on the Data Stores. It is used by the Services to interact with the DB
Doing it like this helps separate concerns and reduce tight coupling between components
Some parts of the code haven't fully been placed into this structure, ie output handlers and stream handlers. This is a task for anther day...
Most modules will have the same name and a different path so we differentiate by importing them using aliases, e.g.
from backend.converters import interviews as model_converter
from backend.db.models import interviews as db_models
from backend.models import llm as llm_models
from backend.services import llm as llm_service
from backend.services import tokens as tokens_service
This PR includes changes from multiple issues:
40
41
44
It includes some key organisational changes as well: