From 04d21ccd089fcaf7a2b535d217fc541ab19aa54b Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Fri, 11 May 2018 10:19:25 -0300 Subject: [PATCH] /-/versions now includes SQLite fts_versions, closes #252 --- datasette/app.py | 13 +++++++++++++ tests/test_api.py | 1 + 2 files changed, 14 insertions(+) diff --git a/datasette/app.py b/datasette/app.py index 2d8547a5..32ef8619 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -1392,6 +1392,18 @@ class Datasette: sqlite_extensions[extension] = None except Exception as e: pass + # Figure out supported FTS versions + fts_versions = [] + for fts in ('FTS5', 'FTS4', 'FTS3'): + try: + conn.execute( + 'CREATE VIRTUAL TABLE v{fts} USING {fts} (t TEXT)'.format( + fts=fts + ) + ) + fts_versions.append(fts) + except sqlite3.OperationalError: + continue return { 'python': { 'version': '.'.join(map(str, sys.version_info[:3])), @@ -1402,6 +1414,7 @@ class Datasette: }, 'sqlite': { 'version': sqlite_version, + 'fts_versions': fts_versions, 'extensions': sqlite_extensions, } } diff --git a/tests/test_api.py b/tests/test_api.py index 22ec50ca..30ad13b2 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -864,6 +864,7 @@ def test_versions_json(app_client): assert 'version' in response.json['datasette'] assert 'sqlite' in response.json assert 'version' in response.json['sqlite'] + assert 'fts_versions' in response.json['sqlite'] def test_page_size_matching_max_returned_rows(app_client_returend_rows_matches_page_size):