aboutsummaryrefslogtreecommitdiff
path: root/utils.go
diff options
context:
space:
mode:
authorEmiliano Ciavatta2020-04-13 15:12:35 +0000
committerEmiliano Ciavatta2020-04-13 15:12:35 +0000
commita56a4e391d541ae05de0203f3d493edc3b04681d (patch)
treeab9344a650305aafb5afe552dc8cad63684de643 /utils.go
parent7113463dead05631339fdab94de9440201c42489 (diff)
Add AddRoute tests
Diffstat (limited to 'utils.go')
-rw-r--r--utils.go32
1 files changed, 31 insertions, 1 deletions
diff --git a/utils.go b/utils.go
index cc99d93..cb60ea6 100644
--- a/utils.go
+++ b/utils.go
@@ -2,9 +2,13 @@ package main
import (
"crypto/sha256"
+ "encoding/binary"
+ "encoding/hex"
+ log "github.com/sirupsen/logrus"
+ "go.mongodb.org/mongo-driver/bson/primitive"
"io"
- "log"
"os"
+ "time"
)
const invalidHashString = "invalid"
@@ -28,3 +32,29 @@ func Sha256Sum(fileName string) (string, error) {
return string(h.Sum(nil)), nil
}
+
+func CustomRowID(payload uint64, timestamp time.Time) RowID {
+ var key [12]byte
+ binary.BigEndian.PutUint32(key[0:4], uint32(timestamp.Unix()))
+ binary.BigEndian.PutUint64(key[4:12], payload)
+
+ if oid, err := primitive.ObjectIDFromHex(hex.EncodeToString(key[:])); err == nil {
+ return oid
+ } else {
+ log.WithError(err).Warn("failed to create object id")
+ return primitive.NewObjectID()
+ }
+}
+
+func NewRowID() RowID {
+ return primitive.NewObjectID()
+}
+
+func EmptyRowID() RowID {
+ return [12]byte{}
+}
+
+func RowIDFromHex(hex string) (RowID, error) {
+ rowID, err := primitive.ObjectIDFromHex(hex)
+ return rowID, err
+}