/bun-little-orm

A little ORM for bun:sqlite

Primary LanguageTypeScriptMIT LicenseMIT

bun-little-orm

English below

Un mini ORM para bun:sqlite con soporte para lo típico:

  • Crear la tabla
  • Insertar
  • Buscar
  • Actualizar

Para instanciarlo es necesario un instancia de Database y el nombre de la colección.

import { Database } from 'bun:sqlite';

let col = new Collection(new Database("mydb.sqlite"), "test")

O con @libsql/client

import { createClient } from "@libsql/client";

let col = new Collection(createClient({
  url : "file::mydb.sqlite"
}), "test")

Luego es tan fácil como hacer

let result = await col.insert({ hello : "world"})
console.log(result.id) // el id de la instancia en la BD

Se pueden ir añadiendo campos adicionales, y se encargará de actualizar la tabla en consecuencia.

let result = await col.insert({ hello : "field", count : 1})

Los tipos soportados de momento son los siguientes.

enum TypeMap {
  "number"  = "REAL",
  "string"  = "TEXT",
  "boolean" = "INTEGER",
  "date"    = "INTEGER",
  "object"  = "TEXT",
  "array"   = "TEXT"
}

Soporta búsquedas sencillas y con wilcards, también búsquedas por id.

let result1 = await col.find({ count : 1 })
let result2 = await col.find({  hello : "%eld"})
let result3 = await col.findById(1) // devuelve solo un element o null

También se pueden hacer actualizaciones por id

await col.update(1, { hello : "updates" })

De momento no se puede borrar. Pero para ir tirando yo creo que está bien.

Espero que sea de utilidad. Para cualquer sugerencia me comentáis.

English

A mini ORM for bun:sqlite with support for the basics:

  • Create table
  • Insert
  • Search
  • Update

To instantiate it, you need an instance of Database and the name of the collection.

import { Database } from 'bun:sqlite';

let col = new Collection(new Database("mydb.sqlite"), "test");

Or with @libsql/client

import { createClient } from "@libsql/client";

let col = new Collection(createClient({
  url : "file::mydb.sqlite"
}), "test")

Then it's as easy as doing:

let result = await col.insert({ hello : "world" });
console.log(result.id); // the id of the instance in the database

You can add additional fields, and it will take care of updating the table accordingly.

let result = await col.insert({ hello : "field", count : 1 });

The supported types are

enum TypeMap {
  "number"  = "REAL",
  "string"  = "TEXT",
  "boolean" = "INTEGER",
  "date"    = "INTEGER",
  "object"  = "TEXT",
  "array"   = "TEXT"
}

It supports simple and wildcard searches, as well as searches by id.

let result1 = await col.find({ count : 1 });
let result2 = await col.find({ hello : "%eld" });
let result3 = await col.findById(1); // returns only one element or null

Updates can also be made by id.

col.update(1, { hello : "updates" });

For now you cannot delete. But for getting started, I think it's fine.

I hope this is helpful! Let me know if you have any other questions.