Add Splitwise clone backend

This commit is contained in:
2026-05-02 06:52:35 +02:00
parent 4b33357ebf
commit 424d187080

67
app/models.py Normal file
View File

@@ -0,0 +1,67 @@
from tortoise import Model, fields
class User(Model):
id = fields.UUIDField(pk=True)
sub = fields.CharField(max_length=255, unique=True)
email = fields.CharField(max_length=255, null=True)
name = fields.CharField(max_length=255, null=True)
created_at = fields.DatetimeField(auto_now_add=True)
class Meta:
table = "users"
class ExpenseReport(Model):
id = fields.UUIDField(pk=True)
title = fields.CharField(max_length=512)
creator: fields.ForeignKeyRelation["User"] = fields.ForeignKeyField(
"models.User", related_name="created_reports"
)
participants: fields.ReverseRelation["ExpenseParticipant"]
items: fields.ReverseRelation["ExpenseItem"]
created_at = fields.DatetimeField(auto_now_add=True)
class Meta:
table = "expense_reports"
class ExpenseParticipant(Model):
id = fields.UUIDField(pk=True)
report: fields.ForeignKeyRelation["ExpenseReport"] = fields.ForeignKeyField(
"models.ExpenseReport", related_name="participants"
)
user: fields.ForeignKeyRelation["User"] = fields.ForeignKeyField(
"models.User", related_name="report_participations"
)
class Meta:
table = "expense_participants"
unique_together = (("report", "user"),)
class ExpenseItem(Model):
id = fields.UUIDField(pk=True)
report: fields.ForeignKeyRelation["ExpenseReport"] = fields.ForeignKeyField(
"models.ExpenseReport", related_name="items"
)
description = fields.CharField(max_length=1024)
amount = fields.DecimalField(max_digits=12, decimal_places=2)
shares: fields.ReverseRelation["ExpenseShare"]
class Meta:
table = "expense_items"
class ExpenseShare(Model):
id = fields.UUIDField(pk=True)
item: fields.ForeignKeyRelation["ExpenseItem"] = fields.ForeignKeyField(
"models.ExpenseItem", related_name="shares"
)
user: fields.ForeignKeyRelation["User"] = fields.ForeignKeyField(
"models.User", related_name="expense_shares"
)
percentage = fields.FloatField()
class Meta:
table = "expense_shares"