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.
-
depends (optional): The sequence of the dependencies
-
prefix (optional): The URL prefix for the React Admin routes. Default is '/ra'.
-
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.
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-0.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb9ba632cef95899ba49a492169c8430b4cf6f2b2ff2c519b38ac44b23a9d047 |
|
MD5 | ebfad8fdb8b5cf00bb8caae18f085de0 |
|
BLAKE2b-256 | 9e33dbb98bbc8cef08a966b7bdc2399c33245bdb1f522e29835b5dc096fac3ee |
Hashes for fastapi_react_admin-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6d51d37ef2cc973bd344f278723c7caa3452a31cc952a7a51acbccfa02c8063 |
|
MD5 | 8478fd8ea74f1c694df8ca871fa8d339 |
|
BLAKE2b-256 | 3c0562188bbf59764554948b729c9d9dfa3932427ccc5b68cbd4f6ab32fdfaaa |