Class: PackAPI::Pagination::PaginatorCursor
- Inherits:
-
Object
- Object
- PackAPI::Pagination::PaginatorCursor
show all
- Defined in:
- lib/pack_api/pagination/paginator_cursor.rb
Defined Under Namespace
Classes: SqlLiteralSerializer
Constant Summary
collapse
- MAX_LENGTH =
2048
- CACHE_KEY_PREFIX =
'paginator_cursor'
- CACHE_EXPIRES_IN =
8.hours
Class Method Summary
collapse
Class Method Details
.create(query:, sort:, total_items:, offset:, per_page:, metadata: nil) ⇒ Object
10
11
12
13
14
15
16
17
18
19
|
# File 'lib/pack_api/pagination/paginator_cursor.rb', line 10
def create(query:, sort:, total_items:, offset:, per_page:, metadata: nil)
sort_ready_to_serialize = SqlLiteralSerializer.serialize(sort)
cursor_params = { query:, sort: sort_ready_to_serialize, total_items:, offset:, per_page:, metadata: }
token = OpaqueTokenV2.create(cursor_params)
return token if token.size <= MAX_LENGTH
cache_key = generate_cache_key
Rails.cache.write(cache_key, cursor_params, expires_in: CACHE_EXPIRES_IN)
OpaqueTokenV2.create(cache_key)
end
|
.parse(encoded) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/pack_api/pagination/paginator_cursor.rb', line 21
def parse(encoded)
decoded = parse_opaque_token(encoded)
decoded = decode_cache_key(decoded) if decoded.is_a?(String)
decoded[:sort] = deserialize_sort_args(decoded)
decoded
end
|