@@ -69,6 +69,10 @@ def jsonb_column(name: str, aliases: list[str] | None = None) -> Any:
6969"""
7070
7171
72+ type StatusField = Annotated [StatusEnum , StatusEnumValidator , EnumSerializer ]
73+ type KindField = Annotated [ManifestKind , ManifestKindEnumValidator , EnumSerializer ]
74+
75+
7276class BaseSQLModel (SQLModel ):
7377 __table_args__ = {"schema" : config .db .table_schema }
7478
@@ -80,7 +84,7 @@ class CampaignBase(BaseSQLModel):
8084 name : str
8185 namespace : UUID
8286 owner : str | None = Field (default = None )
83- status : Annotated [ StatusEnum , StatusEnumValidator , EnumSerializer ] | None = Field (
87+ status : StatusField | None = Field (
8488 default = StatusEnum .waiting ,
8589 sa_column = Column ("status" , Enum (StatusEnum , length = 20 , native_enum = False , create_constraint = False )),
8690 )
@@ -115,18 +119,27 @@ class Campaign(CampaignModel, table=True):
115119 machine : UUID | None
116120
117121
122+ class CampaignUpdate (SQLModel ):
123+ """Model representing updatable fields for a PATCH operation on a Campaign
124+ using RFC7396.
125+ """
126+
127+ owner : str | None = None
128+ status : StatusField | None = None
129+
130+
118131class NodeBase (BaseSQLModel ):
119132 """nodes_v2 db table"""
120133
121134 id : UUID = Field (primary_key = True )
122135 name : str
123136 namespace : UUID
124137 version : int
125- kind : Annotated [ ManifestKind , ManifestKindEnumValidator , EnumSerializer ] = Field (
138+ kind : KindField = Field (
126139 default = ManifestKind .other ,
127140 sa_column = Column ("kind" , Enum (ManifestKind , length = 20 , native_enum = False , create_constraint = False )),
128141 )
129- status : Annotated [ StatusEnum , StatusEnumValidator , EnumSerializer ] | None = Field (
142+ status : StatusField | None = Field (
130143 default = StatusEnum .waiting ,
131144 sa_column = Column ("status" , Enum (StatusEnum , length = 20 , native_enum = False , create_constraint = False )),
132145 )
@@ -209,7 +222,7 @@ class ManifestBase(BaseSQLModel):
209222 name : str
210223 version : int
211224 namespace : UUID
212- kind : Annotated [ ManifestKind , EnumSerializer ] = Field (
225+ kind : KindField = Field (
213226 default = ManifestKind .other ,
214227 sa_column = Column ("kind" , Enum (ManifestKind , length = 20 , native_enum = False , create_constraint = False )),
215228 )
@@ -270,8 +283,16 @@ class ActivityLogBase(BaseSQLModel):
270283 namespace : UUID
271284 node : UUID
272285 operator : str
273- from_status : Annotated [StatusEnum , EnumSerializer ]
274- to_status : Annotated [StatusEnum , EnumSerializer ]
286+ to_status : StatusField = Field (
287+ sa_column = Column (
288+ "to_status" , Enum (StatusEnum , length = 20 , native_enum = False , create_constraint = False )
289+ ),
290+ )
291+ from_status : StatusField = Field (
292+ sa_column = Column (
293+ "from_status" , Enum (StatusEnum , length = 20 , native_enum = False , create_constraint = False )
294+ ),
295+ )
275296 detail : dict = jsonb_column ("detail" )
276297
277298
0 commit comments