Source code for testsuite.databases.clickhouse.discover
import collections
import pathlib
import typing
from . import classes
from . import utils
[docs]def find_schemas(
schema_dirs: typing.List[pathlib.Path],
dbprefix: str = 'testsuite-',
) -> typing.Dict[str, classes.DatabaseConfig]:
result = {}
for path in schema_dirs:
if not path.is_dir():
continue
for dbname, migrations in _scan_path(path).items():
full_db_name: str = dbprefix + dbname
result[dbname] = classes.DatabaseConfig(
dbname=full_db_name,
migrations=migrations,
)
return result
def _scan_path(
schema_path: pathlib.Path,
) -> typing.DefaultDict[str, typing.List[pathlib.Path]]:
result = collections.defaultdict(list)
for entry in schema_path.iterdir():
if entry.suffix == '.sql' and entry.is_file():
result[entry.stem].append(entry)
elif entry.is_dir():
result[entry.stem].extend(utils.scan_sql_directory(entry))
return result