mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
HS: Prepare update db 0.1.0.
This commit is contained in:
1 parent
1bae755f1c
commit
9ec080a107
4 files changed
+150
-79
No files matched your search
@@ -40,15 +40,10 @@ class HydraulicStructure(SQLSubModel):
|
||||
|
||||
def __init__(self, id: int = -1, name: str = "",
|
||||
status=None):
|
||||
super(HydraulicStructure, self).__init__()
|
||||
super(HydraulicStructure, self).__init__(id)
|
||||
|
||||
self._status = status
|
||||
|
||||
if id == -1:
|
||||
self.id = HydraulicStructure._id_cnt
|
||||
else:
|
||||
self.id = id
|
||||
|
||||
self._name = name
|
||||
self._input_rk = None
|
||||
self._output_rk = None
|
||||
@@ -57,24 +52,22 @@ class HydraulicStructure(SQLSubModel):
|
||||
self._enabled = True
|
||||
self._data = []
|
||||
|
||||
HydraulicStructure._id_cnt = max(
|
||||
HydraulicStructure._id_cnt + 1,
|
||||
self.id
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def _db_create(cls, execute):
|
||||
execute("""
|
||||
CREATE TABLE hydraulic_structures(
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
def _db_create(cls, execute, ext=""):
|
||||
execute(f"""
|
||||
CREATE TABLE hydraulic_structures{ext} (
|
||||
{cls.create_db_add_pamhyr_id()},
|
||||
name TEXT NOT NULL,
|
||||
enabled BOOLEAN NOT NULL,
|
||||
input_rk REAL NOT NULL,
|
||||
output_rk REAL NOT NULL,
|
||||
input_reach INTEGER,
|
||||
output_reach INTEGER,
|
||||
FOREIGN KEY(input_reach) REFERENCES river_reach(id),
|
||||
FOREIGN KEY(output_reach) REFERENCES river_reach(id)
|
||||
FOREIGN KEY(input_reach) REFERENCES river_reach(pamhyr_id),
|
||||
FOREIGN KEY(output_reach) REFERENCES river_reach(pamhyr_id),
|
||||
{Scenario.create_db_add_scenario()},
|
||||
{Scenario.create_db_add_scenario_fk()},
|
||||
PRIMARY KEY(pamhyr_id, scenario)
|
||||
)
|
||||
""")
|
||||
|
||||
@@ -103,17 +96,40 @@ class HydraulicStructure(SQLSubModel):
|
||||
"""
|
||||
)
|
||||
|
||||
cls._db_update_to_0_1_0(execute, data)
|
||||
|
||||
return cls._update_submodel(execute, version, data)
|
||||
|
||||
@classmethod
|
||||
def _db_update_to_0_1_0(cls, execute, data):
|
||||
table = "hydraulic_structures"
|
||||
|
||||
cls.update_db_add_pamhyr_id(execute, table, data)
|
||||
Scenario.update_db_add_scenario(execute, table)
|
||||
|
||||
cls._db_create(execute, ext="_tmp")
|
||||
|
||||
execute(
|
||||
f"INSERT INTO {table}_tmp " +
|
||||
"(pamhyr_id, name, enabled, input_rk, output_rk, " +
|
||||
"input_reach, output_reach, scenario) " +
|
||||
"SELECT pamhyr_id, name, enabled, input_rk, output_rk, " +
|
||||
"input_reach, output_reach, 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, name, enabled, " +
|
||||
"SELECT pamhyr_id, name, enabled, " +
|
||||
"input_rk, output_rk, " +
|
||||
"input_reach, output_reach " +
|
||||
"FROM hydraulic_structures "
|
||||
"FROM hydraulic_structures"
|
||||
)
|
||||
|
||||
for row in table:
|
||||
@@ -154,15 +170,18 @@ class HydraulicStructure(SQLSubModel):
|
||||
return new
|
||||
|
||||
def _db_save(self, execute, data=None):
|
||||
execute(f"DELETE FROM hydraulic_structures WHERE id = {self.id}")
|
||||
execute(
|
||||
"DELETE FROM hydraulic_structures " +
|
||||
f"WHERE pamhyr_id = {self.pamhyr_id}"
|
||||
)
|
||||
|
||||
input_reach_id = -1
|
||||
if self._input_reach is not None:
|
||||
input_reach_id = self._input_reach.id
|
||||
input_reach_id = self._input_reach.pamhyr_id
|
||||
|
||||
output_reach_id = -1
|
||||
if self._output_reach is not None:
|
||||
output_reach_id = self._output_reach.id
|
||||
output_reach_id = self._output_reach.pamhyr_id
|
||||
|
||||
input_rk = -1
|
||||
if self.input_rk is not None:
|
||||
@@ -172,25 +191,24 @@ class HydraulicStructure(SQLSubModel):
|
||||
if self.output_rk is not None:
|
||||
output_rk = self.output_rk
|
||||
|
||||
sql = (
|
||||
execute(
|
||||
"INSERT INTO " +
|
||||
"hydraulic_structures(" +
|
||||
" id, name, enabled, input_rk, output_rk, " +
|
||||
" pamhyr_id, name, enabled, input_rk, output_rk, " +
|
||||
" input_reach, output_reach" +
|
||||
") " +
|
||||
"VALUES (" +
|
||||
f"{self.id}, '{self._db_format(self._name)}', " +
|
||||
f"{self.pamhyr_id}, '{self._db_format(self._name)}', " +
|
||||
f"{self._db_format(self.enabled)}, " +
|
||||
f"{input_rk}, {output_rk}, " +
|
||||
f"{input_reach_id}, {output_reach_id}" +
|
||||
")"
|
||||
)
|
||||
execute(sql)
|
||||
|
||||
data['hs_id'] = self.id
|
||||
data['hs_id'] = self.pamhyr_id
|
||||
execute(
|
||||
"DELETE FROM hydraulic_structures_basic " +
|
||||
f"WHERE hs = {self.id}"
|
||||
f"WHERE hs = {self.pamhyr_id}"
|
||||
)
|
||||
|
||||
for basic in self._data:
|
||||
@@ -204,7 +222,7 @@ class HydraulicStructure(SQLSubModel):
|
||||
@property
|
||||
def name(self):
|
||||
if self._name == "":
|
||||
return f"HS{self.id + 1}"
|
||||
return f"HS #{self.pamhyr_id}"
|
||||
|
||||
return self._name
|
||||
|
||||
|
||||
Reference in new issue
Block a user