Initial commit
This commit is contained in:
33
metadata.go
Normal file
33
metadata.go
Normal 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")
|
||||
}
|
||||
Reference in New Issue
Block a user