/
global.ts
41 lines (35 loc) · 1.32 KB
/
global.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { authSession } from '@/services/backend/auth';
import { K8sApiDefault } from '@/services/backend/kubernetes/admin';
import { CRDMeta, ListCRD } from '@/services/backend/kubernetes/user';
import { jsonRes } from '@/services/backend/response';
import { NotificationItem } from '@/types';
import type { NextApiRequest, NextApiResponse } from 'next';
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
try {
const payload = await authSession(req.headers);
if (!payload) return jsonRes(res, { code: 401, message: 'failed to get info' });
const defaultKc = K8sApiDefault();
const notification_meta: CRDMeta = {
group: 'notification.sealos.io',
version: 'v1',
namespace: 'sealos',
plural: 'notifications'
};
const listCrd = (await ListCRD(defaultKc, notification_meta)) as {
body: {
items: NotificationItem[];
};
};
const compareByTimestamp = (a: NotificationItem, b: NotificationItem) =>
b?.spec?.timestamp - a?.spec?.timestamp;
if (listCrd.body?.items) {
listCrd.body.items.sort(compareByTimestamp);
if (listCrd.body.items[0]) {
return jsonRes(res, { data: listCrd.body.items[0] });
}
}
jsonRes(res, { data: listCrd.body });
} catch (err) {
jsonRes(res, { code: 500, data: err });
}
}