@@ -2967,3 +2967,76 @@ class SimpleOnetoone(SQLModel, table=True):
29672967 back_populates='simple_onetoone')
29682968 """ ,
29692969 )
2970+
2971+ def test_constraints_with_default_names (self , generator : CodeGenerator ) -> None :
2972+ generator .metadata .naming_convention = {
2973+ "uq" : "UNIQUE_%(table_name)s_%(column_0_N_name)s" ,
2974+ "ck" : "CHECK_%(table_name)s" ,
2975+ "fk" : "FOREIGN_%(table_name)s_%(column_0_key)s_%(referred_table_name)s" ,
2976+ "pk" : "PRIMARY_%(table_name)s_%(column_0N_name)s" ,
2977+ }
2978+
2979+ Table (
2980+ "items" ,
2981+ generator .metadata ,
2982+ Column ("id" , INTEGER ),
2983+ Column ("name" , VARCHAR ),
2984+ Column ("container_id" , INTEGER ),
2985+ PrimaryKeyConstraint ("id" , "name" , name = "PRIMARY_items_idname" ),
2986+ UniqueConstraint ("id" , name = "UNIQUE_items_id" ),
2987+ ForeignKeyConstraint (
2988+ ["container_id" ],
2989+ ["containers.id" ],
2990+ name = "FOREIGN_items_container_id_containers" ,
2991+ ),
2992+ )
2993+ Table (
2994+ "containers" ,
2995+ generator .metadata ,
2996+ Column ("id" , INTEGER ),
2997+ Column ("name" , VARCHAR ),
2998+ PrimaryKeyConstraint ("id" , name = "PRIMARY_containers_id" ),
2999+ UniqueConstraint ("id" , "name" , name = "UNIQUE_containers_id_name" ),
3000+ CheckConstraint ("id > 0" , name = "CHECK_containers" ),
3001+ )
3002+
3003+ validate_code (
3004+ generator .generate (),
3005+ """\
3006+ from typing import List, Optional
3007+
3008+ from sqlalchemy import CheckConstraint, Column, ForeignKey, Integer, \
3009+ String, UniqueConstraint
3010+ from sqlmodel import Field, Relationship, SQLModel
3011+
3012+ SQLModel.metadata.naming_convention = {'ck': 'CHECK_%(table_name)s',
3013+ 'fk': 'FOREIGN_%(table_name)s_%(column_0_key)s_%(referred_table_name)s',
3014+ 'pk': 'PRIMARY_%(table_name)s_%(column_0N_name)s',
3015+ 'uq': 'UNIQUE_%(table_name)s_%(column_0_N_name)s'}
3016+
3017+
3018+ class Containers(SQLModel, table=True):
3019+ __table_args__ = (
3020+ CheckConstraint('id > 0'),
3021+ UniqueConstraint('id', 'name')
3022+ )
3023+
3024+ id: Optional[int] = Field(default=None, sa_column=Column(\
3025+ 'id', Integer, primary_key=True))
3026+ name: Optional[str] = Field(default=None, sa_column=Column(\
3027+ 'name', String))
3028+
3029+ items: List['Items'] = Relationship(back_populates='container')
3030+
3031+
3032+ class Items(SQLModel, table=True):
3033+ id: Optional[int] = Field(default=None, sa_column=Column(\
3034+ 'id', Integer, primary_key=True, nullable=False, unique=True))
3035+ name: Optional[str] = Field(default=None, sa_column=Column(\
3036+ 'name', String, primary_key=True, nullable=False))
3037+ container_id: Optional[int] = Field(default=None, sa_column=Column(\
3038+ 'container_id', ForeignKey('containers.id')))
3039+
3040+ container: Optional['Containers'] = Relationship(back_populates='items')
3041+ """ ,
3042+ )
0 commit comments