Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions docs/doc/common-pitfalls.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Common Pitfalls

This guide covers common mistakes new Ryx users make and how to fix them.

## 1. Using `select_related` when you need `prefetch_related`

**Problem:** Using `select_related` for many-to-many or reverse foreign key relationships causes errors.

**Solution:** Use `prefetch_related` for many-to-many and reverse foreign key relationships. Use `select_related` only for forward foreign key and one-to-one relationships.

```python
# Wrong
users = await User.objects.select_related("posts").all()

# Correct
users = await User.objects.prefetch_related("posts").all()
```

## 2. Forgetting to use async context managers

**Problem:** Opening database connections without async context managers causes connection leaks.

**Solution:** Always use `async with` when working with database connections.

```python
# Wrong
db = Database()
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ryx doesn't have Database class...
At least make sure you read the docs or your AI has the right context before generating contents for contributions to avoid hallucination ...

await db.connect()

# Correct
async with Database() as db:
await db.query(...)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please read the docs...

```

## 3. Not awaiting async queries

**Problem:** Forgetting `await` on async queries returns a coroutine object instead of results.

**Solution:** Always use `await` with Ryx query methods.

```python
# Wrong
users = User.objects.all()

# Correct
users = await User.objects.all()
```