private ILogViewerQuery ConvertFromDto(LogViewerQueryDto dto)
        {
            var factory = new LogViewerQueryModelFactory();
            var entity  = factory.BuildEntity(dto);

            return(entity);
        }
            public LogViewerQueryDto BuildDto(ILogViewerQuery entity)
            {
                var dto = new LogViewerQueryDto {
                    Name = entity.Name, Query = entity.Query, Id = entity.Id
                };

                return(dto);
            }
            public ILogViewerQuery BuildEntity(LogViewerQueryDto dto)
            {
                var logViewerQuery = new LogViewerQuery(dto.Name, dto.Query)
                {
                    Id = dto.Id,
                };

                return(logViewerQuery);
            }
    protected override void PersistUpdatedItem(ILogViewerQuery entity)
    {
        entity.UpdatingEntity();

        var exists = Database.ExecuteScalar <int>(
            $"SELECT COUNT(*) FROM {Constants.DatabaseSchema.Tables.LogViewerQuery} WHERE name = @name AND id <> @id",
            new { name = entity.Name, id = entity.Id });

        // ensure there is no other log query with the same name on another entity
        if (exists > 0)
        {
            throw new DuplicateNameException($"The log query name '{entity.Name}' is already used");
        }

        var factory           = new LogViewerQueryModelFactory();
        LogViewerQueryDto dto = factory.BuildDto(entity);

        Database.Update(dto);
    }
    protected override void PersistNewItem(ILogViewerQuery entity)
    {
        var exists = Database.ExecuteScalar <int>(
            $"SELECT COUNT(*) FROM {Constants.DatabaseSchema.Tables.LogViewerQuery} WHERE name = @name",
            new { name = entity.Name });

        if (exists > 0)
        {
            throw new DuplicateNameException($"The log query name '{entity.Name}' is already used");
        }

        entity.AddingEntity();

        var factory           = new LogViewerQueryModelFactory();
        LogViewerQueryDto dto = factory.BuildDto(entity);

        var id = Convert.ToInt32(Database.Insert(dto));

        entity.Id = id;
    }