Skip to content

Create user_activity_service.py with record_user_activity() and model #13

@pmcfadin

Description

@pmcfadin

Epic: #12 — Implement user_activity Table Support
Size: M
Dependencies: None — foundation issue

Description

Create the reusable service module and Pydantic model for user activity tracking.

Files to create

  • app/models/user_activity.pyUserActivity model + UserActivityResponse response model
  • app/services/user_activity_service.pyrecord_user_activity() write function + list_user_activity() read function
  • tests/services/test_user_activity_service.py — unit tests

Key design

  • USER_ACTIVITY_TABLE_NAME = "user_activity" constant
  • ANONYMOUS_USER_ID = UUID("00000000-0000-0000-0000-000000000000") sentinel
  • record_user_activity(userid, activity_type, activity_id=None, db_table=None) — generates uuid1() for activity_id if not provided, computes day partition as YYYY-MM-DD, inserts via db_table.insert_one()
  • list_user_activity(userid, page, page_size, activity_type=None, db_table=None) — queries last 30 days of partition keys (same pattern as list_trending_videos), optional activity_type filter, returns Tuple[List[UserActivity], int]
  • Follows existing get_table() import pattern from app.db.astra_client

Acceptance Criteria

  • record_user_activity() inserts correct document structure
  • list_user_activity() returns paginated results with optional type filter
  • Unit tests mock get_table and verify insert_one args and query logic

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions