Skip to content

Commit 3c09578

Browse files
author
Andrea Scuderi
committed
Remove BreezeLambdaAPIHandler
1 parent fb51990 commit 3c09578

8 files changed

+240
-171
lines changed

Sources/BreezeDynamoDBService/BreezeDynamoDBConfig.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ public struct BreezeDynamoDBConfig: Sendable {
2727
self.endpoint = endpoint
2828
}
2929

30-
let region: Region
31-
let tableName: String
32-
let keyName: String
33-
let endpoint: String?
30+
public let region: Region
31+
public let tableName: String
32+
public let keyName: String
33+
public let endpoint: String?
3434
}

Sources/BreezeLambdaAPI/BreezeLambdaAPIHandler.swift

-51
This file was deleted.

Sources/BreezeLambdaAPI/BreezeLambdaAPIService.swift

+10
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,15 @@ public actor BreezeLambdaAPIService<T: BreezeCodable>: Service {
5858
return nil
5959
}
6060

61+
static func operation() throws -> BreezeOperation {
62+
guard let handler = Lambda.env("_HANDLER"),
63+
let operation = BreezeOperation(handler: handler)
64+
else {
65+
throw BreezeLambdaAPIError.invalidHandler
66+
}
67+
return operation
68+
}
69+
6170
public init(dbTimeout: Int64 = 30) throws {
6271
do {
6372
self.timeout = .seconds(dbTimeout)
@@ -78,6 +87,7 @@ public actor BreezeLambdaAPIService<T: BreezeCodable>: Service {
7887
self.dynamoDBService = BreezeDynamoDBService(config: config, serviceConfig: serviceConfig)
7988
self.breezeLambdaService = BreezeLambdaService<T>(
8089
dynamoDBService: dynamoDBService,
90+
operation: try Self.operation(),
8191
logger: logger
8292
)
8393
self.serviceGroup = ServiceGroup(

Sources/BreezeLambdaAPI/BreezeLambdaHandler.swift

+10-10
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@ import AWSLambdaRuntime
1717
import BreezeDynamoDBService
1818
import Logging
1919

20-
struct BreezeLambdaHandler<T: BreezeCodable> {
20+
struct BreezeLambdaHandler<T: BreezeCodable>: LambdaHandler, Sendable {
2121
typealias Event = APIGatewayV2Request
2222
typealias Output = APIGatewayV2Response
2323

24-
let service: BreezeDynamoDBManaging
24+
let dbManager: BreezeDynamoDBManaging
2525
let operation: BreezeOperation
2626

2727
var keyName: String {
28-
self.service.keyName
28+
self.dbManager.keyName
2929
}
30-
31-
func handle(context: AWSLambdaRuntimeCore.LambdaContext, event: APIGatewayV2Request) async -> APIGatewayV2Response {
30+
31+
public func handle(_ event: APIGatewayV2Request, context: LambdaContext) async throws -> APIGatewayV2Response {
3232
switch self.operation {
3333
case .create:
3434
return await self.createLambdaHandler(context: context, event: event)
@@ -49,7 +49,7 @@ struct BreezeLambdaHandler<T: BreezeCodable> {
4949
return APIGatewayV2Response(with: error, statusCode: .forbidden)
5050
}
5151
do {
52-
let result: T = try await service.createItem(item: item)
52+
let result: T = try await dbManager.createItem(item: item)
5353
return APIGatewayV2Response(with: result, statusCode: .created)
5454
} catch {
5555
return APIGatewayV2Response(with: error, statusCode: .forbidden)
@@ -62,7 +62,7 @@ struct BreezeLambdaHandler<T: BreezeCodable> {
6262
return APIGatewayV2Response(with: error, statusCode: .forbidden)
6363
}
6464
do {
65-
let result: T = try await service.readItem(key: key)
65+
let result: T = try await dbManager.readItem(key: key)
6666
return APIGatewayV2Response(with: result, statusCode: .ok)
6767
} catch {
6868
return APIGatewayV2Response(with: error, statusCode: .notFound)
@@ -75,7 +75,7 @@ struct BreezeLambdaHandler<T: BreezeCodable> {
7575
return APIGatewayV2Response(with: error, statusCode: .forbidden)
7676
}
7777
do {
78-
let result: T = try await service.updateItem(item: item)
78+
let result: T = try await dbManager.updateItem(item: item)
7979
return APIGatewayV2Response(with: result, statusCode: .ok)
8080
} catch {
8181
return APIGatewayV2Response(with: error, statusCode: .notFound)
@@ -97,7 +97,7 @@ struct BreezeLambdaHandler<T: BreezeCodable> {
9797
}
9898
do {
9999
let simpleItem = SimpleItem(key: key, createdAt: createdAt, updatedAt: updatedAt)
100-
try await self.service.deleteItem(item: simpleItem)
100+
try await self.dbManager.deleteItem(item: simpleItem)
101101
return APIGatewayV2Response(with: BreezeEmptyResponse(), statusCode: .ok)
102102
} catch {
103103
return APIGatewayV2Response(with: error, statusCode: .notFound)
@@ -108,7 +108,7 @@ struct BreezeLambdaHandler<T: BreezeCodable> {
108108
do {
109109
let key = event.queryStringParameters?["exclusiveStartKey"]
110110
let limit: Int? = event.queryStringParameter("limit")
111-
let result: ListResponse<T> = try await service.listItems(key: key, limit: limit)
111+
let result: ListResponse<T> = try await dbManager.listItems(key: key, limit: limit)
112112
return APIGatewayV2Response(with: result, statusCode: .ok)
113113
} catch {
114114
return APIGatewayV2Response(with: error, statusCode: .forbidden)

Sources/BreezeLambdaAPI/BreezeLambdaService.swift

+8-3
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,16 @@ import Logging
2323
actor BreezeLambdaService<T: BreezeCodable>: Service {
2424

2525
let dynamoDBService: BreezeDynamoDBServing
26+
let operation: BreezeOperation
2627
let logger: Logger
2728

28-
init(dynamoDBService: BreezeDynamoDBServing, logger: Logger) {
29+
init(dynamoDBService: BreezeDynamoDBServing, operation: BreezeOperation, logger: Logger) {
2930
self.dynamoDBService = dynamoDBService
31+
self.operation = operation
3032
self.logger = logger
3133
}
3234

33-
var breezeApi: BreezeLambdaAPIHandler<T>?
35+
var breezeApi: BreezeLambdaHandler<T>?
3436

3537
func handler(event: APIGatewayV2Request, context: LambdaContext) async throws -> APIGatewayV2Response {
3638
guard let breezeApi else { throw BreezeLambdaAPIError.invalidHandler }
@@ -40,7 +42,10 @@ actor BreezeLambdaService<T: BreezeCodable>: Service {
4042
func run() async throws {
4143
do {
4244
logger.info("Initializing BreezeLambdaAPIHandler...")
43-
let breezeApi = try await BreezeLambdaAPIHandler<T>(service: dynamoDBService)
45+
guard let dbManager = await dynamoDBService.dbManager else {
46+
throw BreezeLambdaAPIError.invalidService
47+
}
48+
let breezeApi = BreezeLambdaHandler<T>(dbManager: dbManager, operation: operation)
4449
self.breezeApi = breezeApi
4550
logger.info("Starting BreezeLambdaAPIHandler...")
4651
let runtime = LambdaRuntime(body: handler)

Tests/BreezeLambdaAPITests/BreezeDynamoDBServiceMock.swift renamed to Tests/BreezeLambdaAPITests/BreezeDynamoDBManagerMock.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import BreezeDynamoDBService
1616
@testable import BreezeLambdaAPI
1717
import SotoDynamoDB
1818

19-
actor BreezeDynamoDBServiceMock: BreezeDynamoDBManaging {
19+
actor BreezeDynamoDBManagerMock: BreezeDynamoDBManaging {
2020
let keyName: String
2121

2222
private var response: (any BreezeCodable)?

0 commit comments

Comments
 (0)