CHANGELOG.md 5.76 KB
Newer Older
Mike Ryan's avatar
Mike Ryan committed
1 2
# Changelog

Mike Ryan's avatar
Mike Ryan committed
3
All notable changes to this project will be documented in this file.
Mike Ryan's avatar
Mike Ryan committed
4 5 6

Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) principles.

Mike Ryan's avatar
Mike Ryan committed
7 8
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). For major version 0, we will increment the minor version for backward-incompatible changes.

9
## [0.6.0] - 2019-04-12
10

11 12
### Changed
- `EtlTask` now accepts its extract, key_map, and load components as object instances rather than constructing them from configuration.
13
- `DataProperty` interface renamed to `Property`, and `DataRecord` interface renamed to `Record`.
14 15
- Derivatives of `ExtractorBase` now must accept a `record_factory` configuration option, which is an instance of `RecordFactory`.
- `EtlTask` replaced the string `record_class` with `RecordFactory` instance `record_factory`.
16

17 18 19 20
### Added
- The `Filter` interface has been added, to determine whether a DataRecord should be processed.
- The `Select` filter has been added, allowing for filtering by comparing DataRecord properties to values using PHP comparison operators.
- The `--select` option has been added to the `migrate` command, allow for ad-hoc filtering of extracted data at runtime.
21
- `PropertyFactory` and `RecordFactory` interfaces/classes added for creation of `Property` and `Record` instances.
Mike Ryan's avatar
Mike Ryan committed
22
- Added basic console command tests.
23
- `property_factory` configuration option added to `EtlTask`, `LoaderBase`.
24 25
- `ExtractorException`, `KeyMapException`, and `LoaderException` classes added.
- Unit test for `Record` added.
26

Mike Ryan's avatar
Mike Ryan committed
27 28
## [0.5.3] - 2019-04-12

29 30 31
### Changed
- Things are now configured to generate the API documentation using Doxygen on readthedocs - the generated docs are no longer kept in the repo.

32
## [0.5.2] - 2019-04-05
Mike Ryan's avatar
Mike Ryan committed
33

34
### Changed
35
- `addTask` now takes an existing Task object instead of a class and configuration.
36
- Static create() methods removed from all components and constructors made public.
37 38
- Static methods removed from `Task` component and moved to non-static methods on the new `TaskPipeline` component: `addTask()`, `getTask()`, `getAllTasks()`.

Mike Ryan's avatar
Mike Ryan committed
39
### Added
40 41
- `ConfigurableComponent` interface added, and all configurable component interfaces inherit from it.
- `OptionsResolverComponent` added implementing `ConfigurableComponent` using `Symfony\OptionsResolver` - this is now the base class for all configurable components. Any such components adding configuration options to their parent class must implement `optionDefinitions()` to defined them.
42
- Commands now use `hassankhan/config` instead of custom YAML handling - configuration now can be YAML, JSON, or XML transparently (examples provided for each).
43
- `TaskPipeline` component for managing groups of tasks.
44
- `ComponentNotFound` and `DuplicateTask` exceptions added.
45
- Tests for `Extractor`, `KeyMap`, `Loader`, and `Task` components.
Mike Ryan's avatar
Mike Ryan committed
46
- Tests for `KeyMapLookup` component.
Mike Ryan's avatar
Mike Ryan committed
47
- Smoke test to make sure all provided examples keep working.
Mike Ryan's avatar
Mike Ryan committed
48

49 50 51
### Removed
- `isCompleted` method on `Task` - unneeded until we add dependencies.

Mike Ryan's avatar
Mike Ryan committed
52 53
## [0.4.0] - 2019-02-15

54 55
### Added
- `EtlTaskInterface::getLoader()`
56
- Tests for `Data` and `Transformer` components.
57 58

### Changed
59 60 61 62 63 64
- DBAL and Csv implementations have been moved:
    - `Soong\Csv\Extractor` -> `Soong\Extractor\Csv`
    - `Soong\Csv\Loader` -> `Soong\Loader\Csv`
    - `Soong\DBAL\Extractor` -> `Soong\Extractor\DBAL`
    - `Soong\DBAL\KeyMap` -> `Soong\KeyMap\DBAL`
    - `Soong\DBAL\Loader` -> `Soong\Extractor\Loader`
65 66
- `Interface` and `Trait` suffixes removed from all interfaces and traits.
- All interfaces moved into `Contracts` directory.
67 68 69 70 71 72 73 74
- All main components must now be created using `Class::create()` rather than `new`. This affects:
    - `DataPropertyInterface`
    - `DataRecordInterface`
    - `ExtractorInterface`
    - `KeyMapInterface`
    - `LoaderInterface`
    - `TaskInterface`
    - `TransformerInterface`
75 76 77
- Explicit component documentation pages have been removed in favor of Doxygen-generated documentation.
- Existing inline documentation has been cleaned up and expanded.

78 79 80 81
### Removed
- `KeyMapFactory`
- `MemoryKeyMap`

82 83
## [0.3.0] - 2019-02-05

Mike Ryan's avatar
Mike Ryan committed
84
### Added
85
- Added `getExtractor()` and `getAllTasks()` to task interfaces/implementations.
Mike Ryan's avatar
Mike Ryan committed
86
- Initial implementation of the `status` console command.
87
- All documentation moved into this repo, will be available on readthedocs.io.
88 89
- `DataPropertyInterface::isEmpty()`
- `DataRecordInterface::propertyExists()`
Mike Ryan's avatar
Mike Ryan committed
90

Mike Ryan's avatar
Mike Ryan committed
91 92
### Removed
- Removed subtask concept from task interfaces/implementations.
93
- Removed `CountableExtractorInterface`.
Mike Ryan's avatar
Mike Ryan committed
94

Mike Ryan's avatar
Mike Ryan committed
95
### Changed
96 97 98 99 100
- `DataRecordInterface::setProperty()` no longer accepts null values (only property objects with null values).
- `DataRecordInterface::getProperty()` no longer returns null values (only property objects with null values).
- `TransformerInterface::transform()` no longer accepts or returns null values (only property objects with null values).
- The `$configuration` parameter to `TransformerInterface::transform()` has been removed - configuration should be passed in the constructor instead.
- SHA256 for key hashing in `KeyMapBase`.
Mike Ryan's avatar
Mike Ryan committed
101
- Added configuration key for hash algorithm.
Mike Ryan's avatar
Mike Ryan committed
102

103 104 105
### Fixed
- Hashing serialized keys needs to make sure values are always strings.

Mike Ryan's avatar
Mike Ryan committed
106 107 108 109 110 111 112 113
## [0.2.1] - 2019-01-24

### Changed
- Merged all the repos back into one for ease of development.

## [0.1.0] - 2019-01-17

Initial release on Packagist.
Mike Ryan's avatar
Mike Ryan committed
114

115 116
[Unreleased]: https://gitlab.com/soongetl/soong/compare/0.6.0...master
[0.6.0]: https://gitlab.com/soongetl/soong/compare/0.5.3...0.6.0
Mike Ryan's avatar
Mike Ryan committed
117 118
[0.5.3]: https://gitlab.com/soongetl/soong/compare/0.5.2...0.5.3
[0.5.2]: https://gitlab.com/soongetl/soong/compare/0.4.0...0.5.2
Mike Ryan's avatar
Mike Ryan committed
119
[0.4.0]: https://gitlab.com/soongetl/soong/compare/0.3.0...0.4.0
Mike Ryan's avatar
Mike Ryan committed
120
[0.3.0]: https://gitlab.com/soongetl/soong/compare/0.2.1...0.3.0
Mike Ryan's avatar
Mike Ryan committed
121 122
[0.2.1]: https://gitlab.com/soongetl/soong/compare/0.1.0...0.2.1
[0.1.0]: https://gitlab.com/soongetl/soong/tree/0.1.0