Skip to content

Commit

Permalink
db: separate tables
Browse files Browse the repository at this point in the history
* Creates for every resource a separate metadata and id table in the database.
With this change export and import of one resource should be easier and
the access to seperate smaler tables are hopefully faster for big
datasets.

Co-Authored-by: Peter Weber <[email protected]>
  • Loading branch information
rerowep committed May 5, 2020
1 parent 58e7dff commit f79ebc8
Show file tree
Hide file tree
Showing 38 changed files with 169 additions and 25 deletions.
3 changes: 2 additions & 1 deletion rero_ils/modules/acq_accounts/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

from flask import current_app

from .models import AcqAccountIdentifier
from .models import AcqAccountIdentifier, AcqAccountMetadata
from ..acq_order_lines.api import AcqOrderLinesSearch
from ..api import IlsRecord, IlsRecordsIndexer, IlsRecordsSearch
from ..fetchers import id_fetcher
Expand Down Expand Up @@ -57,6 +57,7 @@ class AcqAccount(IlsRecord):
minter = acq_account_id_minter
fetcher = acq_account_id_fetcher
provider = AcqAccountProvider
model_cls = AcqAccountMetadata

@classmethod
def create(cls, data, id_=None, delete_pid=False,
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/acq_accounts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class AcqAccountIdentifier(RecordIdentifier):
Expand All @@ -33,3 +34,9 @@ class AcqAccountIdentifier(RecordIdentifier):
db.BigInteger().with_variant(db.Integer, 'sqlite'),
primary_key=True, autoincrement=True,
)


class AcqAccountMetadata(db.Model, RecordMetadataBase):
"""AcqAccount record metadata."""

__tablename__ = 'acq_account_metadata'
3 changes: 2 additions & 1 deletion rero_ils/modules/acq_invoices/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

from flask import current_app

from .models import AcquisitionInvoiceIdentifier
from .models import AcquisitionInvoiceIdentifier, AcquisitionInvoiceMetadata
from ..api import IlsRecord, IlsRecordsIndexer, IlsRecordsSearch
from ..fetchers import id_fetcher
from ..libraries.api import Library
Expand Down Expand Up @@ -57,6 +57,7 @@ class AcquisitionInvoice(IlsRecord):
minter = acq_invoice_id_minter
fetcher = acq_invoice_id_fetcher
provider = AcquisitionInvoiceProvider
model_cls = AcquisitionInvoiceMetadata

@classmethod
def create(cls, data, id_=None, delete_pid=False,
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/acq_invoices/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class AcquisitionInvoiceIdentifier(RecordIdentifier):
Expand All @@ -33,3 +34,9 @@ class AcquisitionInvoiceIdentifier(RecordIdentifier):
db.BigInteger().with_variant(db.Integer, 'sqlite'),
primary_key=True, autoincrement=True,
)


class AcquisitionInvoiceMetadata(db.Model, RecordMetadataBase):
"""AcquisitionInvoice record metadata."""

__tablename__ = 'acq_invoice_metadata'
3 changes: 2 additions & 1 deletion rero_ils/modules/acq_order_lines/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

from flask import current_app

from .models import AcqOrderLineIdentifier
from .models import AcqOrderLineIdentifier, AcqOrderLineMetadata
from ..api import IlsRecord, IlsRecordsIndexer, IlsRecordsSearch
from ..fetchers import id_fetcher
from ..minters import id_minter
Expand Down Expand Up @@ -55,6 +55,7 @@ class AcqOrderLine(IlsRecord):
minter = acq_order_line_id_minter
fetcher = acq_order_line_id_fetcher
provider = AcqOrderLineProvider
model_cls = AcqOrderLineMetadata

@classmethod
def create(cls, data, id_=None, delete_pid=False,
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/acq_order_lines/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class AcqOrderLineIdentifier(RecordIdentifier):
Expand All @@ -33,3 +34,9 @@ class AcqOrderLineIdentifier(RecordIdentifier):
db.BigInteger().with_variant(db.Integer, 'sqlite'),
primary_key=True, autoincrement=True,
)


class AcqOrderLineMetadata(db.Model, RecordMetadataBase):
"""AcqOrderLine record metadata."""

__tablename__ = 'acq_order_line_metadata'
3 changes: 2 additions & 1 deletion rero_ils/modules/acq_orders/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

from flask import current_app

from .models import AcqOrderIdentifier
from .models import AcqOrderIdentifier, AcqOrderMetadata
from ..acq_order_lines.api import AcqOrderLinesSearch
from ..api import IlsRecord, IlsRecordsIndexer, IlsRecordsSearch
from ..fetchers import id_fetcher
Expand Down Expand Up @@ -57,6 +57,7 @@ class AcqOrder(IlsRecord):
minter = acq_order_id_minter
fetcher = acq_order_id_fetcher
provider = AcqOrderProvider
model_cls = AcqOrderMetadata

@classmethod
def create(cls, data, id_=None, delete_pid=False,
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/acq_orders/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class AcqOrderIdentifier(RecordIdentifier):
Expand All @@ -33,3 +34,9 @@ class AcqOrderIdentifier(RecordIdentifier):
db.BigInteger().with_variant(db.Integer, 'sqlite'),
primary_key=True, autoincrement=True,
)


class AcqOrderMetadata(db.Model, RecordMetadataBase):
"""AcqOrder record metadata."""

__tablename__ = 'acq_order_metadata'
3 changes: 2 additions & 1 deletion rero_ils/modules/budgets/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

from functools import partial

from .models import BudgetIdentifier
from .models import BudgetIdentifier, BudgetMetadata
from ..acq_accounts.api import AcqAccountsSearch
from ..api import IlsRecord, IlsRecordsIndexer, IlsRecordsSearch
from ..fetchers import id_fetcher
Expand Down Expand Up @@ -55,6 +55,7 @@ class Budget(IlsRecord):
minter = budget_id_minter
fetcher = budget_id_fetcher
provider = BudgetProvider
model_cls = BudgetMetadata

def get_number_of_acq_accounts(self):
"""Get number of acq accounts."""
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/budgets/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class BudgetIdentifier(RecordIdentifier):
Expand All @@ -33,3 +34,9 @@ class BudgetIdentifier(RecordIdentifier):
db.BigInteger().with_variant(db.Integer, 'sqlite'),
primary_key=True, autoincrement=True,
)


class BudgetMetadata(db.Model, RecordMetadataBase):
"""Budget record metadata."""

__tablename__ = 'budget_metadata'
3 changes: 2 additions & 1 deletion rero_ils/modules/circ_policies/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

from elasticsearch_dsl import Q

from .models import CircPolicyIdentifier
from .models import CircPolicyIdentifier, CircPolicyMetadata
from ..api import IlsRecord, IlsRecordsIndexer, IlsRecordsSearch
from ..fetchers import id_fetcher
from ..libraries.api import Library
Expand Down Expand Up @@ -58,6 +58,7 @@ class CircPolicy(IlsRecord):
minter = circ_policy_id_minter
fetcher = circ_policy_id_fetcher
provider = CircPolicyProvider
model_cls = CircPolicyMetadata

def extended_validation(self, **kwargs):
"""Validate record against schema.
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/circ_policies/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class CircPolicyIdentifier(RecordIdentifier):
Expand All @@ -33,3 +34,9 @@ class CircPolicyIdentifier(RecordIdentifier):
db.BigInteger().with_variant(db.Integer, 'sqlite'),
primary_key=True, autoincrement=True,
)


class CircPolicyMetadata(db.Model, RecordMetadataBase):
"""CircPolicy record metadata."""

__tablename__ = 'circ_policy_metadata'
3 changes: 2 additions & 1 deletion rero_ils/modules/documents/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from invenio_circulation.search.api import search_by_pid
from invenio_search.api import RecordsSearch

from .models import DocumentIdentifier
from .models import DocumentIdentifier, DocumentMetadata
from .utils import edition_format_text, publication_statement_text, \
series_format_text, title_format_text_head
from ..acq_order_lines.api import AcqOrderLinesSearch
Expand Down Expand Up @@ -62,6 +62,7 @@ class Document(IlsRecord):
minter = document_id_minter
fetcher = document_id_fetcher
provider = DocumentProvider
model_cls = DocumentMetadata

def is_available(self, view_code):
"""Get availability for document."""
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/documents/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class DocumentIdentifier(RecordIdentifier):
Expand All @@ -33,3 +34,9 @@ class DocumentIdentifier(RecordIdentifier):
db.BigInteger().with_variant(db.Integer, 'sqlite'),
primary_key=True, autoincrement=True,
)


class DocumentMetadata(db.Model, RecordMetadataBase):
"""Document record metadata."""

__tablename__ = 'document_metadata'
4 changes: 2 additions & 2 deletions rero_ils/modules/holdings/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
from invenio_search.api import RecordsSearch
from jinja2 import Template

from .models import HoldingIdentifier
from .models import HoldingIdentifier, HoldingMetadata
from ..api import IlsRecord, IlsRecordsIndexer
from ..documents.api import Document
from ..errors import MissingRequiredParameterError
Expand Down Expand Up @@ -74,7 +74,7 @@ class Holding(IlsRecord):
minter = holding_id_minter
fetcher = holding_id_fetcher
provider = HoldingProvider
# model_cls = HoldingMetadata
model_cls = HoldingMetadata

def delete_from_index(self):
"""Delete record from index."""
Expand Down
9 changes: 4 additions & 5 deletions rero_ils/modules/holdings/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier

# from invenio_records.models import RecordMetadataBase
from invenio_records.models import RecordMetadataBase


class HoldingIdentifier(RecordIdentifier):
Expand All @@ -37,7 +36,7 @@ class HoldingIdentifier(RecordIdentifier):
)


# class HoldingMetadata(db.Model, RecordMetadataBase):
# """Holding record metadata."""
class HoldingMetadata(db.Model, RecordMetadataBase):
"""Holding record metadata."""

# __tablename__ = 'holdings_metadata'
__tablename__ = 'holding_metadata'
3 changes: 2 additions & 1 deletion rero_ils/modules/item_types/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from elasticsearch_dsl import Q
from flask_babelex import gettext as _

from .models import ItemTypeIdentifier
from .models import ItemTypeIdentifier, ItemTypeMetadata
from ..api import IlsRecord, IlsRecordsIndexer, IlsRecordsSearch
from ..circ_policies.api import CircPoliciesSearch
from ..fetchers import id_fetcher
Expand Down Expand Up @@ -59,6 +59,7 @@ class ItemType(IlsRecord):
minter = item_type_id_minter
fetcher = item_type_id_fetcher
provider = ItemTypeProvider
model_cls = ItemTypeMetadata

def extended_validation(self, **kwargs):
"""Validate record against schema.
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/item_types/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class ItemTypeIdentifier(RecordIdentifier):
Expand All @@ -33,3 +34,9 @@ class ItemTypeIdentifier(RecordIdentifier):
db.BigInteger().with_variant(db.Integer, 'sqlite'),
primary_key=True, autoincrement=True,
)


class ItemTypeMetadata(db.Model, RecordMetadataBase):
"""ItemType record metadata."""

__tablename__ = 'item_type_metadata'
3 changes: 2 additions & 1 deletion rero_ils/modules/items/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
from invenio_i18n.ext import current_i18n
from invenio_search import current_search

from .models import ItemIdentifier, ItemStatus
from .models import ItemIdentifier, ItemMetadata, ItemStatus
from ..api import IlsRecord, IlsRecordError, IlsRecordsIndexer, \
IlsRecordsSearch
from ..circ_policies.api import CircPolicy
Expand Down Expand Up @@ -156,6 +156,7 @@ class Item(IlsRecord):
minter = item_id_minter
fetcher = item_id_fetcher
provider = ItemProvider
model_cls = ItemMetadata

statuses = {
'ITEM_ON_LOAN': 'on_loan',
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/items/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class ItemIdentifier(RecordIdentifier):
Expand All @@ -36,6 +37,12 @@ class ItemIdentifier(RecordIdentifier):
)


class ItemMetadata(db.Model, RecordMetadataBase):
"""Item record metadata."""

__tablename__ = 'item_metadata'


class ItemStatus(object):
"""Class holding all availabe circulation item statuses."""

Expand Down
3 changes: 2 additions & 1 deletion rero_ils/modules/libraries/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from dateutil import parser
from dateutil.rrule import FREQNAMES, rrule

from .models import LibraryIdentifier
from .models import LibraryIdentifier, LibraryMetadata
from ..api import IlsRecord, IlsRecordsIndexer, IlsRecordsSearch
from ..fetchers import id_fetcher
from ..locations.api import LocationsSearch
Expand Down Expand Up @@ -65,6 +65,7 @@ class Library(IlsRecord):
minter = library_id_minter
fetcher = library_id_fetcher
provider = LibraryProvider
model_cls = LibraryMetadata

@property
def online_location(self):
Expand Down
7 changes: 7 additions & 0 deletions rero_ils/modules/libraries/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from invenio_db import db
from invenio_pidstore.models import RecordIdentifier
from invenio_records.models import RecordMetadataBase


class LibraryIdentifier(RecordIdentifier):
Expand All @@ -33,3 +34,9 @@ class LibraryIdentifier(RecordIdentifier):
db.BigInteger().with_variant(db.Integer, 'sqlite'),
primary_key=True, autoincrement=True,
)


class LibraryMetadata(db.Model, RecordMetadataBase):
"""Library record metadata."""

__tablename__ = 'library_metadata'
Loading

0 comments on commit f79ebc8

Please sign in to comment.