diff --git a/SynchRoGazer.go b/SynchRoGazer.go index 08c51ab..8d8e61a 100644 --- a/SynchRoGazer.go +++ b/SynchRoGazer.go @@ -83,15 +83,15 @@ func PostgresHashFileResult(result *HashFileResult, settings PostgresSettings) { hMd5, _ := hex.DecodeString(result.MD5) hSha256, _ := hex.DecodeString(result.SHA256) - switch { - case settings.Binary && settings.Mode == "insert": + switch settings.Mode { + case "insert_binary": rows, err = settings.InsertSTMT.Query(result.Path, hMd5, hSha256) - case settings.Binary && settings.Mode == "update": + case "update_binary": rows, err = settings.UpdateSTMT.Query(result.Path, hMd5, hSha256) break - case !settings.Binary && settings.Mode == "insert": + case "insert": rows, err = settings.InsertSTMT.Query(result.Path, result.MD5, result.SHA256) - case !settings.Binary && settings.Mode == "update": + case "update": rows, err = settings.UpdateSTMT.Query(result.Path, result.MD5, result.SHA256) break } @@ -105,9 +105,7 @@ func PostgresHashFileResult(result *HashFileResult, settings PostgresSettings) { } type PostgresSettings struct { - Handle *sql.DB ConnStr string - Binary bool Mode string InsertSTMT *sql.Stmt UpdateSTMT *sql.Stmt @@ -124,8 +122,7 @@ func main() { outputFormat := flag.String("format", "text", "Output formats. Allowed: text, json, postgres") pgConnStr := flag.String("pg_connstr", "", "Postgres connection string for postgres output format") - pgBinary := flag.Bool("pg_binary", false, "Postgres binary hash mode") - pgMode := flag.String("pg_mode", "insert", "Postgres output mode, insert or update") + pgMode := flag.String("pg_mode", "insert", "Postgres output mode, insert or update, additionally _binary") pgTable := flag.String("pg_table", "files", "Postgres output table") pgPathRow := flag.String("pg_row_path", "path", "Postgres output row: path") pgMd5Row := flag.String("pg_row_md5", "md5", "Postgres output row: md5") @@ -134,9 +131,7 @@ func main() { flag.Parse() pgSettings := PostgresSettings{ - nil, *pgConnStr, - *pgBinary, *pgMode, nil, nil, @@ -147,8 +142,9 @@ func main() { if err != nil { log.Fatal(err) } - pgSettings.Handle = handle - pgSettings.InsertSTMT, err = pgSettings.Handle.Prepare(fmt.Sprintf("INSERT INTO %s (%s, %s, %s) VALUES ($1, $2, $3);", + defer handle.Close() + + pgSettings.InsertSTMT, err = handle.Prepare(fmt.Sprintf("INSERT INTO %s (%s, %s, %s) VALUES ($1, $2, $3);", pq.QuoteIdentifier(*pgTable), pq.QuoteIdentifier(*pgPathRow), pq.QuoteIdentifier(*pgMd5Row), @@ -157,7 +153,9 @@ func main() { if err != nil { log.Fatal(err) } - pgSettings.UpdateSTMT, err = pgSettings.Handle.Prepare(fmt.Sprintf("UPDATE %s SET %s = $2, %s = $3 WHERE %s = $1;", + defer pgSettings.InsertSTMT.Close() + + pgSettings.UpdateSTMT, err = handle.Prepare(fmt.Sprintf("UPDATE %s SET %s = $2, %s = $3 WHERE %s = $1;", pq.QuoteIdentifier(*pgTable), pq.QuoteIdentifier(*pgPathRow), pq.QuoteIdentifier(*pgMd5Row), @@ -166,6 +164,7 @@ func main() { if err != nil { log.Fatal(err) } + defer pgSettings.UpdateSTMT.Close() } var taskCount int64