PGcrudapi 🚀
Welcome to pgcrudapi! This package automatically generates CRUD APIs for PostgreSQL databases, making development faster and easier than ever before.

Features 🎉
- 🛠 Auto-generate CRUD APIs for PostgreSQL tables
- 🧰 Customizable routes with full flexibility
- 🔄 Supports dynamic table creation from schema definitions
- 🚦 Built-in pagination, filtering, and sorting
- 🔗 Seamless integration with PostgreSQL using
pg
Installation 🛠️
To get started, install the package using npm:
npm install pgcrudapi
How It Works ⚙️
-
Define your schema:
const schemaDefinition = {
name: { type: 'VARCHAR(100)', required: true },
price: { type: 'NUMERIC', required: true },
category: { type: 'VARCHAR(50)' },
};
-
Generate CRUD APIs for PostgreSQL:
const app = generateCrudpg({
dbConfig: {
user: 'your-username',
host: 'localhost',
database: 'your-database',
password: 'your-password',
port: 5432,
},
schemaDefinition,
tableName: 'products',
});
app.listen(3000, () => console.log('Server running on port 3000'));
API Endpoints 🎯
Here's what you get out-of-the-box:
- Create ➡️
POST /api/products
– Add a new record
- Read All 📜
GET /api/products
– Fetch all records
- Read One 🔍
GET /api/products/:id
– Fetch a single record by ID
- Update 🔄
PUT /api/products/:id
– Update a record by ID
- Delete ❌
DELETE /api/products/:id
– Delete a record by ID
- Delete All 🗑
DELETE /api/products
– Clear all records from the table

Add Custom Routes 🛠️
Extend the functionality by adding your own custom routes. You can even use other libraries!
const customRoutes = [
{
method: 'get',
path: '/api/products/discounted',
handler: async (req, res) => {
try {
const result = await pool.query(
`SELECT * FROM products WHERE price < 500`
);
res.status(200).json(result.rows);
} catch (error) {
res.status(500).send(error);
}
},
},
];

Custom Table Creation 🧱
With pgcrudapi, you don’t need to manually define tables. Simply provide a schema definition and it will create the table for you!
const schemaDefinition = {
name: { type: 'VARCHAR(100)', required: true },
price: { type: 'NUMERIC', required: true },
category: { type: 'VARCHAR(50)' },
};

Advanced Query Features 📊
Your APIs are equipped with:
- Filtering 🧑🔬:
GET /api/products?filter={"category":"electronics"}
- Sorting ↕:
GET /api/products?sort=price,desc
- Pagination 🔄:
GET /api/products?limit=10&startAfter=5

Dependencies 📦
This package uses:
- express: A fast, minimalist web framework for Node.js
- pg: PostgreSQL client for Node.js

License 📄
This project is licensed under the MIT License.

Author ✍️
Sumit
📧 sumitdhonde0@gmail.com