| 40 | |
| 41 | |
| 42 | async def run(): |
| 43 | await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]}) |
| 44 | await Tortoise.generate_schemas() |
| 45 | tournament = await Tournament.create(name="New Tournament", desc="great") |
| 46 | await tournament.save() |
| 47 | await Tournament.create(name="Second tournament") |
| 48 | await Tournament.create(name=" final tournament ") |
| 49 | await Event(name="Without participants", tournament_id=tournament.id).save() |
| 50 | event = Event(name="Test", tournament_id=tournament.id) |
| 51 | await event.save() |
| 52 | participants = [] |
| 53 | for i in range(2): |
| 54 | team = Team(name=f"Team {(i + 1)}") |
| 55 | await team.save() |
| 56 | participants.append(team) |
| 57 | await event.participants.add(participants[0], participants[1]) |
| 58 | await event.participants.add(participants[0], participants[1]) |
| 59 | |
| 60 | print(await Tournament.all().annotate(events_count=Count("events")).filter(events_count__gte=1)) |
| 61 | print( |
| 62 | await Tournament.all() |
| 63 | .annotate(events_count_with_filter=Count("events", _filter=Q(name="New Tournament"))) |
| 64 | .filter(events_count_with_filter__gte=1) |
| 65 | ) |
| 66 | |
| 67 | print(await Event.filter(id=event.id).first().annotate(lowest_team_id=Min("participants__id"))) |
| 68 | |
| 69 | print(await Tournament.all().annotate(events_count=Count("events")).order_by("events_count")) |
| 70 | |
| 71 | print(await Event.all().annotate(tournament_test_id=Sum("tournament__id")).first()) |
| 72 | |
| 73 | print( |
| 74 | await Tournament.annotate(clean_description=Coalesce("desc", "")).filter( |
| 75 | clean_description="" |
| 76 | ) |
| 77 | ) |
| 78 | |
| 79 | print( |
| 80 | await Tournament.annotate(trimmed_name=Trim("name")).filter(trimmed_name="final tournament") |
| 81 | ) |
| 82 | |
| 83 | print( |
| 84 | await Tournament.annotate(name_len=Length("name")).filter( |
| 85 | name_len__gt=len("New Tournament") |
| 86 | ) |
| 87 | ) |
| 88 | |
| 89 | print(await Tournament.annotate(name_lo=Lower("name")).filter(name_lo="new tournament")) |
| 90 | print(await Tournament.annotate(name_lo=Upper("name")).filter(name_lo="NEW TOURNAMENT")) |
| 91 | |
| 92 | |
| 93 | if __name__ == "__main__": |