@zeushq/nextjs-zapi
Version:
Next.js SDK for creating a Zeus API
87 lines (75 loc) • 2.45 kB
text/typescript
import {
listHandler as baseListHandler,
showHandler as baseShowHandler,
createHandler as baseCreateHandler,
updateHandler as baseUpdateHandler,
destroyHandler as baseDestroyHandler
} from './zapi';
import {
handlerFactory,
listHandler,
showHandler,
createHandler,
updateHandler,
destroyHandler,
Handlers,
HandleResource,
HandleList,
HandleShow,
HandleCreate,
HandleUpdate,
HandleDestroy,
Resource,
} from './handlers';
import { InitZeusRestResource, HandleZeusRestResource } from './instance';
import { ConfigParameters } from './config';
let instance: HandleZeusRestResource;
function getInstance(): HandleZeusRestResource {
if (instance) {
return instance;
}
instance = initRestResource();
return instance;
}
export const initRestResource: InitZeusRestResource = () => {
// const { baseConfig } = getConfig(config);
// Init base layer (with base config)
const baseHandleList = baseListHandler();
const baseHandleShow = baseShowHandler();
const baseHandleCreate = baseCreateHandler();
const baseHandleUpdate = baseUpdateHandler();
const baseHandleDestroy = baseDestroyHandler();
// Init Next layer (with next config)
const handleList = listHandler(baseHandleList);
const handleShow = showHandler(baseHandleShow);
const handleCreate = createHandler(baseHandleCreate);
const handleUpdate = updateHandler(baseHandleUpdate);
const handleDestroy = destroyHandler(baseHandleDestroy);
const handleResource = handlerFactory({ handleList, handleShow, handleCreate, handleUpdate, handleDestroy });
return {
handleList,
handleShow,
handleCreate,
handleUpdate,
handleDestroy,
handleResource
};
};
export const handleList: HandleList = (...args) => getInstance().handleList(...args);
export const handleShow: HandleShow = (...args) => getInstance().handleShow(...args);
export const handleCreate: HandleCreate = (...args) => getInstance().handleCreate(...args);
export const handleUpdate: HandleUpdate = (...args) => getInstance().handleUpdate(...args);
export const handleDestroy: HandleDestroy = (...args) => getInstance().handleDestroy(...args);
export const handleResource: HandleResource = (...args) => getInstance().handleResource(...args);
export { useResource } from './frontend';
export {
ConfigParameters,
HandleResource,
HandleList,
HandleShow,
HandleCreate,
HandleUpdate,
HandleDestroy,
Handlers,
Resource,
};