pkg/lockedfile/metadata.go (38 lines of code) (raw):
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
package lockedfile
import (
"encoding/json"
"time"
)
// this is how you do enums in golang
type UpdateMetadataOperation int
const (
updateOpenTime UpdateMetadataOperation = iota
updateCloseTime
)
type Metadata struct {
LastOpened string `json:"LastOpened"`
LastClosed string `json:"LastClosed"`
}
func (self *Metadata) SetLastOpenedToNow() {
now := time.Now()
self.LastOpened = now.Format(time.RFC3339Nano)
}
func (self *Metadata) SetLastClosedToNow() {
now := time.Now()
self.LastClosed = now.Format(time.RFC3339Nano)
}
func (self *Metadata) writeMetadataToLockedFile(lockedFile ILockedFile) error {
bytes, err := json.Marshal(self)
if err != nil {
return err
}
return lockedFile.WriteLockedFile(bytes)
}
func (self *Metadata) updateAndWriteMetadata(lockedFile ILockedFile, updateOperation UpdateMetadataOperation) error {
switch updateOperation {
case updateOpenTime:
self.SetLastOpenedToNow()
case updateCloseTime:
self.SetLastClosedToNow()
}
return self.writeMetadataToLockedFile(lockedFile)
}