Paginate with offset argument
authorJavier Sancho <jsf@jsancho.org>
Tue, 3 Nov 2020 17:29:58 +0000 (18:29 +0100)
committerJavier Sancho <jsf@jsancho.org>
Tue, 3 Nov 2020 17:29:58 +0000 (18:29 +0100)
datasette_pytables/__init__.py
tests/test_api.py

index 9cb90051037c91770f7b10af62dc7ea21435e5e1..889dccadbf9f4ad453022e9c7d6c5acdfa3bd430 100644 (file)
@@ -198,6 +198,11 @@ class PyTablesConnector(dc.Connector):
         if 'limit' in parsed_sql:
             limit = int(parsed_sql['limit'])
 
         if 'limit' in parsed_sql:
             limit = int(parsed_sql['limit'])
 
+        # Offset
+        offset = None
+        if 'offset' in parsed_sql:
+            offset = int(parsed_sql['offset'])
+
         # Truncate if needed
         if page_size and max_returned_rows and truncate:
             if max_returned_rows == page_size:
         # Truncate if needed
         if page_size and max_returned_rows and truncate:
             if max_returned_rows == page_size:
@@ -245,6 +250,8 @@ class PyTablesConnector(dc.Connector):
         # Get results
         get_rowid = make_get_rowid()
         get_row_value = make_get_row_value()
         # Get results
         get_rowid = make_get_rowid()
         get_row_value = make_get_row_value()
+        if offset:
+            table_rows = table_rows[offset:]
         count = 0
         for table_row in table_rows:
             count += 1
         count = 0
         for table_row in table_rows:
             count += 1
index b1900efcd422f91ae4b6fd253d74db0ec44ece95..71c926277900aeaea63a1de202886797f2e08a2d 100644 (file)
@@ -232,6 +232,7 @@ def test_paginate_tables_and_arrays(app_client, path, expected_rows, expected_pa
         fetched.extend(response.json['rows'])
         path = response.json['next_url']
         if path:
         fetched.extend(response.json['rows'])
         path = response.json['next_url']
         if path:
+            path = path.replace('http://localhost', '')
             assert response.json['next']
             assert '_next={}'.format(response.json['next']) in path
 
             assert response.json['next']
             assert '_next={}'.format(response.json['next']) in path