From bce18721093489c0047792444b6f6eda5e8cc20b Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Fri, 6 Nov 2020 16:43:33 -0800 Subject: [PATCH] order= is now order_by=, refs #197 --- sqlite_utils/cli.py | 2 +- sqlite_utils/db.py | 17 ++++++++++++----- tests/test_fts.py | 4 ++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/sqlite_utils/cli.py b/sqlite_utils/cli.py index b3df70a..468e6b4 100644 --- a/sqlite_utils/cli.py +++ b/sqlite_utils/cli.py @@ -1033,7 +1033,7 @@ def search( raise click.ClickException( "Table '{}' has no column '{}".format(dbtable, c) ) - sql = table_obj.search_sql(columns=column, order=order, limit=limit) + sql = table_obj.search_sql(columns=column, order_by=order, limit=limit) if show_sql: click.echo(sql) return diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index 8e586d8..40bcb5b 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -1321,7 +1321,7 @@ class Table(Queryable): ) return self - def search_sql(self, columns=None, order=None, limit=None): + def search_sql(self, columns=None, order_by=None, limit=None): # Pick names for table and rank column that don't clash original = "original_" if self.name == "original" else "original" rank = "rank" @@ -1352,7 +1352,7 @@ class Table(Queryable): where [{fts_table}] match :query order by - {order} + {order_by} {limit} """ ).strip() @@ -1370,12 +1370,19 @@ class Table(Queryable): rank=rank, rank_implementation=rank_implementation, fts_table=fts_table, - order=order or rank, + order_by=order_by or rank, limit="limit {}".format(limit) if limit else "", ).strip() - def search(self, q, order=None): - cursor = self.db.execute(self.search_sql(order=order), {"query": q}) + def search(self, q, order_by=None, columns=None, limit=None): + cursor = self.db.execute( + self.search_sql( + order_by=order_by, + columns=columns, + limit=limit, + ), + {"query": q}, + ) columns = [c[0] for c in cursor.description] for row in cursor: yield dict(zip(columns, row)) diff --git a/tests/test_fts.py b/tests/test_fts.py index 9592bad..8cb05e9 100644 --- a/tests/test_fts.py +++ b/tests/test_fts.py @@ -160,7 +160,7 @@ def test_fts_tokenize(fresh_db): fts_version="FTS{}".format(fts_version), tokenize="porter", ) - rows = list(table.search("bite", order="rowid")) + rows = list(table.search("bite", order_by="rowid")) assert len(rows) == 1 assert { "rowid": 2, @@ -391,7 +391,7 @@ def test_enable_fts_replace_does_nothing_if_args_the_same(): ), ), ( - {"columns": ["title"], "order": "rowid", "limit": 10}, + {"columns": ["title"], "order_by": "rowid", "limit": 10}, "FTS5", ( "with original as (\n"