changeset 5698:7a05a23f97d9 sr-v2

Store migrated meshes in database.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 13 Feb 2024 22:23:38 +0100
parents 40bf5d8283fb
children a3a975ea93ca
files cmd/meshmigrate/main.go
diffstat 1 files changed, 22 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/cmd/meshmigrate/main.go	Tue Feb 13 01:09:22 2024 +0100
+++ b/cmd/meshmigrate/main.go	Tue Feb 13 22:23:38 2024 +0100
@@ -15,7 +15,9 @@
 package main
 
 import (
+	"crypto/sha1"
 	"database/sql"
+	"encoding/hex"
 	"flag"
 	"fmt"
 	"log"
@@ -55,7 +57,15 @@
 	id,
 	coalesce(mesh_index_version, 1) AS mesh_index_version,
 	mesh_index
-FROM waterway.sounding_results WHERE `
+FROM waterway.sounding_results
+WHERE mesh_index IS NOT NULL AND `
+
+	updateSQL = `
+UPDATE waterway.sounding_results SET
+	mesh_index_version = $1,
+	mesh_index = $2,
+	mesh_checksum = $3
+WHERE id = $4`
 )
 
 func process(
@@ -111,17 +121,26 @@
 			return err
 		}
 		src.OptimizeForSerialization(to)
-		out, ver, err := src.Bytes(to)
+		out, newVersion, err := src.Bytes(to)
 		if err != nil {
 			return err
 		}
 		totalOut += int64(len(out))
 		if backup {
-			fname := fmt.Sprintf("migrated-mesh-%d-v%d.idx.gz", id, ver)
+			fname := fmt.Sprintf("migrated-mesh-%d-v%d.idx.gz", id, newVersion)
 			if err := os.WriteFile(fname, out, 0666); err != nil {
 				return err
 			}
 		}
+		if dry {
+			continue
+		}
+		h := sha1.New()
+		h.Write(out)
+		checksum := hex.EncodeToString(h.Sum(nil))
+		if _, err := db.Exec(updateSQL, newVersion, out, checksum, id); err != nil {
+			return err
+		}
 	}
 	if rows.Err(); err != nil {
 		return err