private static void RegisterModuleQueries(IDataStore dataStore, string moduleName, Assembly assembly, IServiceScope scope, IQueryDocumentation documentation)
        {
            IEnumerable <Type> queries = assembly.GetExportedTypes().Where(p => p.GetInterfaces().Any(x => x == typeof(IDataStoreQuery)));

            if (queries.Any())
            {
                var dbHelper = scope.ServiceProvider.GetService <IDbHelper>();

                foreach (Type p in queries)
                {
                    var constructor = p.GetConstructors().FirstOrDefault(p => p.GetParameters().Length == 1);

                    if (constructor != null)
                    {
                        IDataStoreQuery obj = (IDataStoreQuery)constructor.Invoke(new object[] { dbHelper });
                        documentation.BuildDocumentation(moduleName, obj);
                        dataStore.RegisterQuery(moduleName, obj.QueryName, obj.Query);
                    }
                    else
                    {
                        IDataStoreQuery obj = (IDataStoreQuery)assembly.CreateInstance(p.FullName);
                        documentation.BuildDocumentation(moduleName, obj);
                        dataStore.RegisterQuery(moduleName, obj.QueryName, obj.Query);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private QueryDocumentItem RefactorDocuments(IDataStoreQuery query)
        {
            var type = query.GetType();

            var responseType = ((ResponseTypeAttribute[])Attribute.GetCustomAttributes(type, typeof(ResponseTypeAttribute))).FirstOrDefault();

            var requestType = ((RequestParameterTypeAttribute[])Attribute.GetCustomAttributes(type, typeof(RequestParameterTypeAttribute))).FirstOrDefault();

            var item = new QueryDocumentItem();

            item.QueryName = query.QueryName;

            if (requestType is NoneRequestParameterAttribute)
            {
                item.RequestSample = "No Request Parameter.";
            }
            else
            {
                item.RequestSample = BuildSampleFromType(requestType.RequestType);
            }

            item.ResponseSample = BuildSampleFromType(responseType.ResponseType);

            return(item);
        }
Exemplo n.º 3
0
        public DataStoreHandler(IDatabaseContextFactory databaseContextFactory, IDataStoreQuery dataStoreQuery)
        {
            Guard.AgainstNull(databaseContextFactory, nameof(databaseContextFactory));
            Guard.AgainstNull(dataStoreQuery, nameof(dataStoreQuery));

            _databaseContextFactory = databaseContextFactory;
            _dataStoreQuery         = dataStoreQuery;
        }
Exemplo n.º 4
0
        public void BuildDocumentation(string moduleName, IDataStoreQuery query)
        {
            if (!_documentations.ContainsKey(moduleName))
            {
                _documentations.Add(moduleName, new List <QueryDocumentItem>());
            }

            _documentations[moduleName].Add(RefactorDocuments(query));
        }
        public DataStoresController(IServiceBus bus, IDatabaseContextFactory databaseContextFactory,
                                    IDataStoreQuery dataStoreQuery)
        {
            Guard.AgainstNull(databaseContextFactory, nameof(databaseContextFactory));
            Guard.AgainstNull(dataStoreQuery, nameof(dataStoreQuery));
            Guard.AgainstNull(bus, nameof(bus));

            _databaseContextFactory = databaseContextFactory;
            _dataStoreQuery         = dataStoreQuery;
            _bus = bus;
        }
        public DataStoreDatabaseContextFactory(
            IConnectionConfigurationProvider connectionConfigurationProvider,
            IDbConnectionFactory dbConnectionFactory,
            IDbCommandFactory dbCommandFactory,
            IDatabaseContextCache databaseContextCache,
            IDataStoreQuery dataStoreQuery)
            : base(
                connectionConfigurationProvider,
                dbConnectionFactory,
                dbCommandFactory,
                databaseContextCache)
        {
            Guard.AgainstNull(dataStoreQuery, nameof(dataStoreQuery));

            _dataStoreQuery = dataStoreQuery;
        }