Skip to content

merge dev into stage#108

Merged
aditya-arcot merged 28 commits intostagefrom
dev
Mar 26, 2026
Merged

merge dev into stage#108
aditya-arcot merged 28 commits intostagefrom
dev

Conversation

@aditya-arcot
Copy link
Copy Markdown
Member

No description provided.

Copilot AI review requested due to automatic review settings March 26, 2026 14:38
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Merges dev into stage, bringing in the latest backend API refactors (dependency naming, admin endpoint rework), Meilisearch-backed search + infra wiring, expanded schema validations, and corresponding client + test updates.

Changes:

  • Add Meilisearch configuration, dependencies, API endpoints, and integration tests (service + API), plus infra docker-compose wiring.
  • Refactor server DB dependency/fixture naming (get_db/sessionget_db_session/db_session) and extract shared query/serializer utilities.
  • Update client to match API surface changes (admin/access-request/user services, route paths) and refactor header actions.

Reviewed changes

Copilot reviewed 182 out of 200 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
server/pyproject.toml Add deps (httpx, meilisearch sdk, deptry) + deptry config
server/makefile Add deptry target; update phony targets
server/conftest.py Register Meilisearch fixtures
server/app/tests/services/workout_exercise/utilities.py Rename session arg to db_session
server/app/tests/services/workout_exercise/test_get_next_workout_exercise_position.py Use db_session fixture/name
server/app/tests/services/workout_exercise/test_delete_workout_exercise.py Use db_session + updated service param names
server/app/tests/services/workout/utilities.py Rename session arg to db_session
server/app/tests/services/workout/test_query_workouts.py Use db_session fixture/name
server/app/tests/services/workout/test_get_workouts.py Use db_session fixture/name
server/app/tests/services/workout/test_get_workout.py Use db_session fixture/name
server/app/tests/services/workout/test_get_owned_workout.py Removed; moved under utilities queries tests (deleted)
server/app/tests/services/workout/test_delete_workout.py Use db_session fixture/name
server/app/tests/services/workout/test_create_workout.py Use db_session fixture/name
server/app/tests/services/utilities.py Point serializer import to shared utilities; db_session rename
server/app/tests/services/user/test_get_users_ordered_by_username.py Use db_session fixture/name
server/app/tests/services/user/test_get_users.py Import get_users from user service; db_session rename
server/app/tests/services/user/test_get_user_by_username.py Use db_session fixture/name
server/app/tests/services/user/test_get_user_by_identifier.py Use db_session fixture/name
server/app/tests/services/user/test_get_user_by_email.py Use db_session fixture/name
server/app/tests/services/user/test_get_admin_users.py Use db_session fixture/name
server/app/tests/services/token/test_get_tokens.py Use db_session fixture/name
server/app/tests/services/token/test_expire_tokens.py Use db_session fixture/name
server/app/tests/services/set/utilities.py Rename session arg to db_session
server/app/tests/services/set/test_get_next_set_number.py Use db_session fixture/name
server/app/tests/services/set/test_delete_set.py Use db_session fixture/name
server/app/tests/services/search/utilities.py Add Meilisearch task wait helper (new)
server/app/tests/services/search/test_search_muscle_groups.py Add service-level muscle-group search test (new)
server/app/tests/services/search/test_search_exercises.py Add service-level exercise search tests (new)
server/app/tests/services/search/test_reindex.py Add reindex orchestrator test (new)
server/app/tests/services/search/test_index_muscle_groups.py Add indexing test for muscle groups (new)
server/app/tests/services/search/test_index_exercises.py Add indexing test for exercises (new)
server/app/tests/services/search/test_get_task.py Add get_task service test (new)
server/app/tests/services/search/init.py Package init (new/empty)
server/app/tests/services/muscle_group/utilities.py Add muscle-group test utilities (new)
server/app/tests/services/muscle_group/test_get_muscle_groups_ordered_by_name.py Use db_session fixture/name + formatting
server/app/tests/services/muscle_group/test_get_muscle_groups_by_ids.py Avoid hard-coded IDs; use lookup utility
server/app/tests/services/muscle_group/init.py Package init (new/empty)
server/app/tests/services/feedback/test_create_feedback_service.py Rename db param to db_session and update queries
server/app/tests/services/exercise/utilities.py Rename session arg; remove duplicated get_muscle_group_id
server/app/tests/services/exercise/test_get_owned_exercise.py Use db_session fixture/name
server/app/tests/services/exercise/test_get_exercises.py Use db_session fixture/name
server/app/tests/services/exercise/test_get_exercise.py Use db_session fixture/name
server/app/tests/services/exercise/test_delete_exercise.py Use shared get_muscle_group_id; db_session rename
server/app/tests/services/exercise/test_create_exercise.py Switch query_exercises import; add IntegrityError test
server/app/tests/services/auth/test_reset_password.py Use db_session + renamed service args
server/app/tests/services/auth/test_request_password_reset.py Use db_session + renamed service args
server/app/tests/services/auth/test_refresh.py Use db_session + renamed service args
server/app/tests/services/auth/test_login.py Use db_session + renamed service args
server/app/tests/services/access_request/test_get_latest_access_request_by_email.py Use db_session fixture/name
server/app/tests/services/access_request/test_get_access_requests.py Import get_access_requests from access_request service
server/app/tests/services/access_request/test_get_access_request_by_id.py Test private accessor; db_session rename
server/app/tests/services/access_request/init.py Package init (new/empty)
server/app/tests/services/_utilities/serializers/test_to_workout_public.py Update serializer import to shared utilities
server/app/tests/services/_utilities/serializers/test_to_workout_exercise_public.py Update serializer import to shared utilities
server/app/tests/services/_utilities/serializers/test_to_workout_base.py Update serializer import to shared utilities
server/app/tests/services/_utilities/serializers/test_to_user_public.py Update serializer import to shared utilities
server/app/tests/services/_utilities/serializers/test_to_set_public.py Update serializer import to shared utilities
server/app/tests/services/_utilities/serializers/test_to_muscle_group_public.py Add serializer test for muscle groups (new)
server/app/tests/services/_utilities/serializers/test_to_exercise_public.py Update serializer import to shared utilities
server/app/tests/services/_utilities/serializers/test_to_exercise_document.py Add exercise document serializer tests (new)
server/app/tests/services/_utilities/serializers/test_to_exercise_base.py Update serializer import to shared utilities
server/app/tests/services/_utilities/serializers/test_to_access_request_public.py Update serializer import to shared utilities
server/app/tests/services/_utilities/queries/test_query_sets.py Switch to shared query_sets + db_session naming
server/app/tests/services/_utilities/queries/test_query_exercises.py Switch to shared query_exercises + db_session naming
server/app/tests/services/_utilities/queries/test_get_owned_workout.py Move get_owned_workout tests to utilities queries (new)
server/app/tests/services/_utilities/queries/init.py Package init (new/empty)
server/app/tests/services/_utilities/init.py Package init (new/empty)
server/app/tests/models/schemas/test_workout.py Add schema validation test for null started_at (new)
server/app/tests/models/schemas/test_exercise.py Add schema validation tests for null fields (new)
server/app/tests/fixtures/settings.py Add Meilisearch settings into test Settings fixture
server/app/tests/fixtures/meilisearch.py Add Meilisearch testcontainer + ms_client fixture (new)
server/app/tests/fixtures/database.py Rename engine/connection/session fixtures to db_*
server/app/tests/fixtures/client.py Override get_db_session + get_ms_client dependencies
server/app/tests/core/utilities.py Rename helper arg to db_session
server/app/tests/core/security/utilities.py Rename helper arg to db_session
server/app/tests/core/security/test_get_token.py Use db_session and renamed kwargs
server/app/tests/core/security/test_expire_tokens.py Use db_session and renamed kwargs
server/app/tests/core/security/test_authenticate_user.py Use db_session and renamed kwargs
server/app/tests/core/dependencies/test_get_sessionmaker.py Removed in favor of get_db_sessionmaker tests (deleted)
server/app/tests/core/dependencies/test_get_ms_client.py Add dependency test for Meilisearch client (new)
server/app/tests/core/dependencies/test_get_db_sessionmaker.py Add tests for cached db sessionmaker (new)
server/app/tests/core/dependencies/test_get_db_session.py Add tests for get_db_session generator behavior (new)
server/app/tests/core/dependencies/test_get_db.py Removed in favor of get_db_session tests (deleted)
server/app/tests/core/dependencies/test_get_current_user.py Update param names to db_session
server/app/tests/core/dependencies/test_get_current_admin.py Update serializer import + db_session naming
server/app/tests/core/dependencies/test_build_ms_client.py Add caching test for build_ms_client (new)
server/app/tests/core/database/test_is_unique_violation.py Add tests for is_unique_violation helper (new)
server/app/tests/api/workout_exercise/utilities.py Rename session arg to db_session
server/app/tests/api/workout_exercise/test_delete_workout_exercise.py Update endpoint path + db_session naming
server/app/tests/api/workout_exercise/test_create_workout_exercise.py Update endpoint path + db_session naming
server/app/tests/api/workout/utilities.py Rename session arg to db_session
server/app/tests/api/workout/test_update_workout.py Use db_session naming; add 422 started_at null test
server/app/tests/api/workout/test_get_workouts.py Use db_session naming
server/app/tests/api/workout/test_get_workout.py Use db_session naming
server/app/tests/api/workout/test_delete_workout.py Use db_session naming
server/app/tests/api/utilities.py Rename helper args to db_session
server/app/tests/api/user/test_get_users.py Update endpoint path (/api/users) + rename test
server/app/tests/api/user/test_get_current_user.py Use db_session naming
server/app/tests/api/set/test_update_set.py Update nested endpoint path + db_session naming
server/app/tests/api/set/test_delete_set.py Update nested endpoint path + db_session naming
server/app/tests/api/set/test_create_set.py Update nested endpoint path + db_session naming
server/app/tests/api/search/utilities.py Add API helper for reindex (new)
server/app/tests/api/search/test_search_muscle_groups.py Add API search test coverage (new)
server/app/tests/api/search/test_search_exercises.py Add API test scaffold (new)
server/app/tests/api/search/test_reindex.py Add API reindex tests incl. admin gating (new)
server/app/tests/api/search/test_get_task.py Add API task status tests incl. admin gating (new)
server/app/tests/api/search/init.py Package init (new/empty)
server/app/tests/api/exercise/utilities.py Switch to shared query/serializer imports; db_session naming
server/app/tests/api/exercise/test_update_exercise.py Use db_session; add 422 null-field tests
server/app/tests/api/exercise/test_get_exercises.py Use db_session naming
server/app/tests/api/exercise/test_get_exercise.py Use db_session naming
server/app/tests/api/exercise/test_delete_exercise.py Use db_session naming
server/app/tests/api/exercise/test_create_exercise.py Use db_session naming
server/app/tests/api/auth/test_reset_password.py Use db_session naming
server/app/tests/api/auth/test_request_access.py Use db_session naming
server/app/tests/api/auth/test_register.py Use db_session naming
server/app/tests/api/access_request/test_update_access_request_status.py Update endpoint path + db_session naming
server/app/tests/api/access_request/test_get_access_requests.py Update endpoint path + db_session naming
server/app/tests/api/access_request/init.py Package init (new/empty)
server/app/services/workout.py Use shared get_owned_workout + shared serializers; db_session naming
server/app/services/utilities/serializers.py Centralize serializer helpers (new)
server/app/services/utilities/queries.py Centralize common query helpers (new)
server/app/services/user.py Add get_users; move serializer import; db_session naming
server/app/services/token.py Rename db param to db_session
server/app/services/muscle_group.py Use shared serializer; db_session naming
server/app/services/feedback.py Rename db param to db_session
server/app/services/admin.py Remove admin service module (deleted)
server/app/services/access_request.py Move admin access-request ops here; add status update logic
server/app/models/schemas/workout_exercise.py Type notes with WorkoutExerciseNotes alias
server/app/models/schemas/workout.py Add notes type alias + validator preventing null started_at
server/app/models/schemas/types.py Expand/centralize type aliases (notes, search, feedback, etc.)
server/app/models/schemas/set.py Type notes with SetNotes alias
server/app/models/schemas/search.py Add SearchRequest/SearchResponse schemas (new)
server/app/models/schemas/feedback.py Use typed fields for url/title/description
server/app/models/schemas/exercise.py Add ExerciseDocument + validators for non-null updates
server/app/models/schemas/config.py Add MeilisearchSettings
server/app/models/enums.py Add SearchIndex enum
server/app/models/database/workout_exercise.py Extract unique constraint name constant
server/app/models/database/set.py Extract unique constraint name constant
server/app/models/database/exercise.py Extract unique constraint name constant
server/app/core/security.py Rename db params to db_session; route through updated services
server/app/core/dependencies.py Rename DB deps; add Meilisearch client dependency
server/app/core/database.py Add is_unique_violation helper + constant
server/app/core/config.py Add ms settings to Settings
server/app/api/router.py Replace admin router with access_request + search routers
server/app/api/endpoints/workout_exercise.py Change routes to nested /workouts/{id}/exercises and db_session dep
server/app/api/endpoints/workout.py Switch to get_db_session dependency
server/app/api/endpoints/user.py Add admin-only GET /users endpoint
server/app/api/endpoints/set.py Change routes to nested workouts/exercises/sets and db_session dep
server/app/api/endpoints/search.py Add search/reindex/task endpoints (new)
server/app/api/endpoints/muscle_group.py Switch to get_db_session dependency
server/app/api/endpoints/health.py Switch to get_db_session dependency
server/app/api/endpoints/feedback.py Switch to get_db_session dependency
server/app/api/endpoints/exercise.py Switch to get_db_session dependency
server/app/api/endpoints/auth.py Switch to get_db_session dependency; rename kwargs
server/app/api/endpoints/access_request.py Replace /admin/* with /access-requests/*
config/infra/docker-compose.yml Add Meilisearch service + env wiring for server/migrations
config/infra/docker-compose.override.yml Expose Meilisearch port in override
config/env/.env.example Add MS__* env vars
client/vite.config.ts Adjust Vite config; remove vite-tsconfig-paths
client/src/pages/Admin.tsx Use AccessRequestService/UserService instead of AdminService
client/src/layout/AppLayout.tsx Refactor header/nav; delegate actions to HeaderActions
client/src/components/exercises/ExercisesTable.tsx Lint suppression for Set type argument
client/src/components/exercises/ExerciseFormDialog.tsx Adjust react-hook-form typing invocation
client/src/components/data-table/DataTable.tsx Remove explicit generic on columnVisibility state
client/src/components/HeaderActions.tsx New shared header actions component (new)
client/src/components/FeedbackFormDialog.tsx Make trigger customizable via props
client/src/components/AccessRequestsTable.tsx Switch AdminService → AccessRequestService; lint suppression
client/src/api/generated/core/utils.gen.ts Generated comment punctuation tweak
client/src/api/generated/core/types.gen.ts Generated comment punctuation tweak
client/src/api/generated/client/utils.gen.ts Generated formatting/comment tweaks
client/src/api/axios.ts Lint suppression for buildUrl generic
client/package.json Bump deps; remove vite-tsconfig-paths
agent-browser.json Add agent-browser config (new)
PROJECT_OVERVIEW.md Update documented API surface & add search section
.gitignore Ignore browser-profile directory
.github/workflows/test-server.yml Run deptry in CI before type checks
.github/copilot-instructions.md Document agent-browser usage
Files not reviewed (1)
  • client/package-lock.json: Language not supported

@aditya-arcot aditya-arcot merged commit bb54034 into stage Mar 26, 2026
7 checks passed
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.

2 participants