public ApiModule(IDataServiceHostSettings dshs, IAuthorisation authorisation, IDataServiceDesignerDataService dsdDataService, ISchemaBrowserRepository sbRepository) : base("api/dataServicedesigner") { _dshs = dshs; _authorisation = authorisation; _dsdDataService = dsdDataService; _sbRepository = sbRepository; Get[@"/availableschemas/{dataServiceName}", true] = async(args, ct) => { string dataServiceName = args.dataServiceName; var builder = new QueryBuilder <DomainDataService>() .Filter(d => d.Property(p => p.Name).EqualTo(dataServiceName)); //.Expand(d => d.Connection); var roleIds = await _authorisation.GetAdministratorRoleIdsAsync(); var queryResult = _dsdDataService.Query(new Query(builder.GetQuery()), BwfSystemUser, roleIds, string.Empty, _dshs.SystemToken, out var fault); var dataService = queryResult?.Records?.SingleOrDefault() as DomainDataService; if (dataService is null) { return(Response.AsJson(Enumerable.Empty <DbSchema>(), HttpStatusCode.BadRequest)); } var schemas = _sbRepository.GetWhere <DbSchema>(s => s.Connection.Name == dataService.Connection.Name); return(Response.AsJson(schemas)); }; }
public SchemaBrowserDataService( IEnumerable <IRecordType> recordTypes, IGlobalisationProvider globalisationProvider, IAuthorisation authorisation, IMetadataProvider metadataProvider, ISchemaBrowserRepository repository) : base( Constants.DataServiceName, globalisationProvider, repository as InMemoryDataServiceRepository, recordTypes, authorisation, metadataProvider) { ValidatorOptions.CascadeMode = CascadeMode.StopOnFirstFailure; }
bool Initialise() { if (_sbDataService is null) { try { _sbRepository = _kernel.Get <ISchemaBrowserRepository>(); _sbDataService = _kernel.Get <ISchemaBrowserDataService>(); _dbConnectionRecordType = _sbDataService.GetRecordType(nameof(DbConnection)) as IChangeableRecordType <long, DbConnection>; } catch { _sbDataService = null; _dbConnectionRecordType = null; } } return(!(_sbDataService is null)); }
public ApiModule(IAuthentication authentication, IGlobalisationProvider globalisationProvider, ISchemaBrowserRepository repository) : base("api/schemabrowser/ext", globalisationProvider) { _authentication = authentication; _repository = repository; _utils = new SchemaBrowserUtils(); Get[@"/TestConnection/{databaseType}"] = args => { string databaseType = args.databaseType; DatabaseType dbType = databaseType.FromDatabaseValue <DatabaseType>(); string connectionString = Request.Query["cs"]; //can't get this to work via normal parameter as it's encoded string message = string.Empty; _utils.TestConnection(dbType, connectionString, out message); return(Response.AsJson(message)); }; }
public DbConnectionValidator(ISchemaBrowserRepository repository) { _repository = repository; _utils = new SchemaBrowserUtils(); RuleFor(x => x.Id) .GreaterThanOrEqualTo(0L); RuleFor(x => x.Name) .NotEmpty() .Length(1, 64) .Must(BeUnique) .WithMessage("The 'Name' must be unique"); RuleFor(x => x.DataSource) .NotEmpty() .Length(1, 1000); RuleFor(x => x.InitialCatalog) .Length(0, 64) .Must(OnlyBeSuppliedForSQLServer) .WithMessage("An 'Initial Catalog' is required for SQL Server connections"); RuleFor(x => x.Username) .Length(0, 64) .Must(OnlyBeSuppliedForNonIntegratedSecurity) .WithMessage("A 'User Name' is required"); RuleFor(x => x.Password) .Length(0, 64) .Must(OnlyBeSuppliedForNonIntegratedSecurity) .WithMessage("A 'Password' is required"); RuleFor(x => x.ConnectionString) .NotEmpty() .Length(1, 2000); //Custom(p => MustHaveAValidConnectionString(p)); }
public ApiModule(IDataServiceHostSettings dshs, IAuthorisation authorisation, IDataServiceDesignerDataService dsdDataService, ISchemaBrowserRepository sbRepository) : base("api/dataservicedesigner") { _dshs = dshs; _authorisation = authorisation; _dsdDataService = dsdDataService; _sbRepository = sbRepository; Get[@"/availableschemas/{dataServiceName}", true] = async(args, ct) => { string dataServiceName = args.dataServiceName; var builder = new QueryBuilder <DomainDataService>() .Filter(d => d.Property(p => p.Name).EqualTo(dataServiceName)) .Expand(d => d.Connection); var roleIds = await _authorisation.GetAdministratorRoleIdsAsync(); var queryResult = _dsdDataService.Query(new Query(builder.GetQuery()), BwfSystemUser, roleIds, string.Empty, _dshs.SystemToken, out var fault); var dataService = queryResult?.Records?.SingleOrDefault() as DomainDataService; if (dataService is null) { return(Response.AsJson(Enumerable.Empty <DbSchema>(), HttpStatusCode.BadRequest)); } var schemas = _sbRepository.GetWhere <DbSchema>(s => s.Connection.Name == dataService.Connection.Name); return(Response.AsJson(schemas)); }; Get[@"generatetemplate/{solutionName}", true] = async(args, ct) => { string solutionName = args.solutionName; var solution = await GetSolution(solutionName); return(await Task.Run(() => { var templateGenerator = new TemplateGenerator(); var baseDir = AppDomain.CurrentDomain.BaseDirectory; var zipPath = Path.Combine(baseDir, $"DownLoads\\{solutionName}"); var zipFile = templateGenerator.GenerateAllAndZip(solution, zipPath); var stream = new FileStream(zipFile, FileMode.Open); var response = new StreamResponse(() => stream, MimeTypes.GetMimeType(zipFile)); var fileName = Path.GetFileName(zipFile); var attachment = response.AsAttachment(fileName); return attachment; })); }; async Task <DataServiceSolution> GetSolution(string solutionName) { var builder = new QueryBuilder <DataServiceSolution>() .Expand(p => p.DataServices[0].Solution) .Expand(p => p.DataServices[0].Connection) .Expand(p => p.DataServices[0].Schemas) .Expand(p => p.DataServices[0].Schemas[0].Objects) .Expand(p => p.DataServices[0].Schemas[0].Objects[0].Properties) .Expand(p => p.DataServices[0].Schemas[0].References) .Expand(p => p.DataServices[0].Schemas[0].References[0].Properties) .Filter(d => d.Property(p => p.Name).EqualTo(solutionName)); var roleIds = await _authorisation.GetAdministratorRoleIdsAsync(); var queryResult = _dsdDataService.Query(new Query(builder.GetQuery()), BwfSystemUser, roleIds, string.Empty, _dshs.SystemToken, out var fault); var solution = queryResult?.Records?.SingleOrDefault() as DataServiceSolution; return(solution); } }
public DbConnectionRecordType(ISchemaBrowserRepository repository) : base() { _repository = repository; _utils = new SchemaBrowserUtils(); }