This repository was archived by the owner on Jul 14, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmain.swift
58 lines (47 loc) · 1.56 KB
/
main.swift
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
45
46
47
48
49
50
51
52
53
54
55
56
import LambdaRuntime
import NIO
import Logging
import Foundation
import TodoService
import AWSSDKSwiftCore
LoggingSystem.bootstrap(StreamLogHandler.standardError)
let group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
defer { try! group.syncShutdownGracefully() }
let logger = Logger(label: "Lambda.TodoAPIGateway")
do {
logger.info("start runtime")
let env = try Environment()
let store = DynamoTodoStore(
eventLoopGroup: group,
tableName: "SwiftLambdaTodos",
accessKeyId: env.accessKeyId,
secretAccessKey: env.secretAccessKey,
sessionToken: env.sessionToken,
region: Region(rawValue: env.region)!)
let controller = TodoController(store: store)
logger.info("register function")
let handler: Runtime.Handler
switch env.handlerName {
case "list":
handler = APIGateway.handler(controller.listTodos)
case "create":
handler = APIGateway.handler(controller.createTodo)
case "deleteAll":
handler = APIGateway.handler(controller.deleteAll)
case "getTodo":
handler = APIGateway.handler(controller.getTodo)
case "deleteTodo":
handler = APIGateway.handler(controller.deleteTodo)
case "patchTodo":
handler = APIGateway.handler(controller.patchTodo)
default:
fatalError("Unexpected handler")
}
logger.info("starting runloop")
let runtime = try Runtime.createRuntime(eventLoopGroup: group, environment: env, handler: handler)
defer { try! runtime.syncShutdown() }
try runtime.start().wait()
}
catch {
logger.error("error: \(String(describing: error))")
}