sqlmongoose
Version:
Mongoose-like schemas and models for SQLite3
55 lines (54 loc) • 1.46 kB
JavaScript
import { Database } from 'sqlite3';
import { Schema } from './Schema';
import { Model } from './Model';
class SQLiteDB {
constructor() {
this.db = null;
this.models = new Map();
}
// Conectar a la base de datos
async connect(path) {
return new Promise((resolve, reject) => {
this.db = new Database(path, (err) => {
if (err)
reject(err);
else
resolve();
});
});
}
// Definir un modelo
define(name, schema) {
if (!this.db)
throw new Error('Database not connected');
const model = new Model(this.db, name.toLowerCase(), schema);
this.models.set(name, model);
return model;
}
// Obtener un modelo
model(name) {
const model = this.models.get(name);
if (!model)
throw new Error(`Model ${name} not found`);
return model;
}
getDatabase() {
return this.db;
}
async close() {
if (this.db) {
await new Promise((resolve, reject) => {
this.db.close((err) => {
if (err)
reject(err);
else
resolve(true);
});
});
this.db = null;
}
}
}
// Exportar una instancia única
export const sqlmongoose = new SQLiteDB();
export { Schema };