Spike: MODKBEKBJ-674 Review current database tables structure

Spike: MODKBEKBJ-674 Review current database tables structure

https://folio-org.atlassian.net/browse/MODKBEKBJ-674

Purpose:

In a scope of this spike we need to review database structure, remove unused columns, possibly reorganize tables.

Not full mod-kb-ebsco-java database structure:



Unused columns and tables:

Providers, Packages, Titles, Resources.

All this objects we retrieve from EBSCO HoldingsIQ. And module did not store them until we add tag to one of them.

- Module storing records if they have tags, if tags list is empty, module will delete it.

- Module retrieve records by tags. And then request them by id from HoldingsIQ.

It looks like this 4 tables are needed just for tags. And we using only id column. While other columns (like name, content-type) are inactive.

Table Refactoring:

I suggest to remove providers, packages, titles, resources tables. Because we already have record_id and record_type columns in tags table.
One addition is to include credentials_id column to tags



Code Refactoring:

https://folio-org.atlassian.net/browse/MSEARCH-429

We use a lot of joins to retrieve records by tags. But now we can retrieve records from one table.

  • Write databaseChangeLog script to edit database structure

  • Delete repositories related removed tables PackageRepository, ResourceRepository, TitleRepository, ProviderRepository

  • Implement logic in TagsRepository to retrieve records from tags table by TagFilter

  • Unit tests refactoring 

Changes advantages:

  • Remove unused data, simplify database structure

  • Get rid of code duplications, so searching by tag logic will be in the one class. Instead of 4 same classes

  • Will stop using SQL Joiners to improve module response time when searching by tags.