Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DB implementation for binding store
Browse files Browse the repository at this point in the history
Signed-off-by: Alexandros Filios <[email protected]>
alexandrosfilios committed Jan 16, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 214e225 commit a636eb5
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions platform/view/services/db/driver/sql/common/binding.go
Original file line number Diff line number Diff line change
@@ -72,20 +72,17 @@ func (db *BindingPersistence) PutBinding(ephemeral, longTerm view.Identity) erro
"INSERT INTO %s (ephemeral_hash, long_term_id) "+
"SELECT '%s', long_term_id FROM %s WHERE ephemeral_hash=$1",
db.table, ephemeral.UniqueID(), db.table)
result, err := db.writeDB.Exec(query, longTerm.UniqueID())
if err != nil {
return errors.Wrapf(err, "failed executing query [%s]", query)
}
rowsAffected, err := result.RowsAffected()
if err != nil {
return errors.Wrapf(err, "query failed: %s", query)
}

if rowsAffected > 1 {
if result, err := db.writeDB.Exec(query, longTerm.UniqueID()); err != nil && errors.Is(db.errorWrapper.WrapError(err), driver.UniqueKeyViolation) {
logger.Warnf("Tuple [%s,%s] already in db. Skipping...", ephemeral, longTerm)
return nil
} else if err != nil {
return errors.Wrapf(err, "failed executing query [%s]", query)
} else if rowsAffected, err := result.RowsAffected(); err != nil {
return errors.Wrapf(err, "failed fetching affected rows for query: %s", query)
} else if rowsAffected > 1 {
panic("unexpected result")
}

if rowsAffected == 1 {
} else if rowsAffected == 1 {
logger.Debugf("New binding registered [%s:%s]", ephemeral, longTerm)
return nil
}
@@ -96,11 +93,11 @@ func (db *BindingPersistence) PutBinding(ephemeral, longTerm view.Identity) erro
// return errors.Wrapf(err, "failed inserting long-term id and ephemeral id")
//}
query = fmt.Sprintf("INSERT INTO %s (ephemeral_hash, long_term_id) VALUES ($1, $2)", db.table)
if _, err = db.writeDB.Exec(query, longTerm.UniqueID(), longTerm); err != nil {
if _, err := db.writeDB.Exec(query, longTerm.UniqueID(), longTerm); err != nil {
return errors.Wrapf(err, "failed inserting long-term id and ephemeral id")
}
query = fmt.Sprintf("INSERT INTO %s (ephemeral_hash, long_term_id) VALUES ($1, $2)", db.table)
if _, err = db.writeDB.Exec(query, ephemeral.UniqueID(), longTerm); err != nil {
if _, err := db.writeDB.Exec(query, ephemeral.UniqueID(), longTerm); err != nil {
return errors.Wrapf(err, "failed inserting long-term id and ephemeral id")
}
logger.Infof("Long-term and ephemeral ids registered [%s,%s]", longTerm, ephemeral)

0 comments on commit a636eb5

Please sign in to comment.