From 93907a839da0b8eb916be8ad84896200bdf178e2 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 25 Nov 2025 15:22:55 +0100 Subject: [PATCH] altered table update: now retaining the template name values from the template column as new template values in the document table Signed-off-by: Stephan Richter --- .../umbrella/documents/DocumentDb.java | 1 - .../umbrella/documents/SqliteDb.java | 78 ++++++++----------- frontend/src/routes/document/View.svelte | 4 +- 3 files changed, 33 insertions(+), 50 deletions(-) diff --git a/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentDb.java b/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentDb.java index 394b096..51ddf7c 100644 --- a/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentDb.java +++ b/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentDb.java @@ -4,7 +4,6 @@ package de.srsoftware.umbrella.documents; import de.srsoftware.tools.Pair; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; import de.srsoftware.umbrella.core.model.Document; -import de.srsoftware.umbrella.core.model.Template; import de.srsoftware.umbrella.core.model.Type; import de.srsoftware.umbrella.documents.model.*; import java.util.*; diff --git a/documents/src/main/java/de/srsoftware/umbrella/documents/SqliteDb.java b/documents/src/main/java/de/srsoftware/umbrella/documents/SqliteDb.java index e4124bd..d0b1c5f 100644 --- a/documents/src/main/java/de/srsoftware/umbrella/documents/SqliteDb.java +++ b/documents/src/main/java/de/srsoftware/umbrella/documents/SqliteDb.java @@ -42,6 +42,15 @@ public class SqliteDb extends BaseDb implements DocumentDb{ super(connection); } + private void addTemplateColumn() { + try { + var sql = format("ALTER TABLE {0} ADD COLUMN {1} VARCHAR(255)",TABLE_DOCUMENTS,TEMPLATE); + db.prepareStatement(sql).execute(); + } catch (SQLException e) { + throw databaseException("Failed to update column {0} → {1} of {2}",TEMPLATE_ID,TEMPLATE,TABLE_DOCUMENTS); + } + } + protected int createTables() { int currentVersion = createSettingsTable(); switch (currentVersion) { @@ -53,23 +62,14 @@ public class SqliteDb extends BaseDb implements DocumentDb{ createTableCustomerPrices(); createTableCustomerSettings(); case 1: + addTemplateColumn(); + moveTemplateNames(); dropTemplateTable(); - alterTemplateColumn(); + dropTemplateIdColumn(); } return setCurrentVersion(2); } - private void alterTemplateColumn() { - try { - var sql = format("ALTER TABLE {0} DROP COLUMN {1}",TABLE_DOCUMENTS,TEMPLATE_ID); - db.prepareStatement(sql).execute(); - sql = format("ALTER TABLE {0} ADD COLUMN {1} VARCHAR(255)",TABLE_DOCUMENTS,TEMPLATE); - db.prepareStatement(sql).execute(); - } catch (SQLException e) { - throw databaseException("Failed to update column {0} → {1} of {2}",TEMPLATE_ID,TEMPLATE,TABLE_DOCUMENTS); - } - } - private void createTableCustomerPrices() { var sql = "CREATE TABLE IF NOT EXISTS {0} ({1} INT NOT NULL, {2} VARCHAR(255), {3} VARCHAR(50), {4} INTEGER)"; try { @@ -174,36 +174,6 @@ CREATE TABLE IF NOT EXISTS {0} ( } } - private int createTableSettings() { - var createTable = """ -CREATE TABLE IF NOT EXISTS {0} ( {1} VARCHAR(255) PRIMARY KEY, {2} VARCHAR(255) NOT NULL); -"""; - try { - var stmt = db.prepareStatement(format(createTable,TABLE_SETTINGS, KEY, VALUE)); - stmt.execute(); - stmt.close(); - } catch (SQLException e) { - LOG.log(ERROR,ERROR_FAILED_CREATE_TABLE,TABLE_SETTINGS,e); - throw new RuntimeException(e); - } - - Integer version = null; - try { - var rs = select(VALUE).from(TABLE_SETTINGS).where(KEY, equal(DB_VERSION)).exec(db); - if (rs.next()) version = rs.getInt(VALUE); - rs.close(); - if (version == null) { - version = INITIAL_DB_VERSION; - insertInto(TABLE_SETTINGS, KEY, VALUE).values(DB_VERSION,version).execute(db).close(); - } - - return version; - } catch (SQLException e) { - LOG.log(ERROR,ERROR_READ_TABLE,DB_VERSION,TABLE_SETTINGS,e); - throw new RuntimeException(e); - } - } - private void createTableTemplates() { var createTable = "CREATE TABLE IF NOT EXISTS {0} ({1} INTEGER PRIMARY KEY, {2} INT NOT NULL, {3} VARCHAR(255) NOT NULL, {4} BLOB)"; try { @@ -254,6 +224,15 @@ CREATE TABLE IF NOT EXISTS {0} ( {1} VARCHAR(255) PRIMARY KEY, {2} VARCHAR(255) return pos; } + private void dropTemplateIdColumn() { + try { + var sql = format("ALTER TABLE {0} DROP COLUMN {1}",TABLE_DOCUMENTS,TEMPLATE_ID); + db.prepareStatement(sql).execute(); + } catch (SQLException e) { + throw databaseException("Failed to update column {0} → {1} of {2}",TEMPLATE_ID,TEMPLATE,TABLE_DOCUMENTS); + } + } + private void dropTemplateTable() { try { var sql = format("DROP TABLE IF EXISTS {0};",TABLE_TEMPLATES); @@ -304,11 +283,7 @@ CREATE TABLE IF NOT EXISTS {0} ( {1} VARCHAR(255) PRIMARY KEY, {2} VARCHAR(255) } throw new UmbrellaException(500,"No type with id = {0}",typeId); } - - private void init() { - var version = createTables(); - } - + @Override public Map> docReferencedByTimes(Set timeIds) throws UmbrellaException { try { @@ -449,6 +424,15 @@ CREATE TABLE IF NOT EXISTS {0} ( {1} VARCHAR(255) PRIMARY KEY, {2} VARCHAR(255) throw new UmbrellaException(500,"Failed to load document {0}.",docId); } + private void moveTemplateNames() { + try { + var sql = format("UPDATE {0} SET template = (SELECT name FROM templates WHERE templates.id = documents.template_id);",TABLE_DOCUMENTS); + db.prepareStatement(sql).execute(); + } catch (SQLException e) { + throw databaseException("Failed to move template.names to document.templates!"); + } + } + @Override public String nextDocId(String language, long companyId, Type type) { try { diff --git a/frontend/src/routes/document/View.svelte b/frontend/src/routes/document/View.svelte index e7c174c..89f7e10 100644 --- a/frontend/src/routes/document/View.svelte +++ b/frontend/src/routes/document/View.svelte @@ -214,9 +214,9 @@ {t('template')}: {#if editable} - update('template_id',doc.template)} /> + update('template',doc.template)} /> {:else} - {doc.template.name} + {doc.template} {/if}