package models import ( "maps" ) var _ Equaler[Metadata] = (*Metadata)(nil) type Metadata map[string]string func (m Metadata) Equal(v Metadata) bool { return maps.Equal(m, v) } func (m Metadata) ToMap() map[string]string { return m } func (m Metadata) Merge(d Metadata) Metadata { if len(m) == 0 && len(d) == 0 { return nil } r := make(Metadata) for k, v := range m { r[k] = v } for k, v := range d { r[k] = v } return r } func (m Metadata) Clone() Metadata { return maps.Clone(m) } func NewMetadata[T ~map[string]string](m T) Metadata { return Metadata(m) } type ( annotatedMarker bool // marker is used so only AnnotatedModel can implement Annotated Metadatad interface { annotated() annotatedMarker } ) type MetadataModel struct { Metadata Metadata `json:"metadata,omitempty"` } var _ Metadatad = MetadataModel{} func (a MetadataModel) annotated() annotatedMarker { return true }