51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
from fastapi import FastAPI, HTTPException
|
|
from pydantic import BaseModel
|
|
from sqlalchemy import create_engine, Column, Integer, String, DateTime
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from sqlalchemy.orm import sessionmaker
|
|
from datetime import datetime
|
|
|
|
# Verbindung zur MariaDB
|
|
DATABASE_URL = "mysql+pymysql://mariadb:r5WdORhRYOajNZ9lcn1raCWpXAhQa1v6sM5xN8JEffr2rZLDhQvAGQVfcj6f7rzf@tkgo4k84c8wgcos40kgs8ows:3306/default"
|
|
|
|
engine = create_engine(DATABASE_URL)
|
|
SessionLocal = sessionmaker(bind=engine)
|
|
Base = declarative_base()
|
|
|
|
# Tabelle definieren
|
|
class Entry(Base):
|
|
__tablename__ = "entries"
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
timestamp = Column(DateTime, default=datetime.utcnow)
|
|
name = Column(String(100))
|
|
code = Column(String(100))
|
|
|
|
Base.metadata.create_all(bind=engine)
|
|
|
|
# API definieren
|
|
app = FastAPI()
|
|
|
|
class EntryCreate(BaseModel):
|
|
name: str
|
|
code: str
|
|
|
|
@app.post("/entries/")
|
|
def create_entry(entry: EntryCreate):
|
|
session = SessionLocal()
|
|
db_entry = Entry(name=entry.name, code=entry.code)
|
|
session.add(db_entry)
|
|
try:
|
|
session.commit()
|
|
session.refresh(db_entry)
|
|
except Exception as e:
|
|
session.rollback()
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
finally:
|
|
session.close()
|
|
return {
|
|
"id": db_entry.id,
|
|
"timestamp": db_entry.timestamp,
|
|
"name": db_entry.name,
|
|
"code": db_entry.code
|
|
}
|