Reworked postgres parts to use prepared statements
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
dd819dafc9
commit
07f88e7508
|
@ -80,22 +80,17 @@ func PostgresHashFileResult(result *HashFileResult, settings PostgresSettings) {
|
||||||
var err error
|
var err error
|
||||||
var rows *sql.Rows
|
var rows *sql.Rows
|
||||||
|
|
||||||
if settings.Binary {
|
hMd5, _ := hex.DecodeString(result.MD5)
|
||||||
h_md5, _ := hex.DecodeString(result.MD5)
|
hSha256, _ := hex.DecodeString(result.SHA256)
|
||||||
h_sha256, _ := hex.DecodeString(result.SHA256)
|
|
||||||
switch settings.Mode {
|
if settings.Binary && settings.Mode == "insert" {
|
||||||
case "insert":
|
rows, err = settings.InsertSTMT.Query(result.Path, hMd5, hSha256)
|
||||||
rows, err = settings.Handle.Query(fmt.Sprintf("INSERT INTO %s (%s, %s, %s) VALUES ($1, $2, $3);", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.PathRow), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row)), result.Path, h_md5, h_sha256)
|
} else if settings.Binary && settings.Mode == "update" {
|
||||||
case "update":
|
rows, err = settings.UpdateSTMT.Query(result.Path, hMd5, hSha256)
|
||||||
rows, err = settings.Handle.Query(fmt.Sprintf("UPDATE %s SET %s = $2, %s = $3 WHERE %s = $1;", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row), pq.QuoteIdentifier(settings.PathRow)), result.Path, h_md5, h_sha256)
|
} else if !settings.Binary && settings.Mode == "insert" {
|
||||||
}
|
rows, err = settings.InsertSTMT.Query(result.Path, hMd5, hSha256)
|
||||||
} else {
|
} else if !settings.Binary && settings.Mode == "update" {
|
||||||
switch settings.Mode {
|
rows, err = settings.UpdateSTMT.Query(result.Path, hMd5, hSha256)
|
||||||
case "insert":
|
|
||||||
rows, err = settings.Handle.Query(fmt.Sprintf("INSERT INTO %s (%s, %s, %s) VALUES ($1, $2, $3);", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.PathRow), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row)), result.Path, result.MD5, result.SHA256)
|
|
||||||
case "update":
|
|
||||||
rows, err = settings.Handle.Query(fmt.Sprintf("UPDATE %s SET %s = $2, %s = $3 WHERE %s = $1;", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row), pq.QuoteIdentifier(settings.PathRow)), result.Path, result.MD5, result.SHA256)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -107,14 +102,12 @@ func PostgresHashFileResult(result *HashFileResult, settings PostgresSettings) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type PostgresSettings struct {
|
type PostgresSettings struct {
|
||||||
Handle *sql.DB
|
Handle *sql.DB
|
||||||
ConnStr string
|
ConnStr string
|
||||||
Binary bool
|
Binary bool
|
||||||
Mode string
|
Mode string
|
||||||
Table string
|
InsertSTMT *sql.Stmt
|
||||||
PathRow string
|
UpdateSTMT *sql.Stmt
|
||||||
MD5Row string
|
|
||||||
SHA256Row string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -142,10 +135,8 @@ func main() {
|
||||||
*pgConnStr,
|
*pgConnStr,
|
||||||
*pgBinary,
|
*pgBinary,
|
||||||
*pgMode,
|
*pgMode,
|
||||||
*pgTable,
|
nil,
|
||||||
*pgPathRow,
|
nil,
|
||||||
*pgMd5Row,
|
|
||||||
*pgSha256Row,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if *outputFormat == "postgres" && pgSettings.ConnStr != "" {
|
if *outputFormat == "postgres" && pgSettings.ConnStr != "" {
|
||||||
|
@ -154,6 +145,24 @@ func main() {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
pgSettings.Handle = handle
|
pgSettings.Handle = handle
|
||||||
|
pgSettings.InsertSTMT, err = pgSettings.Handle.Prepare(fmt.Sprintf("INSERT INTO %s (%s, %s, %s) VALUES ($1, $2, $3);",
|
||||||
|
pq.QuoteIdentifier(*pgTable),
|
||||||
|
pq.QuoteIdentifier(*pgPathRow),
|
||||||
|
pq.QuoteIdentifier(*pgMd5Row),
|
||||||
|
pq.QuoteIdentifier(*pgSha256Row),
|
||||||
|
))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
pgSettings.UpdateSTMT, err = pgSettings.Handle.Prepare(fmt.Sprintf("UPDATE %s SET %s = $2, %s = $3 WHERE %s = $1;",
|
||||||
|
pq.QuoteIdentifier(*pgTable),
|
||||||
|
pq.QuoteIdentifier(*pgPathRow),
|
||||||
|
pq.QuoteIdentifier(*pgMd5Row),
|
||||||
|
pq.QuoteIdentifier(*pgSha256Row),
|
||||||
|
))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var taskCount int64
|
var taskCount int64
|
||||||
|
|
Loading…
Reference in a new issue