Base de datos
Nuvem Database es un motor SQL (D1/SQLite) completamente administrado que corre en el edge. Cada proyecto tiene su propia base de datos aislada.
Conceptos
- Tabla — define la estructura (columnas con tipos)
- Registro — una fila de datos
- Query — consulta SQL ejecutada directamente
Tipos de columna
| Tipo | Descripción |
|---|---|
text | Texto de longitud variable |
number | Número decimal (float) |
integer | Número entero |
boolean | true / false |
date | Fecha ISO 8601 |
Endpoints
Tablas
# Listar tablasGET /v1/db/tables
# Crear tablaPOST /v1/db/tables{ "name": "orders", "columns": [ { "name": "customer_id", "type": "text", "required": true }, { "name": "total", "type": "number", "required": true }, { "name": "status", "type": "text", "required": false } ]}
# Obtener tablaGET /v1/db/tables/:tableId
# Eliminar tablaDELETE /v1/db/tables/:tableIdRegistros
# Listar registrosGET /v1/db/:table?page=1&pageSize=20
# Crear registroPOST /v1/db/:table{ "customer_id": "usr_abc", "total": 5000, "status": "pending" }
# Obtener registroGET /v1/db/:table/:id
# Actualizar registroPUT /v1/db/:table/:id{ "status": "paid" }
# Eliminar registroDELETE /v1/db/:table/:idQuery SQL
# Ejecutar query (solo SELECT)POST /v1/db/query{ "sql": "SELECT * FROM orders WHERE status = ? ORDER BY created_at DESC LIMIT 10", "params": ["pending"]}SDK
import { createClient } from '@nuvem/js';
const nuvem = createClient({ apiKey: process.env.NUVEM_API_KEY! });
// Listar con filtroconst { data } = await nuvem.db .from('orders') .select() .where({ status: 'pending' }) .orderBy('created_at', 'desc') .limit(10) .all();
// Crearconst record = await nuvem.db.from('orders').insert({ customer_id: 'usr_abc', total: 5000, status: 'pending',});
// Actualizarawait nuvem.db.from('orders').update({ status: 'paid' }).where({ id: 'rec_xyz' });
// Eliminarawait nuvem.db.from('orders').delete().where({ id: 'rec_xyz' });Errores comunes
| Código | Mensaje | Causa |
|---|---|---|
table_not_found | La tabla no existe | Tabla inexistente o typo en el nombre |
record_not_found | El registro no existe | ID inválido |
validation_error | Campo requerido faltante | Falta un campo required: true |
duplicate_column | Ya existe una columna con ese nombre | Al agregar columna duplicada |