common/idmapping.go (51 lines of code) (raw):
package common
import (
"fmt"
"github.com/aws/aws-sdk-go-v2/service/dynamodb/types"
"log"
"time"
)
type IdMappingRecord struct {
UUID string
ContentId int32
Filebase string //base index
Project *string
Lastupdate time.Time //range key for all indices
Octopus_id *int64 //indexed
}
func NewIdMappingRecord() *IdMappingRecord {
uidStr, err := GenerateUuidString()
if err != nil {
log.Fatal("Could not generate uuid: ", err)
}
return &IdMappingRecord{UUID: uidStr}
}
func (r *IdMappingRecord) RegenerateUUID() {
uidStr, err := GenerateUuidString()
if err != nil {
log.Fatal("Could not generate uuid: ", err)
}
r.UUID = uidStr
}
func (r *IdMappingRecord) ToDynamoRecord() map[string]types.AttributeValue {
var maybeProjectAttr types.AttributeValue
if p := r.Project; p != nil {
maybeProjectAttr = &types.AttributeValueMemberS{Value: *r.Project}
} else {
maybeProjectAttr = &types.AttributeValueMemberNULL{Value: true}
}
var maybeOctId types.AttributeValue
if o := r.Octopus_id; o != nil {
maybeOctId = &types.AttributeValueMemberN{Value: fmt.Sprintf("%d", o)}
} else {
maybeOctId = &types.AttributeValueMemberNULL{Value: true}
}
return map[string]types.AttributeValue{
"uuid": &types.AttributeValueMemberS{Value: r.UUID},
"contentid": &types.AttributeValueMemberN{Value: fmt.Sprintf("%d", r.ContentId)},
"filebase": &types.AttributeValueMemberS{Value: r.Filebase},
"project": maybeProjectAttr,
"lastupdate": &types.AttributeValueMemberS{Value: r.Lastupdate.Format(time.RFC3339)},
"octopusId": maybeOctId,
}
}