From 853529b871a554e2c01f43c437e82f9354c1a18e Mon Sep 17 00:00:00 2001 From: Edwin Eames Date: Mon, 15 Jul 2024 17:55:45 -0400 Subject: [PATCH] first commit --- Dockerfile | 18 +++ Dockerfile.prod | 17 +++ __pycache__/database.cpython-312.pyc | Bin 0 -> 772 bytes __pycache__/main.cpython-312.pyc | Bin 0 -> 864 bytes app/__init__.py | 0 app/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 117 bytes app/models/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 124 bytes app/models/__pycache__/auto.cpython-312.pyc | Bin 0 -> 2212 bytes app/models/auto.py | 46 ++++++++ app/models/customer.py | 32 ++++++ app/models/delivery.py | 50 ++++++++ app/models/money.py | 28 +++++ app/models/pricing.py | 34 ++++++ app/routers/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 125 bytes app/routers/__pycache__/main.cpython-312.pyc | Bin 0 -> 3824 bytes app/routers/main.py | 107 ++++++++++++++++++ app/schema/delivery.py | 46 ++++++++ app/schema/money.py | 21 ++++ database.py | 21 ++++ main.py | 29 +++++ requirements.txt | 5 + 23 files changed, 454 insertions(+) create mode 100644 Dockerfile create mode 100644 Dockerfile.prod create mode 100644 __pycache__/database.cpython-312.pyc create mode 100644 __pycache__/main.cpython-312.pyc create mode 100644 app/__init__.py create mode 100644 app/__pycache__/__init__.cpython-312.pyc create mode 100644 app/models/__init__.py create mode 100644 app/models/__pycache__/__init__.cpython-312.pyc create mode 100644 app/models/__pycache__/auto.cpython-312.pyc create mode 100644 app/models/auto.py create mode 100644 app/models/customer.py create mode 100644 app/models/delivery.py create mode 100644 app/models/money.py create mode 100644 app/models/pricing.py create mode 100644 app/routers/__init__.py create mode 100644 app/routers/__pycache__/__init__.cpython-312.pyc create mode 100644 app/routers/__pycache__/main.cpython-312.pyc create mode 100644 app/routers/main.py create mode 100644 app/schema/delivery.py create mode 100644 app/schema/money.py create mode 100644 database.py create mode 100644 main.py create mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e2b0834 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM python:3.12-bullseye + +ENV PYTHONFAULTHANDLER=1 + +ENV PYTHONUNBUFFERED=1 + +RUN mkdir -p /app + +COPY requirements.txt /app + +WORKDIR /app +RUN pip3 install fastapi +RUN pip3 install sqlalchemy +RUN pip3 install -r requirements.txt + +EXPOSE 8000 + +COPY . /app \ No newline at end of file diff --git a/Dockerfile.prod b/Dockerfile.prod new file mode 100644 index 0000000..3b0bcf9 --- /dev/null +++ b/Dockerfile.prod @@ -0,0 +1,17 @@ +FROM python:3.12-bullseye + +ENV PYTHONFAULTHANDLER=1 + +ENV PYTHONUNBUFFERED=1 + +RUN mkdir -p /app + +COPY requirements.txt /app + +WORKDIR /app + +RUN pip3 install -r requirements.txt + +EXPOSE 8001 + +COPY . /app \ No newline at end of file diff --git a/__pycache__/database.cpython-312.pyc b/__pycache__/database.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d5b6f3c94e947cc40a1282f29768407b3d61fc6c GIT binary patch literal 772 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 datetime: + return datetime.now(timezone.utc) + +class DeliverPricing(BaseModel): + prime: bool + same_day: bool + gallons_delivered: float + + + +class SchemaDelivery(BaseModel): + customer_id: int + customer_name: str + customer_address: str + customer_town: str + customer_state: int + customer_zip: int + gallons_ordered: float + customer_asked_for_fill: int + gallons_delivered: float + customer_filled: int + delivery_status: int + when_ordered: datetime = Field(default_factory=datetime_now) + when_delivered: datetime = Field(default_factory=datetime_now) + expected_delivery_date: datetime = Field(default_factory=datetime_now) + automatic: int + oil_id: int + supplier_price: float + customer_price: float + customer_temperature: float + dispatcher_notes: str + prime: int + same_day: int + payment_type: int + payment_card_id: int + cash_recieved: float + driver_employee_id: int + driver_first_name: str + driver_last_name: str + pre_charge_amount: float + total_price: float + final_price: float \ No newline at end of file diff --git a/app/schema/money.py b/app/schema/money.py new file mode 100644 index 0000000..a80ac63 --- /dev/null +++ b/app/schema/money.py @@ -0,0 +1,21 @@ +from pydantic import BaseModel, Field +from datetime import datetime, timezone + + +def datetime_now() -> datetime: + return datetime.now(timezone.utc) + +class SchemaMoney(BaseModel): + delivery_id: int + time_added: datetime + gallons_delivered: float + supplier_price: float + customer_price: float + total_amount_oil: float + total_amount_prime: float + total_amount_same_day: float + total_amount_fee: float + total_amount: float + taxes_paid: float + total_profit: float + diff --git a/database.py b/database.py new file mode 100644 index 0000000..0242857 --- /dev/null +++ b/database.py @@ -0,0 +1,21 @@ +from sqlalchemy import create_engine +from sqlalchemy.engine import URL +from sqlalchemy.orm import sessionmaker +from sqlalchemy.orm import declarative_base + +url = URL.create( + drivername="postgresql", + username="postgres", + password="password", + host="192.168.1.204", + database="eamco", + port=5432 +) + +engine = create_engine(url) + +Session = sessionmaker(autocommit=False, autoflush=False, bind=engine) +session = Session() + +Base = declarative_base() +Base.metadata.create_all(engine) \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..d285c6c --- /dev/null +++ b/main.py @@ -0,0 +1,29 @@ +from fastapi import FastAPI +from app.routers import main +from fastapi.middleware.cors import CORSMiddleware + +app = FastAPI() + +app.include_router(main.router) + + +origins = [ + "http://localhost:9000", + "https://localhost:5173", + "http://localhost", + +] + + + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +@app.get("/") +def read_root(): + return {"Status": "Auto Service is online"} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..43bf3a5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +fastapi +uvicorn[standard] +psycopg2-binary +sqlalchemy +pyowm \ No newline at end of file