Skip to content

Queries

Carlos Lopez edited this page Jul 16, 2026 · 1 revision

Query API

Guía completa sobre operaciones CRUD y queries.

Insert

Insertar nuevos registros en la base de datos.

Sintaxis Básica

await db.insert(Entity).values(data);

Ejemplo Simple

const user = await db.insert(User).values({
  id: 'uuid-1',
  email: 'john@example.com',
  name: 'John Doe',
  age: 30,
  createdAt: new Date()
});

Insertar Múltiples Registros

const users = await db.insert(User).values([
  {
    id: 'uuid-1',
    email: 'john@example.com',
    name: 'John',
    age: 30,
    createdAt: new Date()
  },
  {
    id: 'uuid-2',
    email: 'jane@example.com',
    name: 'Jane',
    age: 28,
    createdAt: new Date()
  }
]);

Select

Consultar registros con filtros opcionales.

Obtener Todos

const allUsers = await db.select().from(User);

Seleccionar Campos Específicos

const emails = await db
  .select(['email', 'name'])
  .from(User);

Con WHERE Clause

const adults = await db
  .select()
  .from(User)
  .where(eq('age', 30));

Con múltiples condiciones

const filtered = await db
  .select()
  .from(User)
  .where(
    and(
      eq('age', 30),
      ilike('email', '%@example.com')
    )
  );

Con Relaciones (Include)

const userWithPosts = await db
  .select()
  .from(User)
  .where(eq('id', 'uuid-1'))
  .include({
    posts: true  // Cargar relación 'posts'
  });

Selecting with Custom Conditions

const query = db.select(['id', 'name', 'email']).from(User);

// Aplicar condiciones dinámicamente
if (filterAge) {
  query.where(gte('age', 18));
}

const results = await query;

Update

Actualizar registros existentes.

Sintaxis Básica

await db
  .update(Entity)
  .set(updatedFields)
  .where(condition);

Ejemplo

await db
  .update(User)
  .set({
    name: 'Jane Doe',
    age: 31,
    updatedAt: new Date()
  })
  .where(eq('id', 'uuid-1'));

Actualizar múltiples registros

await db
  .update(User)
  .set({ isActive: false })
  .where(lt('age', 18)); // Desactivar menores de edad

Delete

Eliminar registros.

Sintaxis Básica

await db
  .delete()
  .from(Entity)
  .where(condition);

Ejemplo

await db
  .delete()
  .from(User)
  .where(eq('id', 'uuid-1'));

Eliminar múltiples registros

await db
  .delete()
  .from(User)
  .where(gte('createdAt', oneYearAgo)); // Archivar antiguos

Raw Queries

Para consultas más complejas, usa el método $raw:

const results = await db.$raw<MyType>(
  'SELECT * FROM users WHERE age > ?',
  [18]
);

Transaction-like Behavior

GitDB ejecuta cada operación como un commit Git automático:

// Cada operación crea un commit
await db.insert(User).values(userData);  // Commit 1
await db.update(User).set(updates).where(...);  // Commit 2
await db.delete().from(User).where(...);  // Commit 3

// Todos los cambios quedan en el historio de Git

Closure

Cierra la conexión cuando termines:

await db.close();

Next Steps

Clone this wiki locally