1+ from typing import Union
2+
13from pydbml .classes import Column , Enum , Expression
24from pydbml .renderer .sql .default .renderer import DefaultSQLRenderer
35from .utils import comment_to_sql
46from .enum import get_full_name_for_sql as get_full_name_for_sql_enum
57
8+ def default_to_str (val : Union [Expression , str , int , float , bool ]) -> str :
9+ if isinstance (val , Expression ):
10+ return DefaultSQLRenderer .render (val )
11+ elif isinstance (val , str ):
12+ val = val .replace ("'" , "''" )
13+ return f"'{ val } '"
14+ else :
15+ return str (val )
616
717@DefaultSQLRenderer .renderer_for (Column )
818def render_column (model : Column ) -> str :
@@ -28,11 +38,7 @@ def render_column(model: Column) -> str:
2838 if model .not_null :
2939 components .append ('NOT NULL' )
3040 if model .default is not None :
31- if isinstance (model .default , Expression ):
32- default = DefaultSQLRenderer .render (model .default )
33- else :
34- default = model .default # type: ignore
35- components .append (f'DEFAULT { default } ' )
41+ components .append (f'DEFAULT { default_to_str (model .default )} ' )
3642
3743 result = comment_to_sql (model .comment ) if model .comment else ''
3844 result += ' ' .join (components )
0 commit comments