tenant.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import uuid
  2. from django.db import models
  3. class Tenant(models.Model):
  4. name = models.CharField(max_length=10, default="", blank=True)
  5. class Token(models.Model):
  6. pk = models.CompositePrimaryKey("tenant_id", "id")
  7. tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE, related_name="tokens")
  8. id = models.SmallIntegerField()
  9. secret = models.CharField(max_length=10, default="", blank=True)
  10. class BaseModel(models.Model):
  11. pk = models.CompositePrimaryKey("tenant_id", "id")
  12. tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE)
  13. id = models.SmallIntegerField(unique=True)
  14. class Meta:
  15. abstract = True
  16. class User(BaseModel):
  17. email = models.EmailField(unique=True)
  18. class Comment(models.Model):
  19. pk = models.CompositePrimaryKey("tenant", "id")
  20. tenant = models.ForeignKey(
  21. Tenant,
  22. on_delete=models.CASCADE,
  23. related_name="comments",
  24. )
  25. id = models.SmallIntegerField(unique=True, db_column="comment_id")
  26. user_id = models.SmallIntegerField()
  27. user = models.ForeignObject(
  28. User,
  29. on_delete=models.CASCADE,
  30. from_fields=("tenant_id", "user_id"),
  31. to_fields=("tenant_id", "id"),
  32. related_name="comments",
  33. )
  34. text = models.TextField(default="", blank=True)
  35. integer = models.IntegerField(default=0)
  36. class Post(models.Model):
  37. pk = models.CompositePrimaryKey("tenant_id", "id")
  38. tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE, default=1)
  39. id = models.UUIDField(default=uuid.uuid4)
  40. class TimeStamped(models.Model):
  41. pk = models.CompositePrimaryKey("id", "created")
  42. id = models.SmallIntegerField(unique=True)
  43. created = models.DateTimeField(auto_now_add=True)
  44. text = models.TextField(default="", blank=True)