Update code in endpoints/local_govt.post.py
This commit is contained in:
parent
7843150ffe
commit
3b949da5c3
60
endpoints/local_govt.post.py
Normal file
60
endpoints/local_govt.post.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
Sure, here's an example of a FastAPI endpoint that allows you to add a local government in Kenya to the database using SQLAlchemy and Pydantic:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from fastapi import FastAPI, HTTPException
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from sqlalchemy import Column, Integer, String
|
||||||
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
|
from sqlalchemy import create_engine
|
||||||
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
|
from app.api.models.local_govt_model import *
|
||||||
|
from app.api.schemas.local_govt_schema import *
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
# SQLAlchemy setup
|
||||||
|
Base = declarative_base()
|
||||||
|
engine = create_engine('sqlite:///local_govts.db', echo=True)
|
||||||
|
Session = sessionmaker(bind=engine)
|
||||||
|
|
||||||
|
# SQLAlchemy model
|
||||||
|
|
||||||
|
@app.post('/local_govt')
|
||||||
|
def add_local_government(local_govt: LocalGovernmentSchema):
|
||||||
|
session = Session()
|
||||||
|
|
||||||
|
try:
|
||||||
|
local_govt_obj = LocalGovernment(name=local_govt.name, county=local_govt.county)
|
||||||
|
session.add(local_govt_obj)
|
||||||
|
session.commit()
|
||||||
|
return {"message": "Local government added successfully"}
|
||||||
|
except Exception as e:
|
||||||
|
session.rollback()
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
finally:
|
||||||
|
session.close()
|
||||||
|
```
|
||||||
|
|
||||||
|
Here's a breakdown of the code:
|
||||||
|
|
||||||
|
1. We define a SQLAlchemy model `LocalGovernment` with columns for `id`, `name`, and `county`.
|
||||||
|
2. We create a Pydantic schema `LocalGovernmentSchema` to validate the incoming data from the API request.
|
||||||
|
3. We define a FastAPI endpoint `@app.post('/local_govt')` that accepts a `LocalGovernmentSchema` object as input.
|
||||||
|
4. Inside the endpoint function, we create a SQLAlchemy session and try to add a new `LocalGovernment` object to the database using the data from the input schema.
|
||||||
|
5. If the operation is successful, we commit the changes and return a success message.
|
||||||
|
6. If an exception occurs, we roll back the transaction and raise an HTTP exception with a 500 status code and the error message.
|
||||||
|
7. Finally, we close the SQLAlchemy session.
|
||||||
|
|
||||||
|
To use this endpoint, you can send a POST request to `/local_govt` with a JSON payload containing the `name` and `county` fields, like this:
|
||||||
|
|
||||||
|
```
|
||||||
|
POST /local_govt
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Nairobi City County",
|
||||||
|
"county": "Nairobi"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This will create a new entry in the `local_governments` table with the provided name and county.
|
Loading…
x
Reference in New Issue
Block a user