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,
session=Session
).mount(router)
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.
-
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
-
router (required): The APIRouter instance to mount the routes.
-
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-2.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d7af12c3e1856940567bbf1a5234231ea778805dfe85187f51b61b7b6787c73 |
|
MD5 | c100ed15e359e95a6fa7218c2e72e56e |
|
BLAKE2b-256 | f531a2af3d3661ab08df97068c8255827848d78869ad091e89f4905e0616ef07 |
Hashes for fastapi_react_admin-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73f1e22045eb7f6b08870c48e57cad8e7536e4932f720b78b3e1c944ed878a98 |
|
MD5 | 81af34190eada81ceb49590408b3b53c |
|
BLAKE2b-256 | 36a1160b921b98c8f61d8ab1a78818e8fc389b07829ebb77fb9d9beebf971fc5 |