Instalación
Add InsForge to your Swift Package Manager dependencies:
Enable Logging (Optional)
For debugging, you can configure the SDK log level and destination:
Log Levels:
| Level | Description |
|---|
.trace | Most verbose, includes all internal details |
.debug | Detailed information for debugging |
.info | General operational information (default) |
.warning | Warnings that don’t prevent operation |
.error | Errors that affect functionality |
.critical | Critical failures |
Log Destinations:
| Destination | Description |
|---|
.console | Standard output (print) |
.osLog | Apple’s unified logging system (recommended for iOS/macOS) |
.none | Disable logging |
.custom | Provide your own LogHandler factory |
Use .info or .error in production to avoid exposing sensitive data in logs.
Definir modelos
Defina sus modelos de datos usando el protocolo Codable de Swift:
insert()
Inserte nuevos registros en una tabla.
Parámetros
values - Objeto Codable único o matriz de objetos para insertar
Ejemplos
update()
Actualizar registros existentes en una tabla.
Ejemplos
delete()
Eliminar registros de una tabla.
Ejemplos
select()
Consultar registros de una tabla.
Ejemplos
rpc()
Llamar a funciones PostgreSQL almacenadas (RPC - Remote Procedure Call). Este método le permite invocar directamente funciones SQL definidas en su base de datos.
Parámetros
functionName (String) - Nombre de la función PostgreSQL a llamar
args ([String: Any]?, optional) - Argumentos para pasar a la función
Ejemplos
Detalles de implementación
- Sin argumentos: Utiliza la solicitud GET a
/api/database/rpc/{functionName}
- Con argumentos: Utiliza la solicitud POST con cuerpo JSON a
/api/database/rpc/{functionName}
- Use
execute() para funciones que devuelven matrices o void
- Use
executeSingle() para funciones que devuelven un solo objeto o valor
Filtros
| Filtro | Descripción | Ejemplo |
|---|
.eq(column, value:) | Igual | .eq("status", value: "active") |
.neq(column, value:) | No igual | .neq("status", value: "banned") |
.gt(column, value:) | Mayor que | .gt("age", value: 18) |
.gte(column, value:) | Mayor o igual | .gte("price", value: 100) |
.lt(column, value:) | Menor que | .lt("stock", value: 10) |
.lte(column, value:) | Menor o igual | .lte("priority", value: 3) |
.like(column, pattern:) | Patrón sensible a mayúsculas | .like("name", pattern: "%Widget%") |
.ilike(column, pattern:) | Patrón insensible a mayúsculas | .ilike("email", pattern: "%@gmail.com") |
.in(column, values:) | Valor en matriz | .in("status", values: ["pending", "active"]) |
.is(column, value:) | Exactamente igual (para nil/bool) | .is("deleted_at", value: nil) |
Modificadores
| Modificador | Descripción | Ejemplo |
|---|
.order(column, ascending:) | Resultados de ordenación | .order("createdAt", ascending: false) |
.limit(count) | Limitar filas | .limit(10) |
.offset(count) | Saltar filas | .offset(20) |
.range(from:, to:) | Paginación de rango | .range(from: 0, to: 9) |