mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-21 02:16:09 -05:00
PostgreSQL driver, tests against DB backends, and general drivers cleanup (#2723)
* PostgreSQL driver and general drivers cleanup Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Make tests pass Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Add black --target-version flag in make.bat Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Rewrite postgres driver Most of the logic is now in PL/pgSQL. This completely avoids the use of Python f-strings to format identifiers into queries. Although an SQL-injection attack would have been impossible anyway (only the owner would have ever had the ability to do that), using PostgreSQL's format() is more reliable for unusual identifiers. Performance-wise, I'm not sure whether this is an improvement, but I highly doubt that it's worse. Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Reformat Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Fix PostgresDriver.delete_all_data() Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Clean up PL/pgSQL code Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * More PL/pgSQL cleanup Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * PL/pgSQL function optimisations Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Ensure compatibility with PostgreSQL 10 and below Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * More/better docstrings for PG functions Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Fix typo in docstring Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Return correct value on toggle() Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Use composite type for PG function parameters Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Fix JSON driver's Config.clear_all() Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Correct description for Mongo tox recipe Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Fix linting errors Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Update dep specification after merging bumpdeps Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Add towncrier entries Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Update from merge Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Mention [postgres] extra in install docs Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Support more connection options and use better defaults Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Actually pass PG env vars in tox Signed-off-by: Toby Harradine <tobyharradine@gmail.com> * Replace event trigger with manual DELETE queries Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
This commit is contained in:
committed by
Michael H
parent
57fa29dd64
commit
d1a46acc9a
37
tox.ini
37
tox.ini
@@ -15,12 +15,47 @@ description = Run tests and basic automatic issue checking.
|
||||
whitelist_externals =
|
||||
pytest
|
||||
pylint
|
||||
extras = voice, test, mongo
|
||||
extras = voice, test
|
||||
commands =
|
||||
python -m compileall ./redbot/cogs
|
||||
pytest
|
||||
pylint ./redbot
|
||||
|
||||
[testenv:postgres]
|
||||
description = Run pytest with PostgreSQL backend
|
||||
whitelist_externals =
|
||||
pytest
|
||||
extras = voice, test, postgres
|
||||
setenv =
|
||||
RED_STORAGE_TYPE=postgres
|
||||
passenv =
|
||||
# Use the following env vars for connection options, or other default options described here:
|
||||
# https://magicstack.github.io/asyncpg/current/index.html#asyncpg.connection.connect
|
||||
PGHOST
|
||||
PGPORT
|
||||
PGUSER
|
||||
PGPASSWORD
|
||||
PGDATABASE
|
||||
commands =
|
||||
pytest
|
||||
|
||||
[testenv:mongo]
|
||||
description = Run pytest with MongoDB backend
|
||||
whitelist_externals =
|
||||
pytest
|
||||
extras = voice, test, mongo
|
||||
setenv =
|
||||
RED_STORAGE_TYPE=mongo
|
||||
passenv =
|
||||
RED_MONGO_URI
|
||||
RED_MONGO_HOST
|
||||
RED_MONGO_PORT
|
||||
RED_MONGO_USER
|
||||
RED_MONGO_PASSWORD
|
||||
RED_MONGO_DATABASE
|
||||
commands =
|
||||
pytest
|
||||
|
||||
[testenv:docs]
|
||||
description = Attempt to build docs with sphinx-build
|
||||
whitelist_externals =
|
||||
|
||||
Reference in New Issue
Block a user