Skip to content

Commit 2980ca3

Browse files
committed
feat: add new 4 endpoints
Signed-off-by: Umberto Sgueglia <usgueglia@contractor.linuxfoundation.org>
1 parent b7d97d5 commit 2980ca3

15 files changed

Lines changed: 1236 additions & 4 deletions

File tree

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { z } from 'zod'
2+
3+
import { listStewardshipActivity } from '@crowd/data-access-layer'
4+
5+
import { getPackagesQx } from '@/db/packagesDb'
6+
import { validateOrThrow } from '@/utils/validation'
7+
8+
const querySchema = z.object({
9+
page: z.coerce.number().int().min(1).default(1),
10+
pageSize: z.coerce.number().int().min(1).max(100).default(25),
11+
})
12+
13+
export default async (req, res) => {
14+
const { page, pageSize } = validateOrThrow(querySchema, req.query)
15+
16+
const qx = await getPackagesQx()
17+
const { rows, total } = await listStewardshipActivity(qx, { page, pageSize })
18+
19+
await req.responseHandler.success(req, res, {
20+
rows: rows.map((r) => ({
21+
id: r.id,
22+
stewardshipId: r.stewardshipId,
23+
packagePurl: r.packagePurl,
24+
packageName: r.packageName,
25+
packageEcosystem: r.packageEcosystem,
26+
actorUserId: r.actorUserId,
27+
actorName: null, // TODO: resolve display name from crowd.dev users/members table by actorUserId
28+
actorType: r.actorType,
29+
activityType: r.activityType,
30+
content: r.content,
31+
metadata: r.metadata,
32+
stewardshipStatus: r.stewardshipStatus,
33+
createdAt: r.createdAt,
34+
})),
35+
total,
36+
page,
37+
pageSize,
38+
})
39+
}

backend/src/api/ossprey/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { safeWrap } from '../../middlewares/errorMiddleware'
2+
3+
export default (app) => {
4+
app.get('/ossprey/metrics', safeWrap(require('./metrics').default))
5+
// /packages/scatter must be registered before /packages to avoid Express treating 'scatter' as a path param
6+
app.get('/ossprey/packages/scatter', safeWrap(require('./packageScatter').default))
7+
app.get('/ossprey/packages', safeWrap(require('./packageList').default))
8+
app.get('/ossprey/activity', safeWrap(require('./activityFeed').default))
9+
}

backend/src/api/ossprey/metrics.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { getOsspreyMetrics } from '@crowd/data-access-layer'
2+
3+
import { getPackagesQx } from '@/db/packagesDb'
4+
5+
export default async (req, res) => {
6+
const qx = await getPackagesQx()
7+
const metrics = await getOsspreyMetrics(qx)
8+
await req.responseHandler.success(req, res, metrics)
9+
}

0 commit comments

Comments
 (0)