@@ -35,6 +35,26 @@ func isValidKeySize(key []byte) bool {
35
35
return false
36
36
}
37
37
38
+ type Opts func (* Crypto ) error
39
+
40
+ func WithInitHeapConnection () Opts {
41
+ return func (c * Crypto ) error {
42
+ dsn := fmt .Sprintf ("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable" ,
43
+ * c .Host , * c .Port , * c .User , * c .Pass , * c .Name )
44
+ db , err := sql .Open ("postgres" , dsn )
45
+ if err != nil {
46
+ return err
47
+ }
48
+
49
+ if err := db .Ping (); err != nil {
50
+ return err
51
+ }
52
+
53
+ c .dbHeapPsql = db
54
+ return nil
55
+ }
56
+ }
57
+
38
58
type Crypto struct {
39
59
AESKey * string `env:"AES_KEY,expand" json:"aes_key"`
40
60
HMACKey * string `env:"HMAC_KEY,expand" json:"hmac_key"`
@@ -53,7 +73,7 @@ type Crypto struct {
53
73
keySize AesKeySize
54
74
}
55
75
56
- func New (keySize AesKeySize ) (c * Crypto , err error ) {
76
+ func New (keySize AesKeySize , opts ... Opts ) (c * Crypto , err error ) {
57
77
c = & Crypto {
58
78
keySize : keySize ,
59
79
}
@@ -62,6 +82,12 @@ func New(keySize AesKeySize) (c *Crypto, err error) {
62
82
return nil , err
63
83
}
64
84
85
+ for _ , opt := range opts {
86
+ if err = opt (c ); err != nil {
87
+ return nil , err
88
+ }
89
+ }
90
+
65
91
if c .AESKey == nil || c .HMACKey == nil {
66
92
return nil , errors .New ("key is required" )
67
93
}
0 commit comments