# -*- 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 {{ table_name|snake_to_pascal_case }}Model(CreatorMixin): """ {{ function_name }} """ __tablename__ = '{{ table_name }}' __table_args__ = {'comment': '{{ function_name }}'} {% for column in columns %} {{ column.column_name }}: Mapped[Optional[{{ column.python_type }}]] = mapped_column({{ column.column_type|get_sqlalchemy_type }}, nullable=True, comment='{{ column.column_comment }}') {% endfor %} def __repr__(self): return f"<{{ table_name|snake_to_pascal_case }}Model(id={self.id})>" {% if sub_table %} class {{ sub_class_name }}(Base): """ {{ sub_table.function_name }}่กจ """ __tablename__ = '{{ sub_table_name }}' __table_args__ = {'comment': '{{ sub_table.function_name }}'} {% for column in sub_table.columns %} {{ column.column_name }}: Mapped[Optional[{{ column.python_type }}]] = mapped_column({{ column.column_type | get_sqlalchemy_type }}, {% if column.column_name == sub_table_fk_name %}ForeignKey('{{ table_name }}.id'), {% endif %}{% if column.pk %}primary_key=True, {% endif %}nullable=True, comment='{{ column.column_comment }}') {% endfor %} {{ table_name }} = relationship('{{ table_name|snake_to_pascal_case }}Model', back_populates='{{ sub_table.table_name }}_list') {{ table_name|snake_to_pascal_case }}Model.{{ sub_table.table_name }}_list = relationship('{{ sub_class_name }}', back_populates='{{ table_name }}') {% endif %}