teilchensammler-cli/src/teilchensammler_cli/models.py

39 lines
963 B
Python
Raw Normal View History

from typing import final
from tortoise import Model, fields
@final
class Teilchen(Model):
name = fields.TextField()
description = fields.TextField()
number = fields.IntField() # validate values >= 0
created_at = fields.DatetimeField(auto_now_add=True)
modified_at = fields.DatetimeField(auto_now=True)
tags = fields.ManyToManyField(
"models.Tag",
through="models.TeilchenTag",
related_name="teilchen",
forward_key="tag_id",
backward_key="teilchen_id",
)
@final
class Tag(Model):
name = fields.CharField(max_length=20)
created_at = fields.DatetimeField(auto_now_add=True)
modified_at = fields.DatetimeField(auto_now=True)
@final
class TeilchenTag(Model):
teilchen: fields.ForeignKeyRelation[Teilchen] = fields.ForeignKeyField(
"models.Teilchen"
)
tag: fields.ForeignKeyRelation[Tag] = fields.ForeignKeyField("models.Tag")
weight = fields.IntField()