# 📦 delta-file-multer

A plug-and-play file upload handler built on top of **Multer** and **Mongoose**.
Save images/files to disk and store their filenames in MongoDB — all in a single line of configuration!

---

## 🚀 Installation

Install via NPM:

```bash
npm install delta-file-multer
```

---

## 🔹 Usage

### 1️⃣ Import and Use in Your Server File

```js
import express from "express";
import mongoose from "mongoose";
import deltaMulter from "delta-file-multer";
import { connectDB } from "./db.js";

const app = express();
connectDB(); // your own DB connection logic

// File upload setup
deltaMulter({
  app,
  mongoose,
  dbField: "profilePic", // Field name (used in schema)
  collectionName: "user", // MongoDB collection name
  uploadPath: "./uploads", // Local upload folder
  route: "/api/uploadProfile", // API endpoint
});

app.listen(4000, () => {
  console.log("Server running on http://localhost:4000");
});
```

---

## 🧪 How to Test via Postman

1. Open Postman
2. Set method to `POST`
3. Endpoint: `http://localhost:4000/api/uploadProfile`
4. Go to `Body > form-data`
5. Add a field with:
   - **Key**: `file`
   - **Type**: File
   - **Value**: Upload any image

---

## 📦 Output Example in Postman

```json
{
  "success": true,
  "message": "File uploaded successfully",
  "file": "1743961538129_Screenshot 2025-03-18 122733.png"
}
```

## 📦 Output Example in MongoDB

A sample document saved in MongoDB:

```json
{
  "_id": "123abc...",
  "profilePic": "1680458392357_image.png",
  "__v": 0
}
```

---

## 📌 Features

✅ Plug-and-play file upload logic  
✅ Auto-creates Mongoose model if not defined
✅ Auto-saves uploaded file metadata to MongoDB  
✅ Supports custom routes, upload folders, and field names  
✅ Works with any Express + Mongoose project

---

## ⚙️ Options

| Property         | Type   | Required | Description                                     |
| ---------------- | ------ | -------- | ----------------------------------------------- |
| `app`            | Object | ✅       | Your Express app instance                       |
| `mongoose`       | Object | ✅       | Your connected Mongoose instance                |
| `dbField`        | String | ✅       | Field name for storing file name in DB          |
| `collectionName` | String | ✅       | MongoDB collection where file metadata is saved |
| `uploadPath`     | String | ✅       | Path to store uploaded files locally            |
| `route`          | String | ✅       | API route for file upload                       |

---

## 📜 License

This project is licensed under the **MIT License**.

---

## 💻 Contributing

Pull requests, issues, and feedback are always welcome.  
Let’s make file uploads easier, together!

---

Happy uploading! 🎉

---
