-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathPlutoImpl.swift
97 lines (92 loc) · 3.37 KB
/
PlutoImpl.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import Domain
public struct PlutoImpl {
public struct PlutoSetup {
public let coreDataSetup: CoreDataManager.CoreDataSetup
public let keychainService: String
public let keychain: KeychainStore & KeychainProvider
public init(
coreDataSetup: CoreDataManager.CoreDataSetup = .init(
modelPath: .storeName("PrismPluto"),
storeType: .persistent
),
keychainService: String = "atala.prism.service",
keychainAccessGroup: String? = nil
) {
self.init(
coreDataSetup: coreDataSetup,
keychainService: keychainService,
keychain: KeychainDAO(accessGroup: keychainAccessGroup)
)
}
public init(
coreDataSetup: CoreDataManager.CoreDataSetup = .init(
modelPath: .storeName("PrismPluto"),
storeType: .persistent
),
keychainService: String = "atala.prism.service",
keychain: (KeychainStore & KeychainProvider)
) {
self.coreDataSetup = coreDataSetup
self.keychainService = keychainService
self.keychain = keychain
}
}
let setup: PlutoSetup
let registeredDIDDao: CDRegisteredDIDDAO
let privateKeyDIDDao: CDDIDPrivateKeyDAO
let pairDIDDao: CDDIDPairDAO
let messageDao: CDMessageDAO
let mediatorDAO: CDMediatorDIDDAO
let credentialsDAO: CDCredentialDAO
let linkSecretDao: CDLinkSecretDAO
private let coreDataManager: CoreDataManager
public init(setup: PlutoSetup = .init()) {
let manager = CoreDataManager(setup: setup.coreDataSetup)
self.setup = setup
self.coreDataManager = manager
self.registeredDIDDao = CDRegisteredDIDDAO(
readContext: manager.mainContext,
writeContext: manager.editContext
)
let privateKeyDao = CDDIDPrivateKeyDAO(
keychain: setup.keychain,
keychainService: setup.keychainService,
keyDao: CDKeyDAO(
readContext: manager.mainContext,
writeContext: manager.editContext
),
readContext: manager.mainContext,
writeContext: manager.editContext
)
let pairDIDDao = CDDIDPairDAO(
readContext: manager.mainContext,
writeContext: manager.editContext,
privateKeyDIDDAO: privateKeyDao
)
let messageDao = CDMessageDAO(
readContext: manager.mainContext,
writeContext: manager.editContext,
pairDAO: pairDIDDao
)
self.privateKeyDIDDao = privateKeyDao
self.pairDIDDao = pairDIDDao
self.messageDao = messageDao
self.mediatorDAO = CDMediatorDIDDAO(
readContext: manager.mainContext,
writeContext: manager.editContext,
didDAO: CDDIDDAO(
readContext: manager.mainContext,
writeContext: manager.editContext
),
privateKeyDIDDao: privateKeyDao
)
self.credentialsDAO = CDCredentialDAO(
readContext: manager.mainContext,
writeContext: manager.editContext
)
self.linkSecretDao = CDLinkSecretDAO(
readContext: manager.mainContext,
writeContext: manager.editContext
)
}
}