Se ha implementado exitosamente el operador LIMIT para la clase QuerySelect, permitiendo limitar el número de filas devueltas en una consulta SELECT.
-
Clase Limit: Se creó una nueva clase
Limiten el paqueteoperatorque maneja los parámetros de límite y offset. -
Soporte en QuerySelect: Se agregó soporte completo para LIMIT en la clase QuerySelect y su QueryBuilder.
-
Métodos disponibles:
limit(count: Int): Limita el número de filas a devolverlimit(count: Int, offset: Int?): Limita el número de filas con un offset opcionallimit(limitOperator: Limit): Acepta un objeto Limit directamente
val query = QuerySelect.builder("users")
.where(SQLOperator.Equals("status", "active"))
.limit(10)
.build()
// Genera: SELECT * FROM users WHERE status = 'active' LIMIT 10val query = QuerySelect.builder("users")
.where(SQLOperator.Equals("status", "active"))
.limit(10, 5)
.build()
// Genera: SELECT * FROM users WHERE status = 'active' LIMIT 10 OFFSET 5val limitOperator = Limit(count = 10, offset = 5)
val query = QuerySelect.builder("users")
.where(SQLOperator.Equals("status", "active"))
.limit(limitOperator)
.build()
// Genera: SELECT * FROM users WHERE status = 'active' LIMIT 10 OFFSET 5val query = QuerySelect.builder("users")
.where(SQLOperator.Equals("status", "active"))
.and("age", SQLOperator.GreaterThan("age", 18))
.orderBy(OrderBy.Desc("created_at"))
.limit(20)
.build()
// Genera: SELECT * FROM users WHERE status = 'active' AND age > 18
// ORDER BY created_at DESC
// LIMIT 20val query = QuerySelect.builder("users")
.where(SQLOperator.Equals("status", "active"))
.build()
// Agregar límite después de crear la consulta
query.limit(15, 10)
// Genera: SELECT * FROM users WHERE status = 'active' LIMIT 15 OFFSET 10La clase Limit incluye validaciones para garantizar que:
- El count debe ser no negativo
- El offset (si se proporciona) debe ser no negativo
La implementación respeta el orden estándar de SQL:
- SELECT campos
- FROM tabla
- WHERE condiciones
- ORDER BY (si existe)
- LIMIT (si existe)
Esta implementación permite crear consultas SQL complejas con paginación de manera fluida y manteniendo la consistencia con el resto del framework.