|
1 | 1 | #!/usr/bin/env python3 |
2 | 2 | # -*- coding: utf-8 -*- |
| 3 | +{% set DECIMAL_TYPES = ['DECIMAL', 'NUMERIC', 'MONEY', 'NUMMULTIRANGE', 'NUMRANGE'] %} |
| 4 | +{% set MYSQL_TYPES = ['BIT', 'ENUM', 'LONGBLOB', 'LONGTEXT', 'MEDIUMBLOB', 'MEDIUMINT', 'MEDIUMTEXT', 'SET', |
| 5 | +'TINYBLOB', 'TINYINT', 'TINYTEXT', 'YEAR'] %} |
| 6 | +{% set POSTGRESQL_TYPES = ['ARRAY', 'BIT', 'BYTEA', 'CIDR', 'CITEXT', 'DATEMULTIRANGE', 'DATERANGE', 'DOMAIN', 'ENUM', |
| 7 | +'HSTORE', 'INET', 'INT4MULTIRANGE', 'INT4RANGE', 'INT8MULTIRANGE', 'INT8RANGE', 'INTERVAL', 'JSONB', 'JSONPATH', |
| 8 | +'MACADDR', 'MACADDR8', 'MONEY', 'NUMMULTIRANGE', 'NUMRANGE', 'OID', 'REGCLASS', 'REGCONFIG', 'TSMULTIRANGE', 'TSQUERY', |
| 9 | +'TSRANGE', 'TSTZMULTIRANGE', 'TSTZRANGE', 'TSVECTOR'] %} |
3 | 10 | {% if default_datetime_column %} |
4 | 11 | from datetime import datetime |
5 | | - |
6 | 12 | {% endif %} |
7 | | -{% if 'Decimal' in models %} |
| 13 | +{% if model_types|select('in', DECIMAL_TYPES)|first %} |
8 | 14 | from decimal import Decimal |
9 | | - |
10 | 15 | {% endif %} |
11 | | -{% if 'Uuid' or 'UUID' in models %} |
| 16 | +{% if 'Uuid' in model_types or 'UUID' in model_types %} |
12 | 17 | from uuid import UUID |
13 | 18 | {% endif %} |
14 | 19 |
|
@@ -37,14 +42,9 @@ class {{ class_name }}({% if default_datetime_column %}Base{% else %}DataClassBa |
37 | 42 | {%- endif %} = mapped_column( |
38 | 43 | {%- if model.type in ['NVARCHAR', 'String', 'Unicode', 'VARCHAR'] -%} |
39 | 44 | sa.String({{ model.length }}) |
40 | | - {%- elif database_type == 'mysql' and model.type in ['BIT', 'ENUM', 'LONGBLOB', 'LONGTEXT', 'MEDIUMBLOB', |
41 | | - 'MEDIUMINT', 'MEDIUMTEXT', 'SET', 'TINYBLOB', 'TINYINT', 'TINYTEXT', 'YEAR'] -%} |
| 45 | + {%- elif database_type == 'mysql' and model.type in MYSQL_TYPES -%} |
42 | 46 | mysql.{{ model.type }}() |
43 | | - {%- elif database_type == 'postgresql' and model.type in [ |
44 | | - 'ARRAY', 'BIT', 'BYTEA', 'CIDR', 'CITEXT', 'DATEMULTIRANGE', 'DATERANGE', 'DOMAIN', 'ENUM', 'HSTORE', 'INET', |
45 | | - 'INT4MULTIRANGE', 'INT4RANGE', 'INT8MULTIRANGE', 'INT8RANGE', 'INTERVAL', 'JSONB', 'JSONPATH', 'MACADDR', |
46 | | - 'MACADDR8', 'MONEY', 'NUMMULTIRANGE', 'NUMRANGE', 'OID', 'REGCLASS', 'REGCONFIG', 'TSMULTIRANGE', 'TSQUERY', |
47 | | - 'TSRANGE', 'TSTZMULTIRANGE', 'TSTZRANGE', 'TSVECTOR'] -%} |
| 47 | + {%- elif database_type == 'postgresql' and model.type in POSTGRESQL_TYPES -%} |
48 | 48 | {%- else -%} |
49 | 49 | sa.{{ model.type }}() |
50 | 50 | {%- endif -%}, default= |
|
0 commit comments