-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy path[...slug].ts
More file actions
41 lines (27 loc) · 1.23 KB
/
[...slug].ts
File metadata and controls
41 lines (27 loc) · 1.23 KB
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 { Context } from 'koa';
import { LarkPageData, TableRecord, TableRecordData } from 'mobx-lark';
import { DataObject } from 'mobx-restful';
import { createKoaRouter, withKoaRouter } from 'next-ssr-middleware';
import { safeAPI } from '../../../core';
import { proxyLark, proxyLarkAll } from '../../core';
export const config = { api: { bodyParser: false } };
const router = createKoaRouter(import.meta.url);
function filterData(fields: DataObject) {
for (const key of Object.keys(fields)) if (!/^\w+$/.test(key)) delete fields[key];
}
router.get('/apps/:app/tables/:table/records/:record', safeAPI, async (context: Context) => {
const { status, body } = await proxyLark<TableRecordData<DataObject>>(context);
const { fields } = body!.data!.record;
filterData(fields);
context.status = status;
context.body = body;
});
router.get('/apps/:app/tables/:table/records', safeAPI, async (context: Context) => {
const { status, body } = await proxyLark<LarkPageData<TableRecord<DataObject>>>(context);
const list = body!.data!.items || [];
for (const { fields } of list) filterData(fields);
context.status = status;
context.body = body;
});
router.all('/(.*)', safeAPI, proxyLarkAll);
export default withKoaRouter(router);