Create "BazaarOverviewCard" that can be added to Backstage homepage.
Change-Id: I6e2565360cb3f7af27f60a0336cd87a75b3018c3 Signed-off-by: Frida Jacobsson <fridaja@axis.com> Signed-off-by: Frida Jacobsson <fridahelenajacobsson@gmail.com>
This commit is contained in:
committed by
Frida Jacobsson
parent
32aa6532bf
commit
f7c2855d76
@@ -25,6 +25,7 @@
|
||||
"@backstage/backend-common": "workspace:^",
|
||||
"@backstage/backend-test-utils": "workspace:^",
|
||||
"@backstage/config": "workspace:^",
|
||||
"@backstage/errors": "workspace:^",
|
||||
"@backstage/plugin-auth-node": "workspace:^",
|
||||
"@types/express": "^4.17.6",
|
||||
"express": "^4.17.1",
|
||||
|
||||
@@ -175,14 +175,22 @@ export class DatabaseHandler {
|
||||
return await this.client('metadata').where({ id: id }).del();
|
||||
}
|
||||
|
||||
async getProjects() {
|
||||
async getProjects(limit?: number, order?: string) {
|
||||
const coalesce = this.client.raw(
|
||||
'coalesce(count(members.item_id), 0) as members_count',
|
||||
);
|
||||
|
||||
return await this.client('metadata')
|
||||
let get = this.client('metadata')
|
||||
.select([...this.columns, coalesce])
|
||||
.groupBy(this.columns)
|
||||
.leftJoin('members', 'metadata.id', '=', 'members.item_id');
|
||||
.groupBy(this.columns);
|
||||
if (limit) {
|
||||
get = get.limit(limit);
|
||||
}
|
||||
if (order === 'latest') {
|
||||
get = get.orderByRaw('id desc');
|
||||
}
|
||||
if (order === 'random') {
|
||||
get = get.orderByRaw('RANDOM()');
|
||||
}
|
||||
return await get.leftJoin('members', 'metadata.id', '=', 'members.item_id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,8 +92,14 @@ export async function createRouter(
|
||||
response.json({ status: 'ok', data: data });
|
||||
});
|
||||
|
||||
router.get('/projects', async (_, response) => {
|
||||
const data = await dbHandler.getProjects();
|
||||
router.get('/projects', async (request, response) => {
|
||||
const limit = request.query.limit?.toString();
|
||||
const order = request.query.order?.toString();
|
||||
|
||||
const data = await dbHandler.getProjects(
|
||||
limit ? parseInt(limit, 10) : undefined,
|
||||
order,
|
||||
);
|
||||
|
||||
response.json({ status: 'ok', data: data });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user