# -*- coding: utf-8 -*- from datetime import datetime from typing import Optional from sqlalchemy import String, Integer, Text, DateTime from sqlalchemy.orm import Mapped, mapped_column from app.core.base_model import CreatorMixin class {{ tableName|snake_to_pascal_case }}Model(CreatorMixin): """ {{ functionName }} """ __tablename__ = '{{ tableName }}' __table_args__ = {'comment': '{{ functionName }}'} {% for column in columns %} {{ column.columnName }}: Mapped[Optional[{{ column.pythonType }}]] = mapped_column({{ column.columnType|get_sqlalchemy_type }}, nullable=True, comment='{{ column.columnComment }}') {% endfor %} def __repr__(self): return f"<{{ tableName|snake_to_pascal_case }}Model(id={self.id})>" {% if subTable %} class {{ subClassName }}(Base): """ {{ subTable.function_name }}่กจ """ __tablename__ = '{{ subTableName }}' __table_args__ = {'comment': '{{ subTable.function_name }}'} {% for column in subTable.columns %} {{ column.column_name }}: Mapped[Optional[{{ column.python_type }}]] = mapped_column({{ column.column_type | get_sqlalchemy_type }}, {% if column.column_name == subTableFkName %}ForeignKey('{{ tableName }}.id'), {% endif %}{% if column.pk %}primary_key=True, {% endif %}nullable=True, comment='{{ column.column_comment }}') {% endfor %} {{ tableName }} = relationship('{{ tableName|snake_to_pascal_case }}Model', back_populates='{{ subTable.table_name }}_list') {{ tableName|snake_to_pascal_case }}Model.{{ subTable.table_name }}_list = relationship('{{ subClassName }}', back_populates='{{ tableName }}') {% endif %}