REPFiles: Add Scenarios and 'pamhyr_id' and update DB to 0.0.14.

scenarios
Pierre-Antoine Rouby 2024-07-22 14:16:42 +02:00
parent 4271fbb85f
commit 9c9fcc3dd8
3 changed files with 36 additions and 20 deletions

View File

@ -22,7 +22,6 @@ from tools import trace, timer
from Model.Tools.PamhyrDB import SQLSubModel
from Model.Except import NotImplementedMethodeError
from Model.Scenario import Scenario

View File

@ -22,31 +22,24 @@ from tools import trace, timer
from Model.Tools.PamhyrDB import SQLSubModel
from Model.Except import NotImplementedMethodeError
from Model.Scenario import Scenario
class REPLine(SQLSubModel):
_sub_classes = []
_id_cnt = 0
def __init__(self, id: int = -1, enabled=True,
name="", line="", solvers=set(),
status=None):
super(REPLine, self).__init__()
if id == -1:
self.id = REPLine._id_cnt
else:
self.id = id
super(REPLine, self).__init__(id)
self._status = status
self._enabled = enabled
self._name = f"Line{self.id}" if name == "" else name
self._name = f"Line #{self._pamhyr_id}" if name == "" else name
self._line = line
self._solvers = solvers
REPLine._id_cnt = max(id, REPLine._id_cnt+1)
def __getitem__(self, key):
value = None
@ -113,14 +106,17 @@ class REPLine(SQLSubModel):
self._status.modified()
@classmethod
def _db_create(cls, execute):
execute("""
CREATE TABLE rep_lines(
id INTEGER NOT NULL PRIMARY KEY,
def _db_create(cls, execute, ext=""):
execute(f"""
CREATE TABLE rep_lines{ext} (
{cls.create_db_add_pamhyr_id()},
enabled BOOLEAN NOT NULL,
name TEXT NOT NULL,
line TEXT NOT NULL,
solvers TEXT NOT NULL
solvers TEXT NOT NULL,
{Scenario.create_db_add_scenario()},
{Scenario.create_db_add_scenario_fk()},
PRIMARY KEY(pamhyr_id, scenario)
)
""")
@ -133,14 +129,35 @@ class REPLine(SQLSubModel):
if int(release) < 9:
cls._db_create(execute)
if 9 < int(release) < 14:
cls._db_update_to_0_0_14(execute)
return True
@classmethod
def _db_update_to_0_0_14(cls, execute):
table = "rep_lines"
cls.update_db_add_pamhyr_id(execute, table)
Scenario.update_db_add_scenario(execute, table)
cls._db_create(execute, ext="_tmp")
execute(
f"INSERT INTO {table}_tmp " +
"(pamhyr_id, enabled, name, line, solvers, scenario) " +
"SELECT pamhyr_id, enabled, name, line, solvers, scenario " +
f"FROM {table}"
)
execute(f"DROP TABLE {table}")
execute(f"ALTER TABLE {table}_tmp RENAME TO {table}")
@classmethod
def _db_load(cls, execute, data=None):
new = []
table = execute(
"SELECT id, enabled, name, line, solvers " +
"SELECT pamhyr_id, enabled, name, line, solvers " +
"FROM rep_lines"
)
@ -167,9 +184,9 @@ class REPLine(SQLSubModel):
sql = (
"INSERT INTO " +
"rep_lines(id, enabled, name, line, solvers) " +
"rep_lines(pamhyr_id, enabled, name, line, solvers) " +
"VALUES (" +
f"{self.id}, {self._enabled}, " +
f"{self._pamhyr_id}, {self._enabled}, " +
f"'{self._db_format(self._name)}', " +
f"'{self._db_format(self._line)}', " +
f"'{self._db_format(solvers)}'" +

View File

@ -44,7 +44,7 @@ class Study(SQLModel):
def __init__(self, filename=None, init_new=True):
# Metadata
self._version = "0.0.13"
self._version = "0.0.14"
self.creation_date = datetime.now()
self.last_modification_date = datetime.now()
self.last_save_date = datetime.now()