feat: Add ent-based sqlite3 storage
Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>
This commit is contained in:
44
storage/ent/client/utils.go
Normal file
44
storage/ent/client/utils.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"hash"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/dexidp/dex/storage"
|
||||
"github.com/dexidp/dex/storage/ent/db"
|
||||
)
|
||||
|
||||
func rollback(tx *db.Tx, t string, err error) error {
|
||||
rerr := tx.Rollback()
|
||||
err = convertDBError(t, err)
|
||||
|
||||
if rerr == nil {
|
||||
return err
|
||||
}
|
||||
return errors.Wrapf(err, "rolling back transaction: %v", rerr)
|
||||
}
|
||||
|
||||
func convertDBError(t string, err error) error {
|
||||
if db.IsNotFound(err) {
|
||||
return storage.ErrNotFound
|
||||
}
|
||||
|
||||
if db.IsConstraintError(err) {
|
||||
return storage.ErrAlreadyExists
|
||||
}
|
||||
|
||||
return fmt.Errorf(t, err)
|
||||
}
|
||||
|
||||
// compose hashed id from user and connection id to use it as primary key
|
||||
// ent doesn't support multi-key primary yet
|
||||
// https://github.com/facebook/ent/issues/400
|
||||
func offlineSessionID(userID string, connID string, hasher func() hash.Hash) string {
|
||||
h := hasher()
|
||||
|
||||
h.Write([]byte(userID))
|
||||
h.Write([]byte(connID))
|
||||
return fmt.Sprintf("%x", h.Sum(nil))
|
||||
}
|
Reference in New Issue
Block a user