indexed-database-manager
v1.0.3
Published
A TypeScript wrapper for IndexedDB with CRUD operations
Maintainers
Readme
IndexDB Manager
IndexDB Manager es un potente envoltorio TypeScript para IndexedDB que simplifica la gestión de bases de datos, tablas y columnas con operaciones CRUD completas.
Características
- 🛠️ Creación de bases de datos, tablas y columnas
- 🔍 Operaciones CRUD completas (Crear, Leer, Actualizar, Eliminar)
- 🔎 Consultas avanzadas con filtrado, ordenación y paginación
- 🛡️ Operaciones type-safe con soporte TypeScript
- 🔄 Soporte para transacciones
- 📊 Gestión de índices
- 🚀 Ligero y fácil de usar
- 🏗️ Migraciones de esquema
- 🔌 Agnóstico a frameworks (funciona con React, Angular, Vue, etc.)
Instalación
npm install indexed-database-manager
# o
yarn add indexed-database-manager Uso Básico
1. Creación de una Base de Datos
import { Database, Table, Column } from 'indexed-database-manager';
const myDB = new Database({
name: 'MyAppDB',
version: 1,
tables: [
{
name: 'users',
primaryKey: 'id',
autoIncrement: true,
columns: [
{ name: 'name', type: 'string', required: true },
{ name: 'email', type: 'string', unique: true },
{ name: 'age', type: 'number' },
{ name: 'isActive', type: 'boolean', defaultValue: true }
]
}
]
});
const db = await myDB.connect(); Integración con Frameworks
Ejemplo con React
import { useEffect, useState } from 'react';
import { Database } from 'indexed-database-manager';
function UserList() {
const [users, setUsers] = useState([]);
useEffect(() => {
async function loadData() {
const db = new Database({ /* config */ });
const connection = await db.connect();
const users = await db.getTable('users').findAll(connection);
setUsers(users);
}
loadData();
}, []);
return (
<ul>
{users.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
} Ejemplo con Angular
import { Injectable } from '@angular/core';
import { Database } from 'indexed-database-manager';
@Injectable({ providedIn: 'root' })
export class DataService {
private db: Database;
constructor() {
this.db = new Database({ /* config */ });
}
async getUsers() {
const connection = await this.db.connect();
return this.db.getTable('users').findAll(connection);
}
} Ejemplo con Vue
<script setup>
import { ref, onMounted } from 'vue';
import { Database } from 'indexed-database-manager';
const users = ref([]);
onMounted(async () => {
const db = new Database({ /* config */ });
const connection = await db.connect();
users.value = await db.getTable('users').findAll(connection);
});
</script> Uso Avanzado
Consultas de Datos
// Buscar usuarios activos mayores de 21 años, ordenados por nombre
const activeUsers = await usersTable.findAll(db, {
where: {
isActive: { equals: true },
age: { greaterThan: 21 }
},
orderBy: { name: 'asc' }
}); Transacciones
const transaction = db.transaction(['users', 'orders'], 'readwrite');
try {
await usersTable.createInTransaction(transaction, userData);
await ordersTable.createInTransaction(transaction, orderData);
await transaction.complete;
} catch (error) {
transaction.abort();
} Registro de Cambios
v1.1.0
- Soporte para transacciones
- Mejoras en las definiciones TypeScript
- Nuevos operadores de consulta
v1.0.0
- Versión inicial con operaciones CRUD básicas
Guía de Migración
// Actualizar versión de la base de datos para modificar el esquema
const myDB = new Database({
name: 'MyAppDB',
version: 2, // Versión incrementada
tables: [
// Esquema actualizado
]
}); Soporte de Navegadores
- Chrome 24+
- Firefox 16+
- Safari 7.1+
- Edge 12+
- Opera 15+
Contribuciones
- Haz un fork del repositorio
- Crea tu rama de feature
- Haz commit de tus cambios
- Haz push a la rama
- Abre un Pull Request
git clone https://github.com/albertogodoy/indexedb-manager.git
cd indexdb-manager
npm install
npm run dev Licencia
MIT © 2023 Alberto Godoy
