good morning!!!!

Skip to content
Snippets Groups Projects
hash.go 416 B
Newer Older
package sqlgen

import (
	"reflect"
	"sync/atomic"

	"upper.io/db.v2/builder/cache"
)

type Hasher interface {
	Hash() string
}

type MemHash struct {
	v atomic.Value
}

func (h *MemHash) Hash(i interface{}) string {
	v := h.v.Load()
	if r, ok := v.(string); ok && r != "" {
		return r
	}
	s := reflect.TypeOf(i).String() + "." + cache.Hash(i)
	h.v.Store(s)
	return s
}

func (h *MemHash) Reset() {
	h.v.Store("")