From af0d1b634b09ef049d818cee0f4ec14e6e2bf4ac Mon Sep 17 00:00:00 2001 From: zacharyhampton Date: Thu, 6 Jul 2023 18:44:38 -0500 Subject: [PATCH] - init --- .gitignore | 1 + api/__init__.py | 5 ++++ api/core/__init__.py | 0 api/core/jobs/__init__.py | 55 +++++++++++++++++++++++++++++++++++ api/core/scrapers/__init__.py | 0 api/v1/__init__.py | 5 ++++ api/v1/jobs/__init__.py | 3 ++ main.py | 11 +++++++ 8 files changed, 80 insertions(+) create mode 100644 .gitignore create mode 100644 api/__init__.py create mode 100644 api/core/__init__.py create mode 100644 api/core/jobs/__init__.py create mode 100644 api/core/scrapers/__init__.py create mode 100644 api/v1/__init__.py create mode 100644 api/v1/jobs/__init__.py create mode 100644 main.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..757fee3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea \ No newline at end of file diff --git a/api/__init__.py b/api/__init__.py new file mode 100644 index 0000000..3479834 --- /dev/null +++ b/api/__init__.py @@ -0,0 +1,5 @@ +from fastapi import APIRouter +from .v1 import router as v1_router + +router = APIRouter(prefix="/api", tags=["api"]) +router.include_router(v1_router) diff --git a/api/core/__init__.py b/api/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/core/jobs/__init__.py b/api/core/jobs/__init__.py new file mode 100644 index 0000000..f19b7c8 --- /dev/null +++ b/api/core/jobs/__init__.py @@ -0,0 +1,55 @@ +from pydantic import BaseModel +from datetime import datetime +from enum import Enum + + +class JobType(Enum): + FULL_TIME = 'full_time' + PART_TIME = 'part_time' + CONTRACT = 'contract' + INTERNSHIP = 'internship' + + +class CompensationInterval(Enum): + ANNUAL = 'annual' + MONTHLY = 'monthly' + WEEKLY = 'weekly' + DAILY = 'daily' + HOURLY = 'hourly' + + +class Location(BaseModel): + country: str + city: str + state: str + postal_code: str = None + address: str = None + + +class Compensation(BaseModel): + interval: CompensationInterval + min_amount: int + max_amount: int + currency: str + + +class DeliveryEnum(Enum): + EMAIL = 'email' + URL = 'url' + + +class Delivery(BaseModel): + method: DeliveryEnum + value: str + + +class JobPost(BaseModel): + title: str + description: str + company_name: str + industry: str + location: Location + job_type: JobType + compensation: Compensation + date_posted: datetime + delivery: Delivery = None diff --git a/api/core/scrapers/__init__.py b/api/core/scrapers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/v1/__init__.py b/api/v1/__init__.py new file mode 100644 index 0000000..ea42d12 --- /dev/null +++ b/api/v1/__init__.py @@ -0,0 +1,5 @@ +from fastapi import APIRouter +from .jobs import router as jobs_router + +router = APIRouter(prefix="/v1") +router.include_router(jobs_router) diff --git a/api/v1/jobs/__init__.py b/api/v1/jobs/__init__.py new file mode 100644 index 0000000..5932ff1 --- /dev/null +++ b/api/v1/jobs/__init__.py @@ -0,0 +1,3 @@ +from fastapi import APIRouter + +router = APIRouter(prefix="/jobs") diff --git a/main.py b/main.py new file mode 100644 index 0000000..13b96a6 --- /dev/null +++ b/main.py @@ -0,0 +1,11 @@ +from fastapi import FastAPI +from api import router as api_router + +app = FastAPI() +app.include_router(api_router) + + +@app.get("/") +async def root(): + return {"message": "Hello World"} +