Initial commit

This commit is contained in:
Ian Gulliver
2023-04-20 05:17:28 +00:00
parent 85d5f71d5d
commit 07b5bec219
5 changed files with 122 additions and 0 deletions

33
metadata.go Normal file
View File

@@ -0,0 +1,33 @@
package metadata
import (
"reflect"
)
type Metadata struct {
ID string `json:"id"`
ETag string `json:"etag"`
Generation int64 `json:"generation"`
}
func HasMetadata(obj any) bool {
return getMetadataField(obj).IsValid()
}
func GetMetadata(obj any) *Metadata {
return getMetadataField(obj).Addr().Interface().(*Metadata)
}
func ClearMetadata(obj any) {
SetMetadata(obj, &Metadata{})
}
func SetMetadata(obj any, md *Metadata) {
getMetadataField(obj).Set(reflect.ValueOf(*md))
}
func getMetadataField(obj any) reflect.Value {
v := reflect.ValueOf(obj)
return reflect.Indirect(v).FieldByName("Metadata")
}