diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..56affe8bb575930ee41115fba2f7e1afe80b0e48 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +# List of microservices and their respective ports +SERVICES = admins_service bikes_service rentals_service reviews_service users_service +PORTS = 8001 8002 8003 8004 8005 + +# Build all microservices +build: + @$(foreach service,$(SERVICES),docker build -t $(service) --build-arg SERVICE_PORT=$(word $(words $(subst _, ,$(service))),$(PORTS)) --file $(service)/Dockerfile . && true) + +# Clean up images +clean: + @$(foreach service,$(SERVICES),docker rmi -f $(service) && true) diff --git a/clItest.py b/clItest.py deleted file mode 100644 index 5e12ea1c29de864fb2be410a6575a7f9b640508e..0000000000000000000000000000000000000000 --- a/clItest.py +++ /dev/null @@ -1,16 +0,0 @@ -import requests - -url = "http://127.0.0.1:8000/users/" - -data = { - "username": "john_doe", - "password": "password123", - "email": "john@example.com", - "phone_number": "1234567890" - # Add other fields as needed -} - -response = requests.post(url, json=data) - -print(response.status_code) -print(response.json()) \ No newline at end of file diff --git a/poc/__pycache__/main.cpython-39.pyc b/poc/__pycache__/main.cpython-39.pyc deleted file mode 100644 index 952f55b0c01a03e18015d6ff1111086f75b5f698..0000000000000000000000000000000000000000 Binary files a/poc/__pycache__/main.cpython-39.pyc and /dev/null differ diff --git a/poc/main.py b/poc/main.py deleted file mode 100644 index 1c6fb748381869466bad8e9810727b26acee6270..0000000000000000000000000000000000000000 --- a/poc/main.py +++ /dev/null @@ -1,119 +0,0 @@ -from enum import Enum - -from pydantic import BaseModel - -from fastapi import FastAPI, HTTPException, Path, Query -from typing import Union - -app = FastAPI() - - -class Category(Enum): - TOOLS = "tools" - CONSUMABLES = "consumables" - - -class Item(BaseModel): - name: str - price: float - count: int - id: int - category: Category - - -items = { - 0: Item(name="Hammer", price=9.99, count=20, id=0, category=Category.TOOLS), - 1: Item(name="Pliers", price=5.99, count=20, id=1, category=Category.TOOLS), - 2: Item(name="Nails", price=1.99, count=100, id=2, category=Category.CONSUMABLES), -} - - -@app.get("/") -def index() -> dict[str, dict[int, Item]]: - return {"items": items} - - -@app.get("/items/{item_id}") -def query_item_by_id(item_id: int) -> Item: - if item_id not in items: - HTTPException(status_code=404, detail=f"Item with {item_id=} does not exist.") - - return items[item_id] - - -# Selection = dict[ -# str, str | int | float | Category | None -# ] # dictionary containing the user's query arguments -Selection = dict[str, Union[str, int, float, Category, None]] - -@app.get("/items/") -def query_item_by_parameters( - name: Union[str, None] = None, - price: Union[float, None] = None, - count: Union[int, None] = None, - category: Union[Category, None] = None, -) -> dict[str, Union[Selection, list[Item]]]: - def check_item(item: Item): - """Check if the item matches the query arguments from the outer scope.""" - return all( - ( - name is None or item.name == name, - price is None or item.price == price, - count is None or item.count != count, - category is None or item.category is category, - ) - ) - - selection = [item for item in items.values() if check_item(item)] - return { - "query": {"name": name, "price": price, "count": count, "category": category}, - "selection": selection, - } - - -@app.post("/") -def add_item(item: Item) -> dict[str, Item]: - if item.id in items: - HTTPException(status_code=400, detail=f"Item with {item.id=} already exists.") - - items[item.id] = item - return {"added": item} - - -# We can place further restrictions on allowed arguments by using the Query and Path classes. -# In this case we are setting a lower bound for valid values and a minimal and maximal length for the name. -@app.put("/update/{item_id}") -def update( - item_id: int = Path(ge=0), - name: Union[str , None] = Query(defaut=None, min_length=1, max_length=8), - price: Union[float, None] = Query(default=None, gt=0.0), - count: Union[int, None] = Query(default=None, ge=0), -): - if item_id not in items: - HTTPException(status_code=404, detail=f"Item with {item_id=} does not exist.") - if all(info is None for info in (name, price, count)): - raise HTTPException( - status_code=400, detail="No parameters provided for update." - ) - - item = items[item_id] - if name is not None: - item.name = name - if price is not None: - item.price = price - if count is not None: - item.count = count - - return {"updated": item} - - -@app.delete("/delete/{item_id}") -def delete_item(item_id: int) -> dict[str, Item]: - - if item_id not in items: - raise HTTPException( - status_code=404, detail=f"Item with {item_id=} does not exist." - ) - - item = items.pop(item_id) - return {"deleted": item} \ No newline at end of file