// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.30.0 // source: activity.sql package db import ( "context" "github.com/jackc/pgx/v5/pgtype" ) const countAssigneeChangesByActor = `-- name: CountAssigneeChangesByActor :many SELECT details->>'to_type' as assignee_type, details->>'to_id' as assignee_id, COUNT(*)::bigint as frequency FROM activity_log WHERE workspace_id = $1 AND actor_id = $2 AND actor_type = 'member' AND action = 'assignee_changed' AND details->>'to_type' IS NOT NULL AND details->>'to_id' IS NOT NULL GROUP BY details->>'to_type', details->>'to_id' ` type CountAssigneeChangesByActorParams struct { WorkspaceID pgtype.UUID `json:"workspace_id"` ActorID pgtype.UUID `json:"actor_id"` } type CountAssigneeChangesByActorRow struct { AssigneeType interface{} `json:"assignee_type"` AssigneeID interface{} `json:"assignee_id"` Frequency int64 `json:"frequency"` } // Count how many times a user assigned each target via assignee_changed activities. func (q *Queries) CountAssigneeChangesByActor(ctx context.Context, arg CountAssigneeChangesByActorParams) ([]CountAssigneeChangesByActorRow, error) { rows, err := q.db.Query(ctx, countAssigneeChangesByActor, arg.WorkspaceID, arg.ActorID) if err != nil { return nil, err } defer rows.Close() items := []CountAssigneeChangesByActorRow{} for rows.Next() { var i CountAssigneeChangesByActorRow if err := rows.Scan(&i.AssigneeType, &i.AssigneeID, &i.Frequency); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const createActivity = `-- name: CreateActivity :one INSERT INTO activity_log ( workspace_id, issue_id, actor_type, actor_id, action, details ) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id, workspace_id, issue_id, actor_type, actor_id, action, details, created_at ` type CreateActivityParams struct { WorkspaceID pgtype.UUID `json:"workspace_id"` IssueID pgtype.UUID `json:"issue_id"` ActorType pgtype.Text `json:"actor_type"` ActorID pgtype.UUID `json:"actor_id"` Action string `json:"action"` Details []byte `json:"details"` } func (q *Queries) CreateActivity(ctx context.Context, arg CreateActivityParams) (ActivityLog, error) { row := q.db.QueryRow(ctx, createActivity, arg.WorkspaceID, arg.IssueID, arg.ActorType, arg.ActorID, arg.Action, arg.Details, ) var i ActivityLog err := row.Scan( &i.ID, &i.WorkspaceID, &i.IssueID, &i.ActorType, &i.ActorID, &i.Action, &i.Details, &i.CreatedAt, ) return i, err } const listActivities = `-- name: ListActivities :many SELECT id, workspace_id, issue_id, actor_type, actor_id, action, details, created_at FROM activity_log WHERE issue_id = $1 ORDER BY created_at ASC LIMIT $2 OFFSET $3 ` type ListActivitiesParams struct { IssueID pgtype.UUID `json:"issue_id"` Limit int32 `json:"limit"` Offset int32 `json:"offset"` } func (q *Queries) ListActivities(ctx context.Context, arg ListActivitiesParams) ([]ActivityLog, error) { rows, err := q.db.Query(ctx, listActivities, arg.IssueID, arg.Limit, arg.Offset) if err != nil { return nil, err } defer rows.Close() items := []ActivityLog{} for rows.Next() { var i ActivityLog if err := rows.Scan( &i.ID, &i.WorkspaceID, &i.IssueID, &i.ActorType, &i.ActorID, &i.Action, &i.Details, &i.CreatedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil }