Mercurial > gemma
annotate cmd/oct2str/main.go @ 4796:199c49f967d2
Some Go clean-ups.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 25 Oct 2019 17:28:00 +0200 |
parents | 8f745c353784 |
children |
rev | line source |
---|---|
4648
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 // This is Free Software under GNU Affero General Public License v >= 3.0 |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 // without warranty, see README.md and license for details. |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
3 // |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
4 // SPDX-License-Identifier: AGPL-3.0-or-later |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
5 // License-Filename: LICENSES/AGPL-3.0.txt |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 // |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
7 // Copyright (C) 2019 by via donau |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
8 // – Österreichische Wasserstraßen-Gesellschaft mbH |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 // Software engineering by Intevation GmbH |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 // |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 // Author(s): |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de> |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
13 |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 package main |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 import ( |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 "context" |
4649
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
18 "crypto/sha1" |
4648
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 "database/sql" |
4649
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
20 "encoding/hex" |
4648
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 "flag" |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 "log" |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 |
4649
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
24 "gemma.intevation.de/gemma/pkg/octree" |
4648
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 "github.com/jackc/pgx" |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 "github.com/jackc/pgx/stdlib" |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 ) |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 |
4649
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
29 const ( |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
30 fetchOneOctreeSQL = ` |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
31 SELECT |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
32 id, |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
33 octree_index |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
34 FROM waterway.sounding_results |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
35 WHERE mesh_index IS NULL |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
36 LIMIT 1` |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
37 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
38 storeSTRTreeSQL = ` |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
39 UPDATE waterway.sounding_results |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
40 SET mesh_index = $1, mesh_checksum = $2 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
41 WHERE id = $3` |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
42 ) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
43 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
44 func process(ctx context.Context, conn *sql.Conn, count int) error { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
45 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
46 fetch, err := conn.PrepareContext(ctx, fetchOneOctreeSQL) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
47 if err != nil { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
48 return err |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
49 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
50 defer fetch.Close() |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
51 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
52 store, err := conn.PrepareContext(ctx, storeSTRTreeSQL) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
53 if err != nil { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
54 return err |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
55 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
56 defer store.Close() |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
57 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
58 var next func() bool |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
59 if count < 0 { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
60 next = func() bool { return true } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
61 } else { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
62 var c int |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
63 next = func() bool { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
64 if c < count { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
65 c++ |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
66 return true |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
67 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
68 return false |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
69 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
70 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
71 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
72 loop: |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
73 for next() { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
74 switch err := func() error { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
75 tx, err := conn.BeginTx(ctx, nil) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
76 if err != nil { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
77 return err |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
78 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
79 defer tx.Rollback() |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
80 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
81 var id int64 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
82 var data []byte |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
83 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
84 if err = tx.Stmt(fetch).QueryRowContext(ctx).Scan(&id, &data); err != nil { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
85 return err |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
86 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
87 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
88 otree, err := octree.Deserialize(data) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
89 if err != nil { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
90 return err |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
91 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
92 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
93 unused := otree.FindUnused() |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
94 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
95 log.Printf("unused: %d\n", len(unused)) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
96 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
97 str := octree.STRTree{Entries: 16} |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
98 str.BuildWithout(otree.Tin(), unused) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
99 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
100 out, err := str.Bytes() |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
101 if err != nil { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
102 return err |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
103 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
104 h := sha1.New() |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
105 h.Write(out) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
106 checksum := hex.EncodeToString(h.Sum(nil)) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
107 log.Printf("hash: %s\n", checksum) |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
108 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
109 if _, err := tx.Stmt(store).ExecContext(ctx, out, checksum, id); err != nil { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
110 return err |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
111 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
112 |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
113 return tx.Commit() |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
114 }(); { |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
115 case err == sql.ErrNoRows: |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
116 break loop |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
117 case err != nil: |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
118 return err |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
119 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
120 } |
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
121 |
4648
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
122 return nil |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
123 } |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
124 |
4649
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
125 func connect(cc pgx.ConnConfig, count int) error { |
4648
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
126 db := stdlib.OpenDB(cc) |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
127 defer db.Close() |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
128 |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
129 ctx := context.Background() |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
130 |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
131 conn, err := db.Conn(ctx) |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
132 if err != nil { |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
133 return err |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
134 } |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
135 defer conn.Close() |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
136 |
4649
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
137 return process(ctx, conn, count) |
4648
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
138 } |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
139 |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
140 func main() { |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
141 var ( |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
142 db = flag.String("database", "gemma", "database name") |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
143 user = flag.String("user", "sophie", "database user") |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
144 host = flag.String("host", "localhost", "database host") |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
145 password = flag.String("password", "so2Phie4", "database password") |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
146 port = flag.Uint("port", 5432, "database port") |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
147 ssl = flag.String("ssl", "prefer", "SSL mode") |
4649
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
148 count = flag.Int("count", -1, "how many sounding results to convert") |
4648
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
149 ) |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
150 |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
151 flag.Parse() |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
152 cc, err := pgx.ParseConnectionString("sslmode=" + *ssl) |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
153 if err != nil { |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
154 log.Fatalf("error: %v\n", err) |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
155 } |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
157 // Do the rest manually to allow whitespace in user/password. |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
158 cc.Host = *host |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
159 cc.Port = uint16(*port) |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
160 cc.User = *user |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
161 cc.Password = *password |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
162 cc.Database = *db |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
163 |
4649
8f745c353784
Finished first version of conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
4648
diff
changeset
|
164 if err := connect(cc, *count); err != nil { |
4648
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
165 log.Fatalf("error: %v\n", err) |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
166 } |
66fcd898efd9
Started with conversion tool.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
167 } |