Home

Awesome

RA-Soul-Provider

Description

RA-Soul is a data provider that helps you connect React Admin with Soul, a REST server that uses SQLite. This provider exports a list of auth provider methods and data provider methods that you can use to connect your React Admin application with Soul.

Provider Methods

Data Providers

- getList
- getOne
- getMany
- getManyReference
- create
- update
- updateMany
- delete
- deleteMany

Auth Providers

- login
- logout
- checkAuth
- checkError
- getPermissions
- changePassword

Usage

1. Start the Soul server

Clone the Soul repository and follow the instructions in the README to run the server.

2. Install the ra-soul provider

npm i ra-soul

3. Use the provider in your React Admin application

import { Admin, Resource } from "react-admin";
import { dataProvider, authProvider } from "ra-soul";

import {
  AlbumList,
  AlbumShow,
  AlbumEdit,
  AlbumCreate,
} from "./components/Album";

import {
  GenreList,
  GenreShow,
  GenreEdit,
  GenreCreate,
} from "./components/Genre";

import { ChangePassword, Login } from "./components/auth/ChangePassword";

/** React Admin expects an id field for each resource, but if your database doesn't have an id
 * field in each table, then you should map your primary key for each resource
 **/

const primaryKeyDictionary = {
  albums: "AlbumId",
  tracks: "TrackId",
  genres: "GenreId",
  playlists: "PlayListId",
};

const soulApiUrl = "http://soul.api.url/api";

function App() {
  return (
    <Admin
      dataProvider={dataProvider(primaryKeyDictionary, soulApiUrl)}
      authProvider={authProvider(soulApiUrl)}
      loginPage={Login}
    >
      <Resource
        name="genres"
        list={GenreList}
        create={GenreCreate}
        edit={GenreEdit}
        show={GenreShow}
      />

      <Resource
        name="albums"
        list={AlbumList}
        show={AlbumShow}
        edit={AlbumEdit}
        create={AlbumCreate}
      />

      <Resource name="change-password" list={ChangePassword} />
    </Admin>
  );
}

Running a Compiled React Admin App with Soul

Soul provides a way to run a compiled version of your React Admin application using its extensions feature. To do this, build your React Admin app and place the compiled application inside a folder named _extensions. This setup will expose your compiled React Admin app with an endpoint accessible to the outside world. For more details about this feature, refer to this page.