# HG changeset patch # User Sascha L. Teichmann # Date 1707859418 -3600 # Node ID 7a05a23f97d9a97ac440fe85b69583b1c1bc33b5 # Parent 40bf5d8283fb1060795148e87ea07d95f773429c Store migrated meshes in database. diff -r 40bf5d8283fb -r 7a05a23f97d9 cmd/meshmigrate/main.go --- 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