# 🗃️ @josselinesanchez/data-base-connector

Conector de base de datos simple y escalable con soporte para MongoDB, escrito en **TypeScript**, usando patrón **Factory** y **Singleton**.

Ideal para proyectos Node.js que requieren una abstracción limpia para conectar bases de datos.


[![npm version](https://img.shields.io/npm/v/@josselinesanchez/data-base-connector.svg)](https://www.npmjs.com/package/@josselinesanchez/data-base-connector)
[![Build Status](https://img.shields.io/badge/build-passing-brightgreen)]()
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

> Conector escalable para bases de datos en Node.js con soporte inicial para **MongoDB**.
Ideal para proyectos TypeScript que buscan una arquitectura limpia basada en **Factory + Singleton Pattern**.

---
## 📦 Instalación

```bash
npm install @josselinesanchez/data-base-connector
```
---

## 🚀 Ejemplo de uso
```typescript
import DatabaseConnectorFactory from '@josselinesanchez/data-base-connector';
import { DatabaseType } from '@josselinesanchez/data-base-connector';

const connector = DatabaseConnectorFactory.getConnector(DatabaseType.MONGO);

connector.connect('mongodb://localhost:27017/my-database')
  .then(() => {
    console.log('✅ Base de datos conectada');
  })
  .catch((error) => {
    console.error('❌ Error al conectar a la base de datos:', error);
  });

```

---
## 🔍 Tipos y contratos
```typescript
// DatabaseType.ts
export enum DatabaseType {
  MONGO = 'mongo',
}
```
```typescript
// IDatabaseConnector.ts
export interface IDatabaseConnector {
  connect(uri: string): Promise<void>;
}

```

---
## 📁 Estructura del proyecto
```pgsql
data-base-connector/
├─ .qodo/
├─ libs/
│  ├─ __tests__/
│  │  ├─ DatabaseConnectorFactory.test.ts
│  │  └─ MongoConnector.test.ts
│  ├─ connectors/
│  │  └─ MongoConnector.ts
│  ├─ factories/
│  │  └─ DatabaseConnectorFactory.ts
│  ├─ interfaces/
│  │  └─ IDatabaseConnector.ts
│  ├─ types/
│  │  └─ DatabaseType.ts
│  └─ index.ts
├─ .editorconfig
├─ .gitignore
├─ .gitlab-ci.yml
├─ jest.config.js
├─ package-lock.json
├─ package.json
├─ README.md
└─ tsconfig.json
```

---

## 🧪 Testing

Esta librería incluye tests con Jest y mongodb-memory-server para pruebas aisladas.

```bash
npm test
```

---

## 📌 Roadmap

- [x] Soporte MongoDB
- [ ] Soporte PostgreSQL
- [ ] Soporte MySQL
- [ ] Logger integrado
- [ ] Decoradores para simplificar integración

---

## 🤝 Contribuciones

¡Las contribuciones son bienvenidas!
Puedes enviar un PR o abrir un Issue para sugerencias, errores o mejoras.

---

## 📄 Licencia

MIT © Krafox by Josseline Sánchez and Jorman Orrala

---
