@jetvil/cm-api
v0.2.1
Published
๐ Content management API for integrating with NodeJS(express) and Prisma ORM
Downloads
4
Maintainers
Readme
@jetvil/cm-api
๐ Content management API for integrating with NodeJS Express(backend) and Prisma(ORM)
Features
- ๐ Easy to use: Easy to install in your project.
- โ ES6+ && TS: TypeScript and ES6+ support(JS).
- ๐ฆ Required dependencies: You don't need what you won't use: express and prisma.
- ๐ต Free: It's free and always will be, the beauty of open source.
Getting Started
Installation
To use this package, install using npm
, yarn
or pnpm
๐ฅ:
# npm
npm install @jetvil/cm-api
# yarn
yarn add @jetvil/cm-api
# pnpm
pnpm install @jetvil/cm-api
Usage
const express = require("express");
const { PrismaClient } = require("@prisma/client");
const jetvil = require("@jetvil/cm-api");
// prisma with eg. postgresql and schemas: "user" and "post"
const prisma = new PrismaClient(); // Prisma ORM, you must have it installed and generated.
const app = express();
const jetvil = jetvil();
app.use(express.json()); // for parsing application/json.
jetvil.setClient(prisma); // Set prisma client here or pass it in the router() method.
const router = jetvil.router(); // Empty by default, you can configure it by passing an object.
app.use("/api", router);
app.listen(3000, () => {
console.log("Server is running on port 3000");
});
// Routes such as /user and /post will be available at /api/user and /api/post
Configuration
You can configure the router by passing an object to the router() method.
By doing so you can adjust the routes to your needs.
const jetvil = require("@jetvil/cm-api");
const jetvil = jetvil();
const router = jetvil.router({
client: prisma, // Prisma ORM, you must have it installed and generated.
global: {
schemas: ["user", "post", "profile"], // if specified, only these schemas will be available.
methods: ["get", "post", "put", "delete", "fake"], // if specified, only these methods will be available, 'fake' will not be used.
middleware: [
{
methods: ["get"], // Method to which the middleware will be applied.
schemas: ["user"], // Schema to which the middleware will be applied.
handler: (req, res, next) => {
// Middleware function.
next();
},
},
],
},
config: {
// note how the schema is the key and the value is an object with the schema config.
// these are overrides for the global config on a per schema basis.
user: {
methods: ["get", "post", "put"], // note how the delete method is not included.
actions: ["read", "create", "update", "delete"], // these actions determine what the user can do with the schema.
// for example, if the user has the 'read' action, he can only read the schema.
// when the 'filter' action is included, the user can filter the schema on the schema.
middleware: [
// this middleware will override the global middleware for the user schema.
{
handler: (_req, _res, next) => {
console.log("Middleware applied to user schema!");
next();
},
},
],
},
},
verbose: true, // If true, the router will log the routes it generates.
});
Documentation
For more information, please check out the documentation๐.
Contributing
Found a bug๐ฆ? or want to suggest a new feature๐? or just want to help๐?
Feel free to open an issue or a pull request.
Contributions are always welcome!๐
- Fork the project here.
- Create a new branch like this:
git checkout -b feature/featureName
. - Commit your changes to your branch:
git commit -m 'Create AwesomeFeature'
โ๏ธ. - Push your branch:
git push origin feature/featureName
. - Open a pull request on the
dev
branch here๐.
๐Note: Make sure to add tests for your changes โ .