From 3778818b58fcae3e14e7d0f2d10c92b6e7cf5f65 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Mon, 3 Jul 2023 16:24:53 +0200 Subject: [PATCH] Study: Save study metadata in SQL. --- src/Model/Study.py | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/Model/Study.py b/src/Model/Study.py index 50edc5ce..32893e36 100644 --- a/src/Model/Study.py +++ b/src/Model/Study.py @@ -83,6 +83,7 @@ class Study(SQLModel): def filename(self, filename): self._filename = str(filename) self._init_db_file(filename, is_new = True) + self.status.modified() @property def time_system(self): @@ -136,6 +137,22 @@ class Study(SQLModel): f"INSERT INTO info VALUES ('version', '{self._sql_format(self._version)}')", commit = True ) + self.execute("INSERT INTO info VALUES ('name', '')") + self.execute("INSERT INTO info VALUES ('description', '')") + self.execute(f"INSERT INTO info VALUES ('time_system', '{self._time_system}')") + self.execute( + f"INSERT INTO info VALUES ('date', " + + "'{self._date.timestamp()}')" + ) + + self.execute( + f"INSERT INTO info VALUES ('creation_date', " + + "'{self.creation_time.timestamp()}')" + ) + self.execute( + f"INSERT INTO info VALUES ('last_save_date', " + + "'{self.last_save_time.timestamp()}')" + ) self._create_submodel() self.commit() @@ -159,7 +176,19 @@ class Study(SQLModel): new = cls(init_new = False, filename = filename) # TODO: Load metadata - print("TODO: Load metadata") + new.name = new.execute("SELECT value FROM info WHERE key='name'")[0] + new.description = new.execute("SELECT value FROM info WHERE key='description'")[0] + new._time_system = new.execute("SELECT value FROM info WHERE key='time_system'")[0] + new._date = datetime.fromtimestamp( + float(new.execute("SELECT value FROM info WHERE key='date'")[0]) + ) + + new.creation_date = datetime.fromtimestamp( + float(new.execute("SELECT value FROM info WHERE key='creation_date'")[0]) + ) + new.last_save_date = datetime.fromtimestamp( + float(new.execute("SELECT value FROM info WHERE key='last_save_date'")[0]) + ) # Load river data new._river = River._sql_load( @@ -174,5 +203,12 @@ class Study(SQLModel): return new def _save(self): + self.execute(f"UPDATE info SET value='{self._sql_format(self.name)}' WHERE key='name'") + self.execute(f"UPDATE info SET value='{self._sql_format(self.description)}' WHERE key='description'") + self.execute(f"UPDATE info SET value='{self._time_system}' WHERE key='time_system'") + self.execute(f"UPDATE info SET value='{self._date.timestamp()}' WHERE key='date'") + self.execute(f"UPDATE info SET value='{self.creation_date.timestamp()}' WHERE key='creation_date'") + self.execute(f"UPDATE info SET value='{self.last_save_date.timestamp()}' WHERE key='last_save_date'") + self._save_submodel([self._river]) self.commit() -- GitLab