forked from smartcontractkit/chainlink
/
vrf_orm.go
62 lines (52 loc) · 2.18 KB
/
vrf_orm.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package keystore
import (
"github.com/DCMMC/chainlink/core/services/keystore/keys/vrfkey"
"gorm.io/gorm"
)
type VRFORM interface {
FirstOrCreateEncryptedSecretVRFKey(k *vrfkey.EncryptedVRFKey) error
ArchiveEncryptedSecretVRFKey(k *vrfkey.EncryptedVRFKey) error
DeleteEncryptedSecretVRFKey(k *vrfkey.EncryptedVRFKey) error
FindEncryptedSecretVRFKeys(where ...vrfkey.EncryptedVRFKey) ([]*vrfkey.EncryptedVRFKey, error)
FindEncryptedSecretVRFKeysIncludingArchived(where ...vrfkey.EncryptedVRFKey) ([]*vrfkey.EncryptedVRFKey, error)
}
type vrfORM struct {
db *gorm.DB
}
var _ VRFORM = &vrfORM{}
func NewVRFORM(db *gorm.DB) VRFORM {
return &vrfORM{
db: db,
}
}
// FirstOrCreateEncryptedVRFKey returns the first key found or creates a new one in the orm.
func (orm *vrfORM) FirstOrCreateEncryptedSecretVRFKey(k *vrfkey.EncryptedVRFKey) error {
return orm.db.FirstOrCreate(k).Error
}
// ArchiveEncryptedVRFKey soft-deletes k from the encrypted keys table, or errors
func (orm *vrfORM) ArchiveEncryptedSecretVRFKey(k *vrfkey.EncryptedVRFKey) error {
return orm.db.Delete(k).Error
}
// DeleteEncryptedVRFKey deletes k from the encrypted keys table, or errors
func (orm *vrfORM) DeleteEncryptedSecretVRFKey(k *vrfkey.EncryptedVRFKey) error {
return orm.db.Unscoped().Delete(k).Error
}
// FindEncryptedVRFKeys retrieves matches to where from the encrypted keys table, or errors
func (orm *vrfORM) FindEncryptedSecretVRFKeys(where ...vrfkey.EncryptedVRFKey) (
retrieved []*vrfkey.EncryptedVRFKey, err error) {
var anonWhere []interface{} // Find needs "where" contents coerced to interface{}
for _, constraint := range where {
c := constraint
anonWhere = append(anonWhere, &c)
}
return retrieved, orm.db.Find(&retrieved, anonWhere...).Order("created_at DESC, id DESC").Error
}
func (orm *vrfORM) FindEncryptedSecretVRFKeysIncludingArchived(where ...vrfkey.EncryptedVRFKey) (
retrieved []*vrfkey.EncryptedVRFKey, err error) {
var anonWhere []interface{} // Find needs "where" contents coerced to interface{}
for _, constraint := range where {
c := constraint
anonWhere = append(anonWhere, &c)
}
return retrieved, orm.db.Unscoped().Find(&retrieved, anonWhere...).Order("created_at DESC, id DESC").Error
}