Skip to content

ever23/tauri-sql-tab

Repository files navigation

tauri-sql-tab

NPM Version Node.js Version

tauri-sql-tab es la solución definitiva para integrar la potencia de dbtabla y tabla-model en aplicaciones de escritorio creadas con Tauri. Permite interactuar con bases de datos SQL (SQLite, MySQL, PostgreSQL) de forma nativa a través del plugin oficial de Tauri, manteniendo una interfaz de alto nivel orientada a objetos (Active Record).

🚀 Características Principales

  • Integración Nativa con Tauri: Diseñado específicamente para trabajar sobre @tauri-apps/plugin-sql.
  • Zero Logic en Rust: Toda tu lógica de base de datos permanece en JavaScript/TypeScript.
  • Patrón Active Record: Los resultados son objetos inteligentes (dbRow) con métodos .update() y .delete().
  • Gestión de Esquemas: Sincronización automática de tablas basada en modelos de tabla-model.
  • Fluent Query Builder: Motor de selección polimórfico con soporte para Joins dinámicos y búsquedas inteligentes.
  • Portabilidad: API 100% compatible con sqlite3-tab y mysql-tab.

📚 Ecosistema dbtabla

Este paquete forma parte de un ecosistema modular. También puedes utilizar:

  • tabla-model: El motor de definición de esquemas.
  • dbtabla: El núcleo de la librería.
  • sqlite3-tab: Para aplicaciones Node.js puras con SQLite.

Configuración de Tauri

Para que este paquete funcione, debes tener configurado el plugin de SQL en tu proyecto Tauri.

1. Dependencias de Rust (src-tauri/Cargo.toml)

Añade el plugin a tu archivo de configuración de Rust:

[dependencies]
tauri-plugin-sql = "2.0.0" # Usa la versión compatible con tu Tauri

2. Registro del Plugin (src-tauri/src/lib.rs o main.rs)

Registra el plugin en el constructor de tu aplicación:

fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_sql::Builder::default().build()) // <--- Añadir esto
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

3. Permisos (Solo Tauri v2)

Asegúrate de conceder permisos en src-tauri/capabilities/default.json:

{
  "permissions": [
    "sql:default",
    "sql:allow-load",
    "sql:allow-execute",
    "sql:allow-select"
  ]
}

📦 Instalación

npm install tauri-sql-tab

🛠️ Inicio Rápido

1. Conexión en Tauri

Primero carga la base de datos usando el plugin de Tauri y luego envuélvela con tauri-sql-tab.

import Database from '@tauri-apps/plugin-sql';
import { tauriSqlTab } from 'tauri-sql-tab';

// Carga la base de datos (SQLite en este ejemplo)
const dbTauri = await Database.load('sqlite:notas.db');

// Inicializa el conector de dbtabla
const db = new tauriSqlTab(dbTauri);

2. Definición y Registro de Modelos

import Model from 'tabla-model';

const UsuarioModel = new Model('usuarios', {
    colums: [
        { name: 'id', type: 'integer', primary: true, autoincrement: true },
        { name: 'nombre', type: 'varchar(100)' },
        { name: 'email', type: 'varchar(100)', unique: true }
    ]
});

db.addModel(UsuarioModel);

📖 Guía de Uso

Operaciones de Tabla

const usuarios = db.tabla('usuarios');

Inserción

await usuarios.insert({ nombre: 'Antigravity', email: 'anti@example.com' });

Consultas (Select)

// Búsqueda simple
const lista = await usuarios.select("id > 0");

// Búsqueda con objeto (Where avanzado)
// Sufijos: % (LIKE), ! (!=), > (>), < (<)
const resultados = await usuarios.select(null, null, { 
    "nombre%": "Anti%", 
    "||email!": "test@test.com" 
});

// Búsqueda por ID
const user = await usuarios.selectById(1);

Actualización y Borrado

await usuarios.update({ nombre: 'Nuevo Nombre' }, { id: 1 });
await usuarios.delete({ id: 1 });

💎 Active Record (dbRow)

Los resultados devueltos por select son instancias de dbRow:

const user = await usuarios.selectById(1);
if (user) {
    user.nombre = "Editado";
    await user.update(); // Sincroniza con la DB automáticamente
}

🧪 Pruebas

El paquete incluye una suite de pruebas que utiliza un Mock de SQLite para entorno Node.js:

npm test

🤖 Agentes de IA & Skills

Este proyecto incluye una AI Skill diseñada para que asistentes de IA (como ChatGPT, Claude o Copilot) puedan entender y utilizar esta librería de forma óptima.

Puedes encontrarla en: SKILL.md

📄 Licencia

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors