package store import ( "encoding/json" "jjl-tools/tinodeService/store/types" ) // Unique ID generator var uGen types.UidGenerator type configType struct { // 16-byte key for XTEA. Used to initialize types.UidGenerator. UidKey []byte `json:"uid_key"` // Maximum number of results to return from adapter. MaxResults int `json:"max_results"` // Configurations for individual adapters. Adapters map[string]json.RawMessage `json:"adapters"` } // GetUid generates a unique ID suitable for use as a primary key. func GetUid() types.Uid { return uGen.Get() } // GetUidString generate unique ID as string func GetUidString() string { return uGen.GetStr() } // DecodeUid takes an XTEA encrypted Uid and decrypts it into an int64. // This is needed for sql compatibility. Tte original int64 values // are generated by snowflake which ensures that the top bit is unset. func DecodeUid(uid types.Uid) int64 { if uid.IsZero() { return 0 } return uGen.DecodeUid(uid) } // EncodeUid applies XTEA encryption to an int64 value. It's the inverse of DecodeUid. func EncodeUid(id int64) types.Uid { if id == 0 { return types.ZeroUid } return uGen.EncodeInt64(id) } // UsersObjMapper is a users struct to hold methods for persistence mapping for the User object. type UsersObjMapper struct{} // Users is the ancor for storing/retrieving User objects var Users UsersObjMapper