Add PostgreSQL database option and more booking flow functionalities
This commit is contained in:
62
interoperability/ocss/time.go
Normal file
62
interoperability/ocss/time.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package ocss
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/bsontype"
|
||||
"go.mongodb.org/mongo-driver/x/bsonx/bsoncore"
|
||||
)
|
||||
|
||||
type OCSSTime time.Time
|
||||
|
||||
func (t OCSSTime) MarshalJSON() ([]byte, error) {
|
||||
//do your serializing here
|
||||
stamp := fmt.Sprintf("%v", time.Time(t).Unix())
|
||||
return []byte(stamp), nil
|
||||
}
|
||||
|
||||
func (v OCSSTime) MarshalBSONValue() (bsontype.Type, []byte, error) {
|
||||
return bson.MarshalValue(time.Time(v))
|
||||
}
|
||||
|
||||
func (t *OCSSTime) UnmarshalJSON(b []byte) error {
|
||||
var timestamp int64
|
||||
err := json.Unmarshal(b, ×tamp)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
parsed := time.Unix(timestamp, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ocsstime := OCSSTime(parsed)
|
||||
*t = ocsstime
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *OCSSTime) UnmarshalBSONValue(bt bsontype.Type, b []byte) error {
|
||||
|
||||
if bt == bsontype.Null || len(b) == 0 {
|
||||
return nil
|
||||
}
|
||||
datetime, _, ok := bsoncore.ReadTime(b)
|
||||
if !ok {
|
||||
return fmt.Errorf("cannot parse time")
|
||||
}
|
||||
|
||||
*t = OCSSTime(datetime)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *OCSSTime) ToTime() *time.Time {
|
||||
if t == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
time := time.Time(*t)
|
||||
return &time
|
||||
}
|
||||
Reference in New Issue
Block a user