add support for page-based cursortokens (like goext)
This commit is contained in:
@@ -52,14 +52,29 @@ func (db *Database) ListRequestLogs(ctx context.Context, filter models.RequestLo
|
||||
return make([]models.RequestLog, 0), ct.End(), nil
|
||||
}
|
||||
|
||||
pageCond := "1=1"
|
||||
if inTok.Mode == ct.CTMNormal {
|
||||
pageCond = "timestamp_created < :tokts OR (timestamp_created = :tokts AND request_id < :tokid )"
|
||||
}
|
||||
|
||||
filterCond, filterJoin, prepParams, err := filter.SQL()
|
||||
|
||||
orderClause := ""
|
||||
pageCond := "1=1"
|
||||
|
||||
limitCond := ""
|
||||
if pageSize != nil {
|
||||
limitCond = "LIMIT :lim"
|
||||
prepParams["lim"] = *pageSize + 1
|
||||
}
|
||||
|
||||
if inTok.Mode == ct.CTMNormal {
|
||||
pageCond = "timestamp_created < :tokts OR (timestamp_created = :tokts AND request_id < :tokid )"
|
||||
prepParams["tokts"] = inTok.Timestamp
|
||||
prepParams["tokid"] = inTok.Id
|
||||
} else if inTok.Mode == ct.CTMPaginated {
|
||||
if pageSize != nil {
|
||||
limitCond = "LIMIT :lim OFFSET :off"
|
||||
prepParams["lim"] = *pageSize + 1
|
||||
prepParams["off"] = (*pageSize) * (*inTok.Page)
|
||||
}
|
||||
}
|
||||
|
||||
orderClause := "ORDER BY timestamp_created DESC, request_id DESC"
|
||||
if pageSize != nil {
|
||||
orderClause = "ORDER BY timestamp_created DESC, request_id DESC LIMIT :lim"
|
||||
prepParams["lim"] = *pageSize + 1
|
||||
@@ -67,7 +82,7 @@ func (db *Database) ListRequestLogs(ctx context.Context, filter models.RequestLo
|
||||
orderClause = "ORDER BY timestamp_created DESC, request_id DESC"
|
||||
}
|
||||
|
||||
sqlQuery := "SELECT " + "requests.*" + " FROM requests " + filterJoin + " WHERE ( " + pageCond + " ) AND ( " + filterCond + " ) " + orderClause
|
||||
sqlQuery := "SELECT " + "requests.*" + " FROM requests " + filterJoin + " WHERE ( " + pageCond + " ) AND ( " + filterCond + " ) " + orderClause + " " + limitCond
|
||||
|
||||
prepParams["tokts"] = inTok.Timestamp
|
||||
prepParams["tokid"] = inTok.Id
|
||||
|
||||
Reference in New Issue
Block a user