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 rows *sql.Rows
|
||||
|
||||
if settings.Binary {
|
||||
h_md5, _ := hex.DecodeString(result.MD5)
|
||||
h_sha256, _ := hex.DecodeString(result.SHA256)
|
||||
switch settings.Mode {
|
||||
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, h_md5, h_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, h_md5, h_sha256)
|
||||
}
|
||||
} else {
|
||||
switch settings.Mode {
|
||||
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)
|
||||
}
|
||||
hMd5, _ := hex.DecodeString(result.MD5)
|
||||
hSha256, _ := hex.DecodeString(result.SHA256)
|
||||
|
||||
if settings.Binary && settings.Mode == "insert" {
|
||||
rows, err = settings.InsertSTMT.Query(result.Path, hMd5, hSha256)
|
||||
} else if settings.Binary && settings.Mode == "update" {
|
||||
rows, err = settings.UpdateSTMT.Query(result.Path, hMd5, hSha256)
|
||||
} else if !settings.Binary && settings.Mode == "insert" {
|
||||
rows, err = settings.InsertSTMT.Query(result.Path, hMd5, hSha256)
|
||||
} else if !settings.Binary && settings.Mode == "update" {
|
||||
rows, err = settings.UpdateSTMT.Query(result.Path, hMd5, hSha256)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
@ -107,14 +102,12 @@ func PostgresHashFileResult(result *HashFileResult, settings PostgresSettings) {
|
|||
}
|
||||
|
||||
type PostgresSettings struct {
|
||||
Handle *sql.DB
|
||||
ConnStr string
|
||||
Binary bool
|
||||
Mode string
|
||||
Table string
|
||||
PathRow string
|
||||
MD5Row string
|
||||
SHA256Row string
|
||||
Handle *sql.DB
|
||||
ConnStr string
|
||||
Binary bool
|
||||
Mode string
|
||||
InsertSTMT *sql.Stmt
|
||||
UpdateSTMT *sql.Stmt
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
@ -142,10 +135,8 @@ func main() {
|
|||
*pgConnStr,
|
||||
*pgBinary,
|
||||
*pgMode,
|
||||
*pgTable,
|
||||
*pgPathRow,
|
||||
*pgMd5Row,
|
||||
*pgSha256Row,
|
||||
nil,
|
||||
nil,
|
||||
}
|
||||
|
||||
if *outputFormat == "postgres" && pgSettings.ConnStr != "" {
|
||||
|
@ -154,6 +145,24 @@ func main() {
|
|||
log.Fatal(err)
|
||||
}
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue