Skip to content

Commit ce44168

Browse files
authored
feat: add activity types filter to backend API [IN-721] (#691)
Signed-off-by: Raúl Santos <[email protected]>
1 parent ffcf99d commit ce44168

40 files changed

+275
-123
lines changed

frontend/server/api/organization/commit.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ export default defineEventHandler(async (event): Promise<OrgDashCommit[]> => {
3232
granularity,
3333
activity_type: 'authored-commit',
3434
onlyContributions: false,
35+
includeCodeContributions: true,
36+
includeCollaborations: true,
3537
},
3638
)
3739

frontend/server/api/organization/pr-opened.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ export default defineEventHandler(async (event): Promise<OrgDashPrOpened[]> => {
3232
granularity,
3333
activity_type: 'pull_request-opened',
3434
onlyContributions: false,
35+
includeCodeContributions: true,
36+
includeCollaborations: true,
3537
},
3638
)
3739

frontend/server/api/project/[slug]/contributors/active-contributors.get.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { DateTime } from 'luxon'
3030
import { createDataSource } from '~~/server/data/data-sources'
3131
import type { ActiveContributorsFilter } from '~~/server/data/types'
3232
import { Granularity } from '~~/types/shared/granularity'
33+
import { getBooleanQueryParam } from '~~/server/utils/common'
3334

3435
export default defineEventHandler(async (event) => {
3536
// TODO: Check the project configuration to determine whether to show the data.
@@ -39,11 +40,16 @@ export default defineEventHandler(async (event) => {
3940

4041
const repos = Array.isArray(query.repos) ? query.repos : query.repos ? [query.repos] : undefined
4142

43+
const includeCodeContributions = getBooleanQueryParam(query, 'includeCodeContributions', true)
44+
const includeCollaborations = getBooleanQueryParam(query, 'includeCollaborations', false)
45+
4246
// TODO: Validate the query params
4347
const filter: ActiveContributorsFilter = {
4448
granularity: (query.granularity as Granularity) || Granularity.QUARTERLY,
4549
project,
4650
repos,
51+
includeCodeContributions,
52+
includeCollaborations,
4753
startDate: undefined,
4854
endDate: undefined,
4955
}

frontend/server/api/project/[slug]/contributors/active-organizations.get.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { DateTime } from 'luxon'
2222
import type { ActiveOrganizationsFilter } from '~~/server/data/types'
2323
import { createDataSource } from '~~/server/data/data-sources'
2424
import { Granularity } from '~~/types/shared/granularity'
25+
import { getBooleanQueryParam } from '~~/server/utils/common'
2526

2627
/**
2728
* Query params:
@@ -38,11 +39,16 @@ export default defineEventHandler(async (event) => {
3839

3940
const repos = Array.isArray(query.repos) ? query.repos : query.repos ? [query.repos] : undefined
4041

42+
const includeCodeContributions = getBooleanQueryParam(query, 'includeCodeContributions', true)
43+
const includeCollaborations = getBooleanQueryParam(query, 'includeCollaborations', false)
44+
4145
// TODO: Validate the query params
4246
const filter: ActiveOrganizationsFilter = {
4347
granularity: (query.granularity as Granularity) || Granularity.QUARTERLY,
4448
project,
4549
repos,
50+
includeCodeContributions,
51+
includeCollaborations,
4652
startDate: undefined,
4753
endDate: undefined,
4854
}

frontend/server/api/project/[slug]/contributors/contributor-dependency.get.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { createDataSource } from '~~/server/data/data-sources'
55
import type { ContributorDependencyFilter } from '~~/server/data/types'
66
import { ActivityTypes } from '~~/types/shared/activity-types'
77
import { ActivityPlatforms } from '~~/types/shared/activity-platforms'
8+
import { getBooleanQueryParam } from '~~/server/utils/common'
89

910
/**
1011
* Frontend expects the data to be in the following format:
@@ -42,12 +43,16 @@ export default defineEventHandler(async (event) => {
4243

4344
const activityPlatform = query.platform as ActivityPlatforms
4445
const activityType = query.activityType as ActivityTypes
46+
const includeCodeContributions = getBooleanQueryParam(query, 'includeCodeContributions', true)
47+
const includeCollaborations = getBooleanQueryParam(query, 'includeCollaborations', false)
4548
const repos = Array.isArray(query.repos) ? query.repos : query.repos ? [query.repos] : undefined
4649

4750
const filter: ContributorDependencyFilter = {
4851
project,
4952
platform: activityPlatform !== ActivityPlatforms.ALL ? activityPlatform : undefined,
5053
activity_type: activityType !== ActivityTypes.ALL ? activityType : undefined,
54+
includeCodeContributions,
55+
includeCollaborations,
5156
repos,
5257
startDate: query.startDate ? DateTime.fromISO(query.startDate as string) : undefined,
5358
endDate: query.endDate ? DateTime.fromISO(query.endDate as string) : undefined,

frontend/server/api/project/[slug]/contributors/contributor-leaderboard.get.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { createDataSource } from '~~/server/data/data-sources'
55
import type { ContributorsLeaderboardFilter } from '~~/server/data/types'
66
import { ActivityTypes } from '~~/types/shared/activity-types'
77
import { ActivityPlatforms } from '~~/types/shared/activity-platforms'
8+
import { getBooleanQueryParam } from '~~/server/utils/common'
89

910
/**
1011
* Frontend expects the data to be in the following format:
@@ -41,6 +42,8 @@ export default defineEventHandler(async (event) => {
4142
const project = (event.context.params as { slug: string }).slug
4243
const activityPlatform = query.platform as ActivityPlatforms
4344
const activityType = query.activityType as ActivityTypes
45+
const includeCodeContributions = getBooleanQueryParam(query, 'includeCodeContributions', true)
46+
const includeCollaborations = getBooleanQueryParam(query, 'includeCollaborations', false)
4447
const limit = query.limit ? parseInt(query.limit as string, 10) : 10
4548
const offset = query.offset ? parseInt(query.offset as string, 10) : 0
4649
const repos = Array.isArray(query.repos) ? query.repos : query.repos ? [query.repos] : undefined
@@ -49,6 +52,8 @@ export default defineEventHandler(async (event) => {
4952
project,
5053
platform: activityPlatform !== ActivityPlatforms.ALL ? activityPlatform : undefined,
5154
activity_type: activityType !== ActivityTypes.ALL ? activityType : undefined,
55+
includeCodeContributions,
56+
includeCollaborations,
5257
repos,
5358
startDate: query.startDate ? DateTime.fromISO(query.startDate as string) : undefined,
5459
endDate: query.endDate ? DateTime.fromISO(query.endDate as string) : undefined,

frontend/server/api/project/[slug]/contributors/geographical-distribution.get.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ export default defineEventHandler(async (event) => {
4444
project,
4545
platform: activityPlatform !== ActivityPlatforms.ALL ? activityPlatform : undefined,
4646
activity_type: activityType !== ActivityTypes.ALL ? activityType : undefined,
47+
includeCodeContributions: true,
48+
includeCollaborations: false,
4749
repos,
4850
type: (query.type as DemographicType) || DemographicType.CONTRIBUTORS,
4951
startDate: query.startDate ? DateTime.fromISO(query.startDate as string) : undefined,

frontend/server/api/project/[slug]/contributors/organization-dependency.get.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type { OrganizationDependencyFilter } from '~~/server/data/types'
55
import { createDataSource } from '~~/server/data/data-sources'
66
import { ActivityTypes } from '~~/types/shared/activity-types'
77
import { ActivityPlatforms } from '~~/types/shared/activity-platforms'
8+
import { getBooleanQueryParam } from '~~/server/utils/common'
89

910
/**
1011
* Frontend expects the data to be in the following format:
@@ -43,12 +44,17 @@ export default defineEventHandler(async (event) => {
4344
const activityPlatform = query.platform as ActivityPlatforms
4445
const activityType = query.activityType as ActivityTypes
4546

47+
const includeCodeContributions = getBooleanQueryParam(query, 'includeCodeContributions', true)
48+
const includeCollaborations = getBooleanQueryParam(query, 'includeCollaborations', false)
49+
4650
const repos = Array.isArray(query.repos) ? query.repos : query.repos ? [query.repos] : undefined
4751

4852
const filter: OrganizationDependencyFilter = {
4953
project,
5054
platform: activityPlatform !== ActivityPlatforms.ALL ? activityPlatform : undefined,
5155
activity_type: activityType !== ActivityTypes.ALL ? activityType : undefined,
56+
includeCodeContributions,
57+
includeCollaborations,
5258
repos,
5359
startDate: query.startDate ? DateTime.fromISO(query.startDate as string) : undefined,
5460
endDate: query.endDate ? DateTime.fromISO(query.endDate as string) : undefined,

frontend/server/api/project/[slug]/contributors/organization-leaderboard.get.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { createDataSource } from '~~/server/data/data-sources'
55
import type { OrganizationsLeaderboardFilter } from '~~/server/data/types'
66
import { ActivityTypes } from '~~/types/shared/activity-types'
77
import { ActivityPlatforms } from '~~/types/shared/activity-platforms'
8+
import { getBooleanQueryParam } from '~~/server/utils/common'
89

910
/**
1011
* Frontend expects the data to be in the following format:
@@ -40,6 +41,8 @@ export default defineEventHandler(async (event) => {
4041
const project = (event.context.params as { slug: string }).slug
4142
const activityPlatform = query.platform as ActivityPlatforms
4243
const activityType = query.activityType as ActivityTypes
44+
const includeCodeContributions = getBooleanQueryParam(query, 'includeCodeContributions', true)
45+
const includeCollaborations = getBooleanQueryParam(query, 'includeCollaborations', false)
4346
const limit = query.limit ? parseInt(query.limit as string, 10) : 10
4447
const offset = query.offset ? parseInt(query.offset as string, 10) : 0
4548

@@ -55,6 +58,8 @@ export default defineEventHandler(async (event) => {
5558
project,
5659
platform: activityPlatform !== ActivityPlatforms.ALL ? activityPlatform : undefined,
5760
activity_type: activityType !== ActivityTypes.ALL ? activityType : undefined,
61+
includeCodeContributions,
62+
includeCollaborations,
5863
repos,
5964
startDate: query.startDate ? DateTime.fromISO(query.startDate as string) : undefined,
6065
endDate: query.endDate ? DateTime.fromISO(query.endDate as string) : undefined,

frontend/server/api/project/[slug]/contributors/retention.get.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { DemographicType } from '~~/server/data/types'
66
import { createDataSource } from '~~/server/data/data-sources'
77
import { ActivityTypes } from '~~/types/shared/activity-types'
88
import { Granularity } from '~~/types/shared/granularity'
9+
import { getBooleanQueryParam } from '~~/server/utils/common'
910

1011
/**
1112
* Frontend expects the data to be in the following format:
@@ -28,12 +29,17 @@ export default defineEventHandler(async (event) => {
2829
const project = (event.context.params as { slug: string }).slug
2930
const activityType = query.activityType as ActivityTypes
3031

32+
const includeCodeContributions = getBooleanQueryParam(query, 'includeCodeContributions', true)
33+
const includeCollaborations = getBooleanQueryParam(query, 'includeCollaborations', false)
34+
3135
const repos = Array.isArray(query.repos) ? query.repos : query.repos ? [query.repos] : undefined
3236

3337
const filter: RetentionFilter = {
3438
project,
3539
granularity: query.granularity as Granularity,
3640
activity_type: activityType !== ActivityTypes.ALL ? activityType : undefined,
41+
includeCodeContributions,
42+
includeCollaborations,
3743
repos,
3844
demographicType: (query.type as DemographicType) || DemographicType.CONTRIBUTORS,
3945
onlyContributions: false, // forks and stars are non-contribution activities, but we want to count them.

0 commit comments

Comments
 (0)