@@ -2967,3 +2967,76 @@ class SimpleOnetoone(SQLModel, table=True):
2967
2967
back_populates='simple_onetoone')
2968
2968
""" ,
2969
2969
)
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