Line data Source code
1 : #region Copyright
2 : // // -----------------------------------------------------------------------
3 : // // <copyright company="cdmdotnet Limited">
4 : // // Copyright cdmdotnet Limited. All rights reserved.
5 : // // </copyright>
6 : // // -----------------------------------------------------------------------
7 : #endregion
8 :
9 : using System.Linq;
10 : using Cqrs.Azure.DocumentDb;
11 : using Cqrs.Azure.DocumentDb.Events;
12 : using Cqrs.Events;
13 : using Ninject.Modules;
14 :
15 : namespace Cqrs.Ninject.Azure.DocumentDb.Configuration
16 : {
17 : /// <summary>
18 : /// The <see cref="INinjectModule"/> for use with the Cqrs package.
19 : /// </summary>
20 : public class AzureDocumentDbEventStoreModule<TAuthenticationToken> : NinjectModule
21 1 : {
22 : #region Overrides of NinjectModule
23 :
24 : /// <summary>
25 : /// Loads the module into the kernel.
26 : /// </summary>
27 1 : public override void Load()
28 : {
29 : RegisterFactories();
30 : RegisterServices();
31 : RegisterCqrsRequirements();
32 : RegisterAzureHelpers();
33 : }
34 :
35 : #endregion
36 :
37 : /// <summary>
38 : /// Register the all factories
39 : /// </summary>
40 1 : public virtual void RegisterFactories()
41 : {
42 : Bind<IEventBuilder<TAuthenticationToken>>()
43 : .To<AzureDocumentDbEventBuilder<TAuthenticationToken>>()
44 : .InSingletonScope();
45 : Bind<IEventDeserialiser<TAuthenticationToken>>()
46 : .To<AzureDocumentDbEventDeserialiser<TAuthenticationToken>>()
47 : .InSingletonScope();
48 : }
49 :
50 : /// <summary>
51 : /// Register the all services
52 : /// </summary>
53 1 : public virtual void RegisterServices()
54 : {
55 : }
56 :
57 0 : public virtual void RegisterAzureHelpers()
58 : {
59 : if (!Kernel.GetBindings(typeof(IAzureDocumentDbHelper)).Any())
60 : {
61 : Bind<IAzureDocumentDbHelper>()
62 : .To<AzureDocumentDbHelper>()
63 : .InSingletonScope();
64 : }
65 : }
66 :
67 : /// <summary>
68 : /// Register the all Cqrs command handlers
69 : /// </summary>
70 1 : public virtual void RegisterCqrsRequirements()
71 : {
72 : Bind<IAzureDocumentDbEventStoreConnectionStringFactory>()
73 : .To<AzureDocumentDbEventStoreConnectionStringFactory>()
74 : .InSingletonScope();
75 :
76 : Bind<IEventStore<TAuthenticationToken>>()
77 : .To<AzureDocumentDbEventStore<TAuthenticationToken>>()
78 : .InSingletonScope();
79 : }
80 : }
81 : }
|