Adding API

master
Ronald 2 years ago
commit 4ef63f1b0b

@ -0,0 +1,3 @@
fastapi
uvicorn
pymysql

@ -0,0 +1,19 @@
from sqlalchemy.orm import Session
from . import models, schemas
def get_records(db: Session):
records = db.query(models.Record).all()
return records
def create_record(db: Session, record: schemas.Record):
db_record = models.Record(
time=record.time,
temperature=record.temperature,
humidity=record.humidity,
room=record.room
)
db.add(db_record)
db.commit()
db.refresh(db_record)
return db_record

@ -0,0 +1,12 @@
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
SQLALCHEMY_DATABASE_URL = "mysql+pymysql://dtm:bakedbeans-and-egg-09@192.168.178.190" + \
"/digital_temperature_monitor?charset=utf8mb4"
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

@ -0,0 +1,27 @@
from typing import List
from fastapi import FastAPI, Depends
from sqlalchemy.orm import Session
from .database import SessionLocal, engine
from . import models, schemas, crud
models.Base.metadata.create_all(bind=engine)
app = FastAPI()
# Dependency
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.get("/records/", response_model=List[schemas.Record])
def get_records(db: Session = Depends(get_db)):
records = crud.get_records(db)
return records
@app.post("/add_record/", response_model=schemas.Record, status_code=201)
def create_record(record: schemas.Record, db: Session = Depends(get_db)):
return crud.create_record(db=db, record=record)

@ -0,0 +1,12 @@
from sqlalchemy import Column, Integer, Float, DateTime, String
from .database import Base
class Record(Base):
__tablename__ = "th"
id = Column(Integer, primary_key=True)
time = Column(DateTime, unique=False, index=True)
temperature = Column(Float)
humidity = Column(Float)
room = Column(String(48))

@ -0,0 +1,23 @@
from typing import Optional
from datetime import datetime
from pydantic import BaseModel
class RecordBase(BaseModel):
time: Optional[datetime] = datetime.now()
temperature: float
humidity: float
room: str
class Config:
from_attributes = True
class RecordCreate(RecordBase):
pass
class Record(RecordBase):
id: int
class Config:
from_attributes = True
Loading…
Cancel
Save