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

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

            var exists = Database.ExecuteScalar <int>($"SELECT COUNT(*) FROM {Core.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();
            var dto     = factory.BuildDto(entity);

            Database.Update(dto);
        }
        protected override void PersistNewItem(ILogViewerQuery entity)
        {
            var exists = Database.ExecuteScalar <int>($"SELECT COUNT(*) FROM {Core.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();
            var dto     = factory.BuildDto(entity);

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

            entity.Id = id;
        }