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