protected override void Validate() { var invalidProperties = new List <string>(); var columnNames = ColumnNames; foreach (var property in DbRequest.Properties()) { var propertyName = Database.ToDbCase(property.Name); if (columnNames.Contains(propertyName)) { if (!Columns.Any(q => q.IsReadonly && q.ColumnName == propertyName)) { DbRequest[propertyName] = property.Value; DbToJsonName[propertyName] = propertyName; } else { Response.AddError(DbToJsonName[property.Name], Database.ErrorMessages.ReadonlyProperty); } } else { invalidProperties.Add(property.Name); } } if (invalidProperties.Count == 0) { return; } Response.SetBadRequestError(Database.ErrorMessages.InvalidProperties(string.Join(", ", invalidProperties))); Response.Continue = false; }
void IResultWriter.AfterCloseReader(int affectedRows) { var duration = Stopwatch.GetTimestamp() - _beforeExecuteReaderTimestamp; var now = LocalTime.Default.Now; var affected = affectedRows >= 0 ? $"{affectedRows} row(s) affected." : null; var message = $"Command[{_commandCount - 1}] completed in {StopwatchTimeSpan.ToString(duration, 3)} seconds. {affected}"; _addInfoMessage(new InfoMessage(now, InfoMessageSeverity.Verbose, null, message)); if (_query != null) { var directory = _fileName != null?Path.GetDirectoryName(_fileName) : Path.GetTempPath(); var results = _query.Results.EmptyIfNull().Zip(_results, ToResult).ToReadOnlyCollection(); var query = new DbRequest(directory, _query.Name, _query.Using, _query.Namespace, _commandText, 0, _parameters, results); var queryBuilder = new DbRequestBuilder(query); var csharpSourceCode = queryBuilder.Build(); var path = Path.Combine(query.Directory, $"{query.Name}.generated.cs"); File.WriteAllText(path, csharpSourceCode, Encoding.UTF8); _query = null; _parameters = null; _commandText = null; _results = null; } }
public async Task <IHttpActionResult> CallRequestRegistration([FromUri] string param1, [FromUri] string param2, [FromBody] string param3) { try { var fileText = await Request.Content.ReadAsStringAsync(); if (!CheckingHelper <string> .CheckForNullEmptyWhiteSpace(fileText)) { return(ResponseMessage(RequiredParameterIsLost("Текст файла"))); } FileController.FileController.SaveFile(param1, fileText, Settings.Instance.BasePath); var dbRequest = new DbRequest(); dbRequest.InsertNewFileInfo(param2, param1); var response = new BaseStringResponse() { Error = false, Message = "Запрос выполнен успешно", Response = null }; var resultJson = Serializer.Serialize(response); var result = new HttpResponseMessage(System.Net.HttpStatusCode.OK) { Content = new StringContent(resultJson, Encoding.UTF8, "application/json") }; return(ResponseMessage(result)); } catch (Exception exc) { return(ResponseMessage(RequestError(exc.Message))); } }
public IHttpActionResult GetCallState([FromBody] FileNames param1) { try { if (!CheckingHelper <FileNames> .CheckForNull(param1)) { return(ResponseMessage(RequiredParameterIsLost("Names"))); } var callStates = new List <CallState>(); var dbRequest = new DbRequest(); callStates = dbRequest.GetCallStates(param1.Files); var response = new BaseResponse <CallState>() { Error = false, Message = "Запрос выполнен успешно", Response = callStates }; var resultJson = Serializer.Serialize(response); var result = new HttpResponseMessage(System.Net.HttpStatusCode.OK) { Content = new StringContent(resultJson, Encoding.UTF8, "application/json") }; return(ResponseMessage(result)); } catch (Exception exc) { LogWriter.Add($"{exc.ToString()} {exc.InnerException.ToString()}"); return(ResponseMessage(RequestError(exc.Message))); } }
public string GetHubs(string value) { string hubs = string.Empty; try { DbRequest request = new DbRequest(); request.isSelectQuery = true; request.Query = "SELECT hub_code FROM OPN_HUBS"; DbResponse response = Database_Access.Execute_Db_Query(request); if (null != response) { if (null != response.dataTable) { response.dataTable.Rows.Cast <DataRow>().ToList().ForEach(row => { hubs = hubs + "," + Convert.ToString(row[0]); }); } } } catch (Exception ex) { hubs = "ERROR" + "," + ex.Message; hubs = hubs + "," + ex.StackTrace; } return(hubs); }
void IResultWriter.AfterCloseReader(int affectedRows) { var duration = Stopwatch.GetTimestamp() - _beforeExecuteReaderTimestamp; var header = StopwatchTimeSpan.ToString(duration, 3); var stringBuilder = new StringBuilder(); stringBuilder.Append($"Command[{_commandCount - 1}] completed."); if (affectedRows >= 0) { stringBuilder.Append($" {affectedRows} row(s) affected."); } var message = stringBuilder.ToString(); _addInfoMessage(InfoMessageFactory.Create(InfoMessageSeverity.Verbose, header, message)); if (_query != null) { var directory = _fileName != null?Path.GetDirectoryName(_fileName) : Path.GetTempPath(); var results = _query.Results.EmptyIfNull().Zip(_results, ToResult).ToReadOnlyList(); var query = new DbRequest(directory, _query.Name, _query.Using, _query.Namespace, _commandText, 0, _parameters, results); var queryBuilder = new DbRequestBuilder(query); var csharpSourceCode = queryBuilder.Build(); var path = Path.Combine(query.Directory, $"{query.Name}.generated.cs"); File.WriteAllText(path, csharpSourceCode, Encoding.UTF8); _query = null; _parameters = null; _commandText = null; _results = null; } }
protected override void Validate() { var columnNames = Columns.Where(q => q.IsRequired).Select(s => s.ColumnName); foreach (var property in DbRequest.Properties()) { if (columnNames.Contains(property.Name) && string.IsNullOrWhiteSpace(property.Value <string>())) { Response.AddError(DbToJsonName[property.Name], Database.ErrorMessages.Required); } } }
/// <summary> /// Получить id всех потомков /// </summary> /// <param name="db"></param> /// <param name="req"></param> /// <returns></returns> private IList <int> GetChildsIds(DbContext db, DbRequest req) { var childs = db.Requests.Where(o => o.ParentId == req.Id); var result = childs.Select(o => o.Id).ToList(); foreach (var childReq in childs) { result.AddRange(GetChildsIds(db, childReq)); } return(result); }
/// <summary> /// Проверка на возможность закрытия задачи /// </summary> /// <param name="db">Соединение с базой</param> /// <param name="req">Проверяемая задача</param> /// <returns></returns> private bool CanComplete(DbContext db, DbRequest req) { var checkedIds = GetChildsIds(db, req); //checkedIds.Add(req.Id); //Если в подзадачах есть хоть одна задача со статусом назначена, закрывать нельзя return(!db.Requests.Where(o => checkedIds.Contains(o.Id)).Any(o => o.Status == (int)Models.Enums.Statuses.Assigned)); //return !(req.InverseParent.Any(o => o.Status == (int)Models.Enums.Statuses.Assigned) //&& req.InverseParent.Select(o => CanComplete(db, o.Id)).Any(o => o == false)); //|| db.Requests.Where(o => checkedIds.Contains(o.Id)).Any(o => o.Status == (int)Models.Enums.Statuses.Assigned)); }
private void CompleteRequest(DbContext db, DbRequest req) { if (req.Status != (int)Models.Enums.Statuses.Completed) { req.EndDate = DateTime.Now; req.Status = (int)Models.Enums.Statuses.Completed; } var childs = db.Requests.Where(o => o.ParentId == req.Id); foreach (var childReq in childs) { CompleteRequest(db, childReq); } }
protected override void Validate() { var columnNames = Columns.Where(q => q.IsPrimaryKey).Select(s => s.ColumnName); foreach (var columnName in columnNames) { if (!DbRequest.ContainsKey(columnName)) { Response.AddError(DbToJsonName[columnName], Database.ErrorMessages.MissingProperty); Response.Continue = false; } else if (string.IsNullOrEmpty(DbRequest[columnName].Value <string>())) { Response.AddError(DbToJsonName[columnName], Database.ErrorMessages.Required); } } }
public async Task <IActionResult> GetDatabaseDetailAsync([FromBody] DbRequest request) { Logger?.LogDebug("'{0}' has been invoked", nameof(GetDatabaseDetailAsync)); var response = new SingleResponse <DatabaseDetail>(); try { response.Model = await DbService.GetDatabaseDetailAsync(request.Name); } catch (Exception ex) { response.SetError(ex, Logger); } return(response.ToHttpResponse()); }
private Request GetRequest(DbRequest obj) { return(new Request { Id = obj.Id, ParentId = obj.ParentId, Name = obj.Name, Comment = obj.Comment, Performers = obj.Performers, CreateDate = obj.CreateDate, StartDate = obj.StartDate, EndDate = obj.EndDate, Deadline = obj.Deadline, Status = (Models.Enums.Statuses)obj.Status, //ParentName = obj.Parent != null ? obj.Parent.Name : null, //ChildsNames = obj.InverseParent.Select(o => o.Name).ToList(), }); }
public async Task TestGetDatabaseDetailAsync() { // Arrange var logger = LoggingHelper.GetLogger <DocumentationController>(); var hostingEnvironment = HostingEnvironmentMocker.GetHostingEnvironment(); var apiConfig = new ApiConfig(); var dbService = new DbService(hostingEnvironment, apiConfig); var controller = new DocumentationController(logger, dbService); var request = new DbRequest { Name = "OnlineStore" }; // Act var response = await controller.GetDatabaseDetailAsync(request) as ObjectResult; var value = response.Value as ISingleResponse <DatabaseDetail>; // Assert Assert.False(value.DidError); }
public async Task TestGetTableAsync() { // Arrange var hostingEnvironment = HostingEnvironmentMocker.GetMockHostingEnvironment(); var apiConfig = new ApiConfig(); var logger = LoggerMocker.GetLogger <DbController>(); var dbService = new DbService(hostingEnvironment, apiConfig); var controller = new DbController(logger, dbService); var request = new DbRequest { Name = "Store", Table = "Sales.Order" }; // Act var response = await controller.GetTableAsync(request) as ObjectResult; var value = response.Value as ISingleResponse <ITable>; // Assert Assert.False(value.DidError); }
public async Task <DbResponse <TOut[]> > ExecuteStoredProcedure <TOut>(DbRequest request) { _logger.Information("Executing DB request {@request}", request); try { using (var connection = _connectionFactory.Create(Constants.DatabaseNames.MsSql)) { var executor = new SpExecutor(connection); var result = (await executor.Execute <TOut>(request.ProcedureName, request.Parameter)) .ToArray(); _logger.Information("DB response {@response}", result); return(request.Ok(result)); } } catch (Exception e) { _logger.Error(e, "Error occured during executing DB request {@request}", request); return(request.Fail <TOut[]>(e)); } }
public async Task TestEditDescriptionAsync() { // Arrange var hostingEnvironment = HostingEnvironmentMocker.GetHostingEnvironment(); var apiConfig = new ApiConfig(); var dbService = new DbService(hostingEnvironment, apiConfig); var logger = LoggingHelper.GetLogger <DocumentationController>(); var controller = new DocumentationController(logger, dbService); var request = new DbRequest { Name = "OnlineStore", Table = "Warehouse.Product", Type = "table", Description = "Products catalog (unit tests)" }; // Act var response = await controller.EditDescriptionAsync(request) as ObjectResult; var value = response.Value as ISingleResponse <EditDescription>; // Assert Assert.False(value.DidError); }
public async Task <IActionResult> EditDescriptionAsync([FromBody] DbRequest request) { Logger?.LogDebug("'{0}' has been invoked", nameof(EditDescriptionAsync)); var response = new SingleResponse <EditDescription>(); try { var db = await DbService.GetDatabaseAsync(request.Name); var databaseFactory = new SqlServerDatabaseFactory { DatabaseImportSettings = await DbService.GetDatabaseImportSettingsAsync(request.Name) }; if (request.Type == Tokens.TABLE) { var table = db.FindTable(request.Table); if (string.IsNullOrEmpty(request.Column)) { databaseFactory.AddOrUpdateExtendedProperty(table, Tokens.MS_DESCRIPTION, request.FixedDescription); table.Description = request.Description; } else { var column = table.Columns.First(item => item.Name == request.Column); databaseFactory.AddOrUpdateExtendedProperty(table, column, Tokens.MS_DESCRIPTION, request.FixedDescription); column.Description = request.Description; } } else if (request.Type == Tokens.VIEW) { var view = db.FindView(request.View); if (string.IsNullOrEmpty(request.Column)) { databaseFactory.AddOrUpdateExtendedProperty(view, Tokens.MS_DESCRIPTION, request.FixedDescription); view.Description = request.Description; } else { var column = view.Columns.First(item => item.Name == request.Column); databaseFactory.AddOrUpdateExtendedProperty(view, view.Columns.First(item => item.Name == request.Column), Tokens.MS_DESCRIPTION, request.FixedDescription); column.Description = request.Description; } } await DbService.SerializeAsync(db); await DbService.SerializeAsync(databaseFactory.DatabaseImportSettings); } catch (Exception ex) { response.SetError(ex, Logger); } return(response.ToHttpResponse()); }
public DbRequestBuilder(DbRequest request) { Assert.IsNotNull(request); _request = request; }
public void Setup() { RequestsScripts = File.ReadAllText(DbRequest.Requests()).Split(new string[] { "GO\r\n", "GO ", "GO\t" }, StringSplitOptions.RemoveEmptyEntries); }
public DbRequestBuilder(DbRequest request) { ArgumentNullException.ThrowIfNull(request); _request = request; }