Context
TermSqlIndex is still the only implementation of LabelConflictFinder that is used to find conflicts in labels and descriptions when creating properties and items, that is used in few places such as LabelUniquenessValidator.
Problem
We will not be able to stop writing to both term stores before we provide an implementation that looks up possible conflicts in the new store.
Solution
Provide a new means (interfaces + implementations) that allows writing uniqueness validators using the new store
Check if there are indexes on new tables to support this.
Todo
- allow validating on ChangeOpResult for optimized validation on only changing parts patch for review
- add ChangeOpFingerprint and ChangeOpFingerprintResult to allow identifying and attaching validators to only fingerprint changes patch for review
- use ChangeOpFingerprint everywhere to wrap change ops to terms patch for review
- wire up PrefetchingItemTermLookup
- add implementation for detecting label and label+descripton collisions patch for review
- add validator implementations and wire them up when writing to new store (migration values anything other than MIGRATE_OLD) patch for review
- fix SingleEntitySourceServices::getPrefetchingTermLookup to respect item terms migration stages WIP patch
- investigate the usage of SingleEntitySourceServices::getTermSearchInteractorFactory and, if necessary, update it to respect property and item term migration stages
- change SpecialNewEntity so that it uses ChangeOp instead of creating an entity and saving it directly using EditEntity.
- call ChangeOpResult::validate in EditEntity right after obtaining it patch for review