FEATZAFF commited on
Commit
bba88ff
·
verified ·
1 Parent(s): 0abacf1

Upload 3 files

Browse files
Files changed (3) hide show
  1. __init__.py +0 -0
  2. database.py +24 -0
  3. main.py +98 -0
__init__.py ADDED
File without changes
database.py ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from sqlalchemy import create_engine
2
+ from sqlalchemy.ext.declarative import declarative_base
3
+ from sqlalchemy.orm import sessionmaker
4
+
5
+ SQLALCHEMY_DATABASE_URL = "sqlite:///./database/items.db"
6
+
7
+ # Create SQLite engine
8
+ engine = create_engine(
9
+ SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
10
+ )
11
+
12
+ # Create SessionLocal class
13
+ SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
14
+
15
+ # Create Base class
16
+ Base = declarative_base()
17
+
18
+ # Dependency
19
+ def get_db():
20
+ db = SessionLocal()
21
+ try:
22
+ yield db
23
+ finally:
24
+ db.close()
main.py ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ from fastapi import FastAPI, Request
3
+ from fastapi.responses import HTMLResponse
4
+ from fastapi.staticfiles import StaticFiles
5
+ from fastapi.templating import Jinja2Templates
6
+ import os
7
+
8
+ from app.database import engine
9
+ from app.models.item import Item
10
+ import app.routes.item as item_routes
11
+
12
+ # Create tables in the database
13
+ from app.database import Base
14
+ Base.metadata.create_all(bind=engine)
15
+
16
+ # Initialize FastAPI app
17
+ app = FastAPI(title="FastAPI CRUD App")
18
+
19
+ # Mount static files
20
+ app.mount("/static", StaticFiles(directory="app/static"), name="static")
21
+
22
+ # Set up templates
23
+ templates = Jinja2Templates(directory="app/templates")
24
+
25
+ # Include routers
26
+ app.include_router(item_routes.router)
27
+
28
+ # Root endpoint
29
+ @app.get("/", response_class=HTMLResponse)
30
+ async def read_root(request: Request):
31
+ return templates.TemplateResponse("index.html", {"request": request})
32
+
33
+ # Run with: uvicorn app.main:app --reload
34
+ if __name__ == "__main__":
35
+ import uvicorn
36
+ uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
37
+
38
+ """
39
+ # IGNORE THE FOLLOWING SECTION
40
+ from fastapi import FastAPI, Request
41
+ from fastapi.responses import HTMLResponse
42
+ from fastapi.staticfiles import StaticFiles
43
+ from fastapi.templating import Jinja2Templates
44
+ import os
45
+ import sys
46
+ import importlib
47
+
48
+ from app.database import engine
49
+ from app.models.item import Item
50
+
51
+ # Create tables in the database
52
+ from app.database import Base
53
+ Base.metadata.create_all(bind=engine)
54
+
55
+ # Initialize FastAPI app
56
+ app = FastAPI(title="FastAPI CRUD App")
57
+
58
+ # Mount static files
59
+ app.mount("/static", StaticFiles(directory="app/static"), name="static")
60
+
61
+ # Set up templates
62
+ templates = Jinja2Templates(directory="app/templates")
63
+
64
+ # TEMP: Use the solutions for testing
65
+ # Import CRUD operations from solutions directory
66
+ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
67
+ from solutions.crud.create import create_item
68
+ from solutions.crud.read import get_item, get_items
69
+ from solutions.crud.update import update_item
70
+ from solutions.crud.delete import delete_item
71
+
72
+ # Create a temporary crud module that uses solutions
73
+ class TempCrud:
74
+ create_item = create_item
75
+ get_item = get_item
76
+ get_items = get_items
77
+ update_item = update_item
78
+ delete_item = delete_item
79
+
80
+ # Import the router
81
+ import app.routes.item as item_routes
82
+
83
+ # Replace the crud import in the routes with our temporary one
84
+ item_routes.crud = TempCrud
85
+
86
+ # Include routers
87
+ app.include_router(item_routes.router)
88
+
89
+ # Root endpoint
90
+ @app.get("/", response_class=HTMLResponse)
91
+ async def read_root(request: Request):
92
+ return templates.TemplateResponse("index.html", {"request": request})
93
+
94
+ # Run with: uvicorn app.main:app --reload
95
+ if __name__ == "__main__":
96
+ import uvicorn
97
+ uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
98
+ """