Module to automaticly generate fastapi routes for using react admin
Project description
FastAPI React Admin
This module provides a class ReactAdmin that allows for the automatic generation of routes for React Admin in a FastAPI application.
Installation
pip install fastapi-react-admin
Base usage
FatstAPI part:
from fastapi import FastAPI
from schemas import MyTableModel
from fastapi_react_admin import ReactAdmin
app = FastAPI()
router = app.router
Session = async_sessionmaker(AsyncSession)
ReactAdmin(
table=MyTableModel,
router=router,
session=Session
).mount()
React Admin data provider:
export const sendPost = async (resource: string, method: string, body?: any) => {
const response = await axios({
method: 'post',
url: resource + "/ra" + method,
data: body,
headers: {
"Admin-Token": sessionStorage.getItem('token')
}
})
return response.data
}
const dataProvider: DataProvider = {
getList: (resource: string, params: any) => {
const { page, perPage } = params.pagination
const { field, order } = params.sort
const query = {
sort: JSON.stringify([field, order]),
range_: JSON.stringify([(page - 1) * perPage, page * perPage - 1]),
filter: JSON.stringify(params.filter),
}
return sendPost(resource, `/getList?${queryString.stringify(query)}`)
},
getOne: async (resource: string, params: any) => {
return await sendPost(resource, '/getOne/' + params.id)
},
getMany: (resource: string, params: any) => {
const query = {
filter: JSON.stringify({ id: params.ids}),
}
return sendPost(resource, `/getMany?${queryString.stringify(query)}`)
},
getManyReference: (resource: string, params: any): any => {
const { page, perPage } = params.pagination
const { field, order } = params.sort
const query = {
sort: JSON.stringify([field, order]),
range_: JSON.stringify([(page - 1) * perPage, page * perPage - 1]),
filter: JSON.stringify(params.filter),
}
return sendPost(params.target, `/getList?${queryString.stringify(query)}`)
},
create: async (resource: string, params: any) => {
return await sendPost(resource, '/create', {
...params.data
})
},
update: async (resource: string, params: any) => {
return await sendPost(resource, '/update/' + params.id, params.data)
},
updateMany: async (resource: string, params: any) => {
const query = {
filter: JSON.stringify({ id: params.ids}),
}
return await sendPost(resource, `/updateMany?${queryString.stringify(query)}`, params.data)
},
delete: (resource: string, params: any) => {
return sendPost(resource, '/delete/' + params.id)
},
deleteMany: (resource: string, params: any) => {
const query = {
filter: JSON.stringify({ id: params.ids}),
}
return sendPost(resource, `/deleteMany?${queryString.stringify(query)}` )
},
}
ReactAdmin class params
-
table (required): The SQLAlchemy model representing the database table.
-
router (required): The APIRouter instance to mount the routes.
-
session (required): The async_sessionmaker[AsyncSession] for the database session.
-
deleted_field (optional): The name of the field of the table to mark deleted fields (e.g., 'is_deleted'). Default is None.
-
exclude_deleted (optional): Whether to exclude deleted records. Default is True.
-
include_in_schema (optional): Whether to include the routes in the generated schema. Default is False.
ReactAdmin mount params
-
depends (optional): The sequence of the dependencies
-
prefix (optional): The URL prefix for the React Admin routes. Default is '/ra'.
-
tags (optional): The FastAPI tags.
-
include_* (optional): The params to include/exclude specific route. (For example: include_create=false)
Route Endpoints
The following routes are automatically generated by the ReactAdmin
class:
- POST /ra/getList: Get a list of records from the table. Accepts JSON payload with sort, filter, and range parameters.
- POST /ra/getOne/{id}: Get a single record by ID.
- POST /ra/getMany/{id}: Get multiple records by ID. Accepts JSON payload with id parameter.
- POST /ra/create: Create a new record. Accepts JSON payload with the record data.
- POST /ra/update/{id}: Update a record by ID. Accepts JSON payload with the updated data.
- POST /ra/updateMany: Update multiple records. Accepts JSON payload with id parameter and updated data.
- POST /ra/delete/{id}: Delete a record by ID.
- POST /ra/deleteMany: Delete multiple records. Accepts JSON payload with id parameter.
Response Format
The response format for all routes is a JSON object with a data field. The data field contains the response data.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fastapi_react_admin-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97d7e5afdc74cfb98af3ea5a48c707f4ce001722fe8a5919c0ccff0171c009a3 |
|
MD5 | e064f457a91328a9893e63fde5307038 |
|
BLAKE2b-256 | 96ded24029fd5579b67abb16ecc9efdb47b098f9f9169118b0d15193c95b4001 |
Hashes for fastapi_react_admin-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e871231ad090979577408fe94789bd2e185e360f85bbf5e703ce876bdbb9bc3 |
|
MD5 | 64bae92c0af8c1293c46da59841fe4c9 |
|
BLAKE2b-256 | b453383faddfcddc98a4291759ababb06a1d292f2dae39db1439f076242000d3 |