-
Notifications
You must be signed in to change notification settings - Fork 0
/
svc.go
67 lines (53 loc) · 2.07 KB
/
svc.go
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
package shared
import (
"context"
"github.com/dmibod/kanban/shared/message"
"github.com/dmibod/kanban/shared/persistence"
"github.com/dmibod/kanban/shared/services"
"github.com/dmibod/kanban/shared/tools/db/mongo"
"os"
)
const mongoURLEnvVar = "MGO_URL"
// CreateServiceFactory instance
func CreateServiceFactory(f persistence.RepositoryFactory) *services.ServiceFactory {
return services.CreateServiceFactory(f, message.CreatePublisher("notification"), CreateLogger("[SERVICE] "))
}
// CreateRepositoryFactory instance
func CreateRepositoryFactory(e mongo.OperationExecutor) persistence.RepositoryFactory {
return persistence.CreateRepositoryFactory(e, CreateLogger("[REPOFAC]"))
}
// CreateOperationExecutor instance
func CreateOperationExecutor(p mongo.SessionProvider) mongo.OperationExecutor {
return persistence.CreateOperationExecutor(p, CreateLogger("[OPREXEC] "))
//return mongo.CreateExecutor(p, CreateLogger("[OPREXEC] "))
}
// CreateContextFactory instance
func CreateContextFactory(p mongo.SessionProvider) mongo.ContextFactory {
return mongo.CreateContextFactory(p, CreateLogger("[CTXFACT] "))
}
// CreateSessionProvider instance
func CreateSessionProvider(f mongo.SessionFactory) mongo.SessionProvider {
return mongo.CreateSessionProvider(f, CreateLogger("[SESPROV] "))
}
// CreateCopySessionProvider instance
func CreateCopySessionProvider(p mongo.SessionProvider) mongo.SessionProvider {
return mongo.CreateCopySessionProvider(p, CreateLogger("[CPYPROV] "))
}
// CreateContextSessionProvider instance
func CreateContextSessionProvider(c context.Context) mongo.SessionProvider {
return mongo.CreateContextSessionProvider(c, CreateLogger("[CTXPROV] "))
}
func getMongoURLOrDefault(defURL string) string {
url := os.Getenv(mongoURLEnvVar)
if url == "" {
return defURL
}
return url
}
// CreateSessionFactory instance
func CreateSessionFactory() mongo.SessionFactory {
sf := mongo.CreateSessionFactory(
mongo.WithLogger(CreateLogger("[SESSFAC] ")),
mongo.WithURL(getMongoURLOrDefault("")))
return persistence.CreateSessionFactory(sf, CreateLogger("[BRK.SES] "))
}