refactor kontor-schema by moving classes to seprate modules

This commit is contained in:
Thomas Peetz
2025-02-06 11:09:09 +01:00
committed by Thomas Peetz
parent 71ecfaff1f
commit 7dc18b10cb
8 changed files with 419 additions and 392 deletions
@@ -0,0 +1,7 @@
from enum import Enum
class ArgumentData(Enum):
EXPORT_TYPE = 'export_type'
DB_FILE = 'db_file'
DATA_TYPE = 'data_type'
DELETE_FIRST = 'delete_first'
@@ -1,6 +1,8 @@
import mariadb
from cement import Controller, ex
from kontor.controllers import ArgumentData
class Database(Controller):
class Meta:
@@ -24,16 +26,16 @@ class Database(Controller):
)
def export(self):
data = {
'db_file': 'data.json',
'export_type': 'JSON',
ArgumentData.DB_FILE: 'data.json',
ArgumentData.EXPORT_TYPE: 'JSON',
}
if self.app.pargs.db_file is not None:
data['db_file'] = self.app.pargs.db_file
data[ArgumentData.DB_FILE] = self.app.pargs.db_file
db = self.app.kontor_db
self.app.log.info(f"export DB to {data['db_file']} as {data['export_type']}")
results = db.export_db(data['export_type'], data['db_file'])
data['results'] = results
self.app.render(data, 'export_db.jinja2')
self.app.log.info(f"export DB to {data[ArgumentData.DB_FILE]} as {data[ArgumentData.EXPORT_TYPE]}")
results = db.export_db(data[ArgumentData.EXPORT_TYPE], data[ArgumentData.DB_FILE])
for key, value in results.items():
self.app.log.info(f"{key}: {value}")
@ex(
label='import',
@@ -51,16 +53,18 @@ class Database(Controller):
)
def import_cmd(self):
data = {
'db_file': 'data.json',
'data_type': 'JSON',
'delete_first': False,
ArgumentData.DB_FILE: 'data.json',
ArgumentData.DATA_TYPE: 'JSON',
ArgumentData.DELETE_FIRST: False,
}
if self.app.pargs.db_file is not None:
data['db_file'] = self.app.pargs.db_file
data[ArgumentData.DB_FILE] = self.app.pargs.db_file
if self.app.pargs.delete_first is not None:
data['delete_first'] = self.app.pargs.delete_first
data[ArgumentData.DELETE_FIRST] = self.app.pargs.delete_first
db = self.app.kontor_db
db.import_db(data['db_file'], data['delete_first'])
if data[ArgumentData.DELETE_FIRST]:
db.delete_entries()
db.import_db(data[ArgumentData.DB_FILE])
@ex(
help='check the db schema against MetaDataTable and MetaDataColumn'
@@ -1,5 +0,0 @@
Following tables were exported:
{% for key, value in results.items() %}
Table {{key}}: {{value}} entries
{% endfor %}