mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
parent
909e66dfdb
commit
21b57cdf9a
3 changed files with 18 additions and 2 deletions
|
|
@ -147,6 +147,12 @@ class ConnectedDatabase:
|
||||||
p = Path(path)
|
p = Path(path)
|
||||||
self.hash = inspect_hash(p)
|
self.hash = inspect_hash(p)
|
||||||
self.cached_size = p.stat().st_size
|
self.cached_size = p.stat().st_size
|
||||||
|
# Maybe use self.ds.inspect_data to populate cached_table_counts
|
||||||
|
if self.ds.inspect_data and self.ds.inspect_data.get(self.name):
|
||||||
|
self.cached_table_counts = {
|
||||||
|
key: value["count"]
|
||||||
|
for key, value in self.ds.inspect_data[self.name]["tables"].items()
|
||||||
|
}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def size(self):
|
def size(self):
|
||||||
|
|
@ -310,6 +316,7 @@ class Datasette:
|
||||||
elif memory:
|
elif memory:
|
||||||
self.files = (MEMORY,) + self.files
|
self.files = (MEMORY,) + self.files
|
||||||
self.databases = {}
|
self.databases = {}
|
||||||
|
self.inspect_data = inspect_data
|
||||||
for file in self.files:
|
for file in self.files:
|
||||||
path = file
|
path = file
|
||||||
is_memory = False
|
is_memory = False
|
||||||
|
|
@ -325,7 +332,6 @@ class Datasette:
|
||||||
self.databases[db.name] = db
|
self.databases[db.name] = db
|
||||||
self.cache_headers = cache_headers
|
self.cache_headers = cache_headers
|
||||||
self.cors = cors
|
self.cors = cors
|
||||||
self._inspect = inspect_data
|
|
||||||
self._metadata = metadata or {}
|
self._metadata = metadata or {}
|
||||||
self.sqlite_functions = []
|
self.sqlite_functions = []
|
||||||
self.sqlite_extensions = sqlite_extensions or []
|
self.sqlite_extensions = sqlite_extensions or []
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ def make_app_client(
|
||||||
filename="fixtures.db",
|
filename="fixtures.db",
|
||||||
is_immutable=False,
|
is_immutable=False,
|
||||||
extra_databases=None,
|
extra_databases=None,
|
||||||
|
inspect_data=None,
|
||||||
):
|
):
|
||||||
with tempfile.TemporaryDirectory() as tmpdir:
|
with tempfile.TemporaryDirectory() as tmpdir:
|
||||||
filepath = os.path.join(tmpdir, filename)
|
filepath = os.path.join(tmpdir, filename)
|
||||||
|
|
@ -71,6 +72,7 @@ def make_app_client(
|
||||||
metadata=METADATA,
|
metadata=METADATA,
|
||||||
plugins_dir=plugins_dir,
|
plugins_dir=plugins_dir,
|
||||||
config=config,
|
config=config,
|
||||||
|
inspect_data=inspect_data,
|
||||||
)
|
)
|
||||||
ds.sqlite_functions.append(("sleep", 1, lambda n: time.sleep(float(n))))
|
ds.sqlite_functions.append(("sleep", 1, lambda n: time.sleep(float(n))))
|
||||||
client = TestClient(ds.app().test_client)
|
client = TestClient(ds.app().test_client)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from .fixtures import app_client
|
from .fixtures import app_client, make_app_client
|
||||||
from datasette.cli import cli
|
from datasette.cli import cli
|
||||||
from click.testing import CliRunner
|
from click.testing import CliRunner
|
||||||
import pathlib
|
import pathlib
|
||||||
|
|
@ -31,6 +31,14 @@ def test_inspect_cli_writes_to_file(app_client):
|
||||||
assert ["fixtures"] == list(data.keys())
|
assert ["fixtures"] == list(data.keys())
|
||||||
|
|
||||||
|
|
||||||
|
def test_serve_with_inspect_file_prepopulates_table_counts_cache():
|
||||||
|
inspect_data = {"fixtures": {"tables": {"hithere": {"count": 44}}}}
|
||||||
|
for client in make_app_client(inspect_data=inspect_data, is_immutable=True):
|
||||||
|
assert inspect_data == client.ds.inspect_data
|
||||||
|
db = client.ds.databases["fixtures"]
|
||||||
|
assert {"hithere": 44} == db.cached_table_counts
|
||||||
|
|
||||||
|
|
||||||
def test_spatialite_error_if_attempt_to_open_spatialite():
|
def test_spatialite_error_if_attempt_to_open_spatialite():
|
||||||
runner = CliRunner()
|
runner = CliRunner()
|
||||||
result = runner.invoke(
|
result = runner.invoke(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue