Compare commits

...

2 Commits

Author SHA1 Message Date
Shawn Davis c659b7c999 Added pgsql.sql command for scripting raw SQL. 5 months ago
Shawn Davis a10e6a7069 Bumped version. 5 months ago
  1. 4
      Makefile
  2. 2
      RELEASE.txt
  3. 16
      scripttease/lib/commands/pgsql.py
  4. 6
      scripttease/version.py
  5. 8
      tests/test_lib_commands_pgsql.py
  6. 2
      tests/test_lib_factories.py

@ -51,7 +51,7 @@ docs: lines
cd docs && make html; cd docs && make html;
cd docs && make coverage; cd docs && make coverage;
open docs/build/coverage/python.txt; open docs/build/coverage/python.txt;
open docs/build/html/index.html; firefox docs/build/html/index.html;
#> clean - Remove pyc files and documentation builds. #> clean - Remove pyc files and documentation builds.
clean: clean:
@ -91,5 +91,5 @@ support:
tests: tests:
coverage run --source=. -m pytest; coverage run --source=. -m pytest;
coverage html --directory=$(COVERAGE_PATH); coverage html --directory=$(COVERAGE_PATH);
open $(COVERAGE_PATH)/index.html; firefox $(COVERAGE_PATH)/index.html;

@ -1 +1 @@
7.1.0-a 7.1.5-a

@ -14,6 +14,7 @@ __all__ = (
"pgsql_exists", "pgsql_exists",
"pgsql_grant", "pgsql_grant",
"pgsql_load", "pgsql_load",
"pgsql_sql",
"pgsql_user", "pgsql_user",
) )
@ -242,6 +243,17 @@ def pgsql_load(database, path, **kwargs):
return pgsql("psql", **kwargs) return pgsql("psql", **kwargs)
def pgsql_sql(statement, database="template1", **kwargs):
kwargs.setdefault("comment", "run SQL statement")
kwargs['dbname'] = database
command = pgsql("psql", **kwargs)
command.statement += ' -c "%s"' % statement
return command
def pgsql_user(name, admin_pass=None, admin_user="postgres", op="create", password=None, **kwargs): def pgsql_user(name, admin_pass=None, admin_user="postgres", op="create", password=None, **kwargs):
"""Work with a PostgreSQL user. """Work with a PostgreSQL user.
@ -278,7 +290,7 @@ def pgsql_user(name, admin_pass=None, admin_user="postgres", op="create", passwo
return pgsql("dropuser", name, password=admin_pass, user=admin_user, **kwargs) return pgsql("dropuser", name, password=admin_pass, user=admin_user, **kwargs)
elif op == "exists": elif op == "exists":
kwargs.setdefault("comment", "determine if %s postgres user exists" % name) kwargs.setdefault("comment", "determine if %s postgres user exists" % name)
kwargs.setdefault("register", "pgsql_use_exists") kwargs.setdefault("register", "pgsql_user_exists")
command = pgsql("psql", password=admin_pass, user=admin_user, **kwargs) command = pgsql("psql", password=admin_pass, user=admin_user, **kwargs)
@ -297,6 +309,6 @@ PGSQL_MAPPINGS = {
'pgsql.dump': pgsql_dump, 'pgsql.dump': pgsql_dump,
'pgsql.exists': pgsql_exists, 'pgsql.exists': pgsql_exists,
'pgsql.grant': pgsql_grant, 'pgsql.grant': pgsql_grant,
# 'pgsql.sql': pgsql_exec, 'pgsql.sql': pgsql_sql,
'pgsql.user': pgsql_user, 'pgsql.user': pgsql_user,
} }

@ -1,7 +1,7 @@
DATE = "2023-09-12" DATE = "2024-04-11"
VERSION = "7.1.1" VERSION = "7.1.5"
MAJOR = 7 MAJOR = 7
MINOR = 1 MINOR = 1
PATCH = 1 PATCH = 5
STATUS = "a" STATUS = "a"

@ -71,6 +71,14 @@ def test_pgsql_load():
assert '--bogus=1' in s # to test passing any key assert '--bogus=1' in s # to test passing any key
def test_pgsql_sql():
c = pgsql_sql("UPDATE etl_testing SET is_processed = 't'", database="example_app")
s = c.get_statement()
# psql -U postgres --host=localhost --port=5432 --dbname="example_app" -c "UPDATE etl_testing SET is_processed = 't'"
assert '--dbname="example_app"' in s
assert '-c "UPDATE etl_testing SET is_processed = \'t\'"' in s
def test_pgsql_user(): def test_pgsql_user():
c = pgsql_user("testing", password="secret") c = pgsql_user("testing", password="secret")
s = c.get_statement() s = c.get_statement()

@ -21,7 +21,7 @@ def test_command_factory():
ini = INILoader("tests/examples/kitchen_sink.ini") ini = INILoader("tests/examples/kitchen_sink.ini")
ini.load() ini.load()
commands = command_factory(ini) commands = command_factory(ini)
assert len(commands) == 48 assert len(commands) == 49
ini = INILoader("tests/examples/bad_command.ini") ini = INILoader("tests/examples/bad_command.ini")
ini.load() ini.load()

Loading…
Cancel
Save