Skip to content

Add support for filters across /databases and /applications APIs #6040

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: next
Choose a base branch
from

Conversation

LeOndaz
Copy link

@LeOndaz LeOndaz commented Jun 22, 2025

Changes

  • Added project_uuid and environment_name query parameters to the /applications endpoint.
  • Added project_uuid and environment_name query parameters to the /databases endpoint.
  • Improved performance of both endpoints, previously they have N+1

We can't add project_name since the project names are not unique.

Test cases covered are here if you want to test the PR, make sure to install jq for readability

Databases endpoint

token="Eg7s411RVHdPQGIoxtCqR6z5DnBtKsqeRGmQ9zvHdf0d3401"
p1="pgcgkw4swogwcwcokssk888s"   # My first project
p2="xgo8s8skgok0c0co04kocogk"   # test
base="http://127.0.0.1:8000/api/v1/databases"

################################################################################
# 1. All databases – no filters
curl -s -H "Authorization: Bearer $token" $base | jq

# 2. Only project_uuid = My first project
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p1" \
  $base | jq

# 3. Only project_uuid = test
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p2" \
  $base | jq

# 4. test + production   (should be empty)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p2" \
  --data-urlencode "environment_name=production" \
  $base | jq

# 5. test + development  (non-existent env)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p2" \
  --data-urlencode "environment_name=development" \
  $base | jq

# 6. My first project + production   (returns Local PostgreSQL)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p1" \
  --data-urlencode "environment_name=production" \
  $base | jq

# 7. My first project + development  (empty)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p1" \
  --data-urlencode "environment_name=development" \
  $base | jq

# 8. Only environment_name = production  (should 400 or fallback)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "environment_name=production" \
  $base | jq

# 9. Explicit empty project_uuid
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=" \
  $base | jq

# 10. Invalid project_uuid
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=invaliduuid123" \
  $base | jq

Applications endpoint

# constants
token="Eg7s411RVHdPQGIoxtCqR6z5DnBtKsqeRGmQ9zvHdf0d3401"
p1="pgcgkw4swogwcwcokssk888s"   # My first project
p2="xgo8s8skgok0c0co04kocogk"   # test
base="http://127.0.0.1:8000/api/v1/applications"

################################################################################
# 1. All applications – no filters
curl -s -H "Authorization: Bearer $token" $base | jq

# 2. Only project_uuid = My first project
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p1" \
  $base | jq

# 3. Only project_uuid = test
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p2" \
  $base | jq

# 4. test + production (should be empty)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p2" \
  --data-urlencode "environment_name=production" \
  $base | jq

# 5. test + development (non-existent env)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p2" \
  --data-urlencode "environment_name=development" \
  $base | jq

# 6. My first project + production (returns its apps)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p1" \
  --data-urlencode "environment_name=production" \
  $base | jq

# 7. My first project + development (empty)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=$p1" \
  --data-urlencode "environment_name=development" \
  $base | jq

# 8. Only environment_name = production (should 400 or fallback)
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "environment_name=production" \
  $base | jq

# 9. Explicit empty project_uuid
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=" \
  $base | jq

# 10. Invalid project_uuid
curl -s -G -H "Authorization: Bearer $token" \
  --data-urlencode "project_uuid=invaliduuid123" \
  $base | jq

@LeOndaz LeOndaz changed the title Feature/support filters across api Feature/support filters across /databases and /applications APIs Jun 22, 2025
@LeOndaz LeOndaz changed the title Feature/support filters across /databases and /applications APIs Add support for filters across /databases and /applications APIs Jun 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant