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); } } } }
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); }
public DataStoreHandler(IDatabaseContextFactory databaseContextFactory, IDataStoreQuery dataStoreQuery) { Guard.AgainstNull(databaseContextFactory, nameof(databaseContextFactory)); Guard.AgainstNull(dataStoreQuery, nameof(dataStoreQuery)); _databaseContextFactory = databaseContextFactory; _dataStoreQuery = dataStoreQuery; }
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; }