MCPcopy
hub / github.com/learnhouse/learnhouse / track

Function track

apps/api/src/services/analytics/analytics.py:37–66  ·  view source on GitHub ↗

Fire-and-forget analytics event to Tinybird. All errors are swallowed and logged — analytics never breaks the app.

(
    event_name: str,
    org_id: int,
    user_id: int = 0,
    session_id: str = "",
    properties: dict | None = None,
    source: str = "api",
    ip: str = "",
)

Source from the content-addressed store, hash-verified

35
36
37async def track(
38 event_name: str,
39 org_id: int,
40 user_id: int = 0,
41 session_id: str = "",
42 properties: dict | None = None,
43 source: str = "api",
44 ip: str = "",
45) -> None:
46 """
47 Fire-and-forget analytics event to Tinybird.
48 All errors are swallowed and logged — analytics never breaks the app.
49 """
50 config = get_learnhouse_config()
51 if config.tinybird_config is None:
52 return
53
54 task = asyncio.create_task(
55 _send_event(
56 event_name=event_name,
57 org_id=org_id,
58 user_id=user_id,
59 session_id=session_id,
60 properties=properties or {},
61 source=source,
62 ip=ip,
63 )
64 )
65 _background_tasks.add(task)
66 task.add_done_callback(_background_tasks.discard)
67
68
69async def _send_event(

Callers 15

create_userFunction · 0.90
create_discussionFunction · 0.90
create_certificate_userFunction · 0.90
add_activity_to_trailFunction · 0.90
add_course_to_trailFunction · 0.90
enroll_userFunction · 0.90
complete_activityFunction · 0.90
complete_courseFunction · 0.90
provision_userFunction · 0.90
bulk_enroll_usersFunction · 0.90

Calls 3

get_learnhouse_configFunction · 0.90
_send_eventFunction · 0.85
add_done_callbackMethod · 0.80