MCPcopy Create free account
hub / github.com/adcontextprotocol/adcp / recordActivity

Method recordActivity

server/src/db/slack-db.ts:492–564  ·  view source on GitHub ↗

* Record a Slack activity event

(activity: {
    slack_user_id: string;
    activity_type: string;
    channel_id?: string;
    channel_name?: string;
    activity_timestamp: Date;
    organization_id?: string;
    metadata?: Record<string, unknown>;
  })

Source from the content-addressed store, hash-verified

490 * Record a Slack activity event
491 */
492 async recordActivity(activity: {
493 slack_user_id: string;
494 activity_type: string;
495 channel_id?: string;
496 channel_name?: string;
497 activity_timestamp: Date;
498 organization_id?: string;
499 metadata?: Record<string, unknown>;
500 }): Promise<void> {
501 // Insert raw activity
502 await query(
503 `INSERT INTO slack_activities (
504 slack_user_id, activity_type, channel_id, channel_name,
505 activity_timestamp, organization_id, metadata
506 ) VALUES ($1, $2, $3, $4, $5, $6, $7)`,
507 [
508 activity.slack_user_id,
509 activity.activity_type,
510 activity.channel_id || null,
511 activity.channel_name || null,
512 activity.activity_timestamp,
513 activity.organization_id || null,
514 activity.metadata ? JSON.stringify(activity.metadata) : null,
515 ]
516 );
517
518 // Update daily aggregation
519 const activityDate = activity.activity_timestamp.toISOString().split('T')[0];
520 const columnMap: Record<string, string> = {
521 message: 'message_count',
522 reaction: 'reaction_count',
523 thread_reply: 'thread_reply_count',
524 channel_join: 'channel_join_count',
525 };
526 const countColumn = columnMap[activity.activity_type] || null;
527
528 if (countColumn) {
529 await query(
530 `INSERT INTO slack_activity_daily (
531 slack_user_id, activity_date, ${countColumn}, total_activity, organization_id
532 ) VALUES ($1, $2, 1, 1, $3)
533 ON CONFLICT (slack_user_id, activity_date)
534 DO UPDATE SET
535 ${countColumn} = slack_activity_daily.${countColumn} + 1,
536 total_activity = slack_activity_daily.total_activity + 1,
537 organization_id = COALESCE(EXCLUDED.organization_id, slack_activity_daily.organization_id),
538 updated_at = NOW()`,
539 [activity.slack_user_id, activityDate, activity.organization_id || null]
540 );
541 } else {
542 // Unknown activity type - just increment total
543 await query(
544 `INSERT INTO slack_activity_daily (
545 slack_user_id, activity_date, total_activity, organization_id
546 ) VALUES ($1, $2, 1, $3)
547 ON CONFLICT (slack_user_id, activity_date)
548 DO UPDATE SET
549 total_activity = slack_activity_daily.total_activity + 1,

Callers 3

handleMessageFunction · 0.80
handleReactionAddedFunction · 0.80

Calls 1

queryFunction · 0.85

Tested by

no test coverage detected