Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This MR addresses an initial attempt at:
Database Setup: SQLite database using
alembic
for migrations. SQLite was selected for its simplicity and portability, as it enables a single-file database (data/orders.db
), well-suited for Docker environments with volume mounting.GET Endpoint for Orders: GET endpoint to read orders from the database and provide the results through an API. This endpoint is consumed by a Streamlit app to display order data (see screenshots below).
POST endpoint for creating orders. Note that this will need future updates to handle stock management. The Streamlit app was updated to display orders in a table format.
This is designed using an
OrdersService
to handle the Business logic, and uses a Repository Pattern (OrdersRepository
) aUnitOfWork
to handle interaction with the database.where the
OrdersRepository
directly queries the DB through thesqlalchemy
model,OrderModel
. For example, theOrdersRepository
has the thelist
method that queries theOrderModel
, and returns as a list ofOrder
objects (Order
is a class to hold the data).and is accessed through the
OrdersService
from theget_order
method: