-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgetProductionContainer.ts
More file actions
26 lines (23 loc) · 882 Bytes
/
getProductionContainer.ts
File metadata and controls
26 lines (23 loc) · 882 Bytes
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
import {EmailNotificationMock} from '@cupcake/notification'
import {OrderRepositoryMemory} from '@cupcake/repository'
import {OrderRepositoryMongo} from '@cupcake/repository/src/OrderRepositoryMongo'
import {OrderService} from '@cupcake/services'
import {asClass, createContainer} from 'awilix'
import {OrderResolver} from './order/OrderResolver'
interface Env {
mongoUrl?: string
}
export const getProductionContainer = async ({mongoUrl}: Env) => {
const repository = mongoUrl
? asClass(OrderRepositoryMongo)
.classic()
.inject(() => ({url: mongoUrl}))
.singleton()
: asClass(OrderRepositoryMemory)
return createContainer({injectionMode: 'CLASSIC'}).register({
emailNotification: asClass(EmailNotificationMock),
orderRepository: repository,
orderResolver: asClass(OrderResolver),
orderService: asClass(OrderService),
})
}