-
Notifications
You must be signed in to change notification settings - Fork 0
/
API.ts
44 lines (41 loc) · 1.07 KB
/
API.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
42
43
44
import { StackContext, Api, use, FunctionNameProps } from "sst/constructs";
import { Database } from "./Database";
function nameFor(shortName: string) {
const nameGenerator = (props: FunctionNameProps): string => {
return `${props.stack.stackName}-${shortName}`;
};
return nameGenerator;
}
export function API({ stack }: StackContext) {
const { table } = use(Database);
const api = new Api(stack, "api", {
defaults: {
function: {
bind: [table],
},
},
routes: {
"GET /link/{id}": {
function: {
functionName: nameFor("LinkGet"),
handler: "packages/functions/src/link/get.handler",
},
},
"POST /link": {
function: {
functionName: nameFor("LinkCreate"),
handler: "packages/functions/src/link/create.handler",
},
},
"GET /links": {
function: {
functionName: nameFor("LinkList"),
handler: "packages/functions/src/link/list.handler",
},
},
},
});
stack.addOutputs({
ApiEndpoint: api.url,
});
}