diff --git a/src/teilchensammler_cli/models.py b/src/teilchensammler_cli/models.py index 61e7a54..dc54235 100644 --- a/src/teilchensammler_cli/models.py +++ b/src/teilchensammler_cli/models.py @@ -1,17 +1,31 @@ from datetime import datetime from tortoise import Model, fields +from tortoise.validators import MinValueValidator class TimestampMixin: - created_at: fields.Field[datetime] = fields.DatetimeField(auto_now_add=True) - modified_at: fields.Field[datetime] = fields.DatetimeField(auto_now=True) + created_at: fields.Field[datetime] = fields.DatetimeField( + auto_now_add=True, + ) + modified_at: fields.Field[datetime] = fields.DatetimeField( + auto_now=True, + ) class Teilchen(TimestampMixin, Model): - name: fields.Field[str] = fields.TextField() - description: fields.Field[str] = fields.TextField() - number: fields.Field[int] = fields.IntField() # TODO: validate values >= 0 + name: fields.Field[str] = fields.TextField( + null=False, + ) + description: fields.Field[str] = fields.TextField( + null=False, + ) + number: fields.Field[int] = fields.IntField( + null=False, + validators=[ + MinValueValidator(0), + ], + ) tags: fields.ManyToManyRelation["Tag"] = fields.ManyToManyField( "models.Tag", @@ -23,12 +37,16 @@ class Teilchen(TimestampMixin, Model): class Tag(TimestampMixin, Model): - name: fields.Field[str] = fields.CharField(max_length=20) + name: fields.Field[str] = fields.CharField( + null=False, + max_length=20, + ) class TeilchenTag(Model): teilchen: fields.ForeignKeyRelation[Teilchen] = fields.ForeignKeyField( - "models.Teilchen" + "models.Teilchen", + ) + tag: fields.ForeignKeyRelation[Tag] = fields.ForeignKeyField( + "models.Tag", ) - tag: fields.ForeignKeyRelation[Tag] = fields.ForeignKeyField("models.Tag") - weight: fields.Field[int] = fields.IntField() # range? percentage?