From 8f78c8ce8956bf8e80927ca98a545db20b74890f Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Sun, 17 Sep 2023 18:58:11 +0200 Subject: [PATCH] Database: use schema_version and application_id --- sql/v01/10.create.sql | 12 ++---------- sql/v01/99.schema_version.sql | 2 ++ wgmaster/import.py | 2 ++ 3 files changed, 6 insertions(+), 10 deletions(-) create mode 100644 sql/v01/99.schema_version.sql diff --git a/sql/v01/10.create.sql b/sql/v01/10.create.sql index 6d9347d..a29ec16 100644 --- a/sql/v01/10.create.sql +++ b/sql/v01/10.create.sql @@ -1,16 +1,8 @@ +PRAGMA application_id = 0x454C5747; -- ASCII: "ELWG" +PRAGMA user_version = 0; -- Product version. 4-byte integer: 1st - major, 2nd - minor, 3rd+4th - patch PRAGMA foreign_keys = ON; -CREATE TABLE meta ( - name TEXT NOT NULL CHECK (name REGEXP '^[a-z_]+$'), - value TEXT NOT NULL, - - CONSTRAINT pk_meta PRIMARY KEY (name) -) STRICT; - -INSERT INTO meta (name, value) -VALUES ('schema_version', '1'); - CREATE TABLE client_parameter ( param TEXT NOT NULL CHECK (param REGEXP '^[A-Z_]+$'), value TEXT, diff --git a/sql/v01/99.schema_version.sql b/sql/v01/99.schema_version.sql new file mode 100644 index 0000000..2b03fc2 --- /dev/null +++ b/sql/v01/99.schema_version.sql @@ -0,0 +1,2 @@ + +PRAGMA schema_version = 100; -- This value MUST NOT be changed while other connections are open! diff --git a/wgmaster/import.py b/wgmaster/import.py index 2a4dbc3..a860173 100755 --- a/wgmaster/import.py +++ b/wgmaster/import.py @@ -117,6 +117,7 @@ def main() -> None: with open(file_name, encoding='utf-8') as sql_file: print(f'Executing {file_name}') cnx.executescript(sql_file.read()) + ver = cnx.execute("PRAGMA schema_version").fetchall()[0][0] try: cnx.isolation_level = None @@ -129,6 +130,7 @@ def main() -> None: raise RuntimeError('foreign key constraint failed') cnx.execute("COMMIT") cnx.execute("VACUUM") + cnx.execute(f"PRAGMA schema_version = {ver}") except Exception as err: cnx.execute("ROLLBACK") raise err