CHANGELOG.md 7.42 KB
Newer Older
1 2
# Changelog

Mike Ryan's avatar
Mike Ryan committed
3
All notable changes to this project will be documented in this file.
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 10
## [Unreleased]

11 12
## [0.7.0] - 2019-06-25

13
### Changed
14
- The former `Transformer` interface is now named `PropertyTransformer`, to distinguish it from the new `RecordTransformer` interface.
15 16 17
- Property transformer classes have been moved to the `Soong\Transformer\Property` namespace.
- The structure of sample task configurations has been changed to use an array of `RecordTransformer` instances under the `transform` key.
- Transformer construction has been moved from the `EtlTask` implementation to the `EtlCommand` implementation - the `transform` option for `EtlTask` now requires an array of `RecordTransformer` instances.
18 19
- `PropertyTransformer::transform()` no longer specifies the types of its argument and return value. Implementations should specify their specific return type, and validate the expected argument type.
- `Record::getProperty()` renamed to `getPropertyValue()`, `setProperty()` renamed to `setPropertyValue()`.
20 21
- Symfony Console dependency has been loosened to allow versions 3.4 through 4.x.
- Release checklist added to [CONTRIBUTING](CONTRIBUTING.md)
22 23 24

### Removed
- The `Property` and `PropertyFactory` interfaces and implementations have been removed - all code using properties now uses values directly, leaving type-checking to PHP. `property_factory` configuration options have accordingly been removed.
25

26
### Added
27
- The `RecordTransformer` interface has been added.
28
- The `PropertyMapper` record transformer class has been added.
29
- The `Copy` record transformer class has been added.
30
- The `--limit` option has been added to the `migrate` and `rollback` commands.
31
- Transformer exceptions added.
32

33
## [0.6.0] - 2019-05-01
34

35 36
### Changed
- `EtlTask` now accepts its extract, key_map, and load components as object instances rather than constructing them from configuration.
37
- `DataProperty` interface renamed to `Property`, and `DataRecord` interface renamed to `Record`.
38 39
- 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`.
40

41 42 43 44
### 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.
45
- `PropertyFactory` and `RecordFactory` interfaces/classes added for creation of `Property` and `Record` instances.
Mike Ryan's avatar
Mike Ryan committed
46
- Added basic console command tests.
47
- `property_factory` configuration option added to `EtlTask`, `LoaderBase`.
48 49
- `ExtractorException`, `KeyMapException`, and `LoaderException` classes added.
- Unit test for `Record` added.
50

Mike Ryan's avatar
Mike Ryan committed
51 52
## [0.5.3] - 2019-04-12

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

56
## [0.5.2] - 2019-04-05
57

58
### Changed
59
- `addTask` now takes an existing Task object instead of a class and configuration.
60
- Static create() methods removed from all components and constructors made public.
61 62
- 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
63
### Added
64 65
- `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.
66
- Commands now use `hassankhan/config` instead of custom YAML handling - configuration now can be YAML, JSON, or XML transparently (examples provided for each).
67
- `TaskPipeline` component for managing groups of tasks.
68
- `ComponentNotFound` and `DuplicateTask` exceptions added.
69
- Tests for `Extractor`, `KeyMap`, `Loader`, and `Task` components.
70
- Tests for `KeyMapLookup` component.
Mike Ryan's avatar
Mike Ryan committed
71
- Smoke test to make sure all provided examples keep working.
Mike Ryan's avatar
Mike Ryan committed
72

73 74 75
### Removed
- `isCompleted` method on `Task` - unneeded until we add dependencies.

Mike Ryan's avatar
Mike Ryan committed
76 77
## [0.4.0] - 2019-02-15

78 79
### Added
- `EtlTaskInterface::getLoader()`
80
- Tests for `Data` and `Transformer` components.
81 82

### Changed
83 84 85 86 87 88
- 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`
89 90
- `Interface` and `Trait` suffixes removed from all interfaces and traits.
- All interfaces moved into `Contracts` directory.
91 92 93 94 95 96 97 98
- All main components must now be created using `Class::create()` rather than `new`. This affects:
    - `DataPropertyInterface`
    - `DataRecordInterface`
    - `ExtractorInterface`
    - `KeyMapInterface`
    - `LoaderInterface`
    - `TaskInterface`
    - `TransformerInterface`
99 100 101
- Explicit component documentation pages have been removed in favor of Doxygen-generated documentation.
- Existing inline documentation has been cleaned up and expanded.

102 103 104 105
### Removed
- `KeyMapFactory`
- `MemoryKeyMap`

106 107
## [0.3.0] - 2019-02-05

108
### Added
109
- Added `getExtractor()` and `getAllTasks()` to task interfaces/implementations.
Mike Ryan's avatar
Mike Ryan committed
110
- Initial implementation of the `status` console command.
111
- All documentation moved into this repo, will be available on readthedocs.io.
112 113
- `DataPropertyInterface::isEmpty()`
- `DataRecordInterface::propertyExists()`
114

Mike Ryan's avatar
Mike Ryan committed
115 116
### Removed
- Removed subtask concept from task interfaces/implementations.
117
- Removed `CountableExtractorInterface`.
118

Mike Ryan's avatar
Mike Ryan committed
119
### Changed
120 121 122 123 124
- `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
125
- Added configuration key for hash algorithm.
126

127 128 129
### Fixed
- Hashing serialized keys needs to make sure values are always strings.

Mike Ryan's avatar
Mike Ryan committed
130 131 132 133 134 135 136 137
## [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.
138

139 140
[Unreleased]: https://gitlab.com/soongetl/soong/compare/0.7.0...master
[0.7.0]: https://gitlab.com/soongetl/soong/compare/0.6.0...0.7.0
141
[0.6.0]: https://gitlab.com/soongetl/soong/compare/0.5.3...0.6.0
Mike Ryan's avatar
Mike Ryan committed
142 143
[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
144
[0.4.0]: https://gitlab.com/soongetl/soong/compare/0.3.0...0.4.0
Mike Ryan's avatar
Mike Ryan committed
145
[0.3.0]: https://gitlab.com/soongetl/soong/compare/0.2.1...0.3.0
Mike Ryan's avatar
Mike Ryan committed
146 147
[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