From d340e366b89dd0f21c796700f68ad98acf5a1632 Mon Sep 17 00:00:00 2001 From: Iain-S <25081046+Iain-S@users.noreply.github.com> Date: Mon, 10 Jul 2023 12:25:40 +0100 Subject: [PATCH 1/2] Support Postgres UUID columns --- sqlsynthgen/make.py | 2 ++ tests/examples/src.dump | 10 ++++++++++ tests/test_make.py | 12 ++++++++++++ 3 files changed, 24 insertions(+) diff --git a/sqlsynthgen/make.py b/sqlsynthgen/make.py index 4eed481..c83fc0c 100644 --- a/sqlsynthgen/make.py +++ b/sqlsynthgen/make.py @@ -15,6 +15,7 @@ from mimesis.providers.base import BaseProvider from sqlacodegen.generators import DeclarativeGenerator from sqlalchemy import MetaData, UniqueConstraint, text +from sqlalchemy.dialects import postgresql from sqlalchemy.sql import sqltypes from sqlsynthgen import providers @@ -220,6 +221,7 @@ def _get_provider_for_column(column: Any) -> Tuple[List[str], str, List[str]]: (sqltypes.DateTime, False): "generic.datetime.datetime", (sqltypes.Numeric, False): "generic.numeric.float_number", (sqltypes.LargeBinary, False): "generic.bytes_provider.bytes", + (postgresql.UUID, False): "generic.cryptographic.uuid", (sqltypes.String, False): "generic.text.color", (sqltypes.String, True): "generic.person.password", } diff --git a/tests/examples/src.dump b/tests/examples/src.dump index dabbab9..7b15e76 100644 --- a/tests/examples/src.dump +++ b/tests/examples/src.dump @@ -177,6 +177,16 @@ CREATE TABLE public.unique_constraint_test2 ( ALTER TABLE public.unique_constraint_test2 OWNER TO postgres; +-- +-- Name: data_type_test; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE public.data_type_test ( + myuuid UUID NOT NULL +); + +ALTER TABLE public.data_type_test OWNER TO postgres; + -- -- Data for Name: concept; Type: TABLE DATA; Schema: public; Owner: postgres -- diff --git a/tests/test_make.py b/tests/test_make.py index 9ddf4ca..68cbf6f 100644 --- a/tests/test_make.py +++ b/tests/test_make.py @@ -11,6 +11,7 @@ from pydantic.tools import parse_obj_as from sqlalchemy import BigInteger, Column, String from sqlalchemy.dialects.mysql.types import INTEGER +from sqlalchemy.dialects.postgresql import UUID from sqlsynthgen.make import ( _get_provider_for_column, @@ -174,6 +175,17 @@ def test_get_provider_for_column(self) -> None: ["100"], ) + # UUID + ( + _, + generator_function, + __, + ) = _get_provider_for_column(Column("myuuid", UUID)) + self.assertEqual( + generator_function, + "generic.cryptographic.uuid", + ) + class TestMakeTables(SSGTestCase): """Test the make_tables function.""" From 1cd0cd0a92a76ae100f114247fe4ff2cd63af2a0 Mon Sep 17 00:00:00 2001 From: Iain-S <25081046+Iain-S@users.noreply.github.com> Date: Mon, 10 Jul 2023 12:28:29 +0100 Subject: [PATCH 2/2] Error if psql...src.dump fails --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8fe7a8f..2cdbb24 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -50,7 +50,7 @@ jobs: - name: Create src database shell: bash run: | - PGPASSWORD=password psql --host=localhost --username=postgres --file=tests/examples/src.dump + PGPASSWORD=password psql --host=localhost --username=postgres --set="ON_ERROR_STOP=1" --file=tests/examples/src.dump - name: Run Unit Tests shell: bash run: |