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