36 lines
1.3 KiB
Go
36 lines
1.3 KiB
Go
package storage
|
|
|
|
import (
|
|
"cwtch.im/cwtch/event"
|
|
"cwtch.im/cwtch/model"
|
|
"cwtch.im/cwtch/storage/v1"
|
|
)
|
|
|
|
// ProfileStore is an interface to managing the storage of Cwtch Profiles
|
|
type ProfileStore interface {
|
|
GetProfileCopy(timeline bool) *model.Profile
|
|
GetNewPeerMessage() *event.Event
|
|
CheckPassword(string) bool
|
|
}
|
|
|
|
// CreateProfileWriterStore creates a profile store backed by a filestore listening for events and saving them
|
|
// directory should be $appDir/profiles/$rand
|
|
func CreateProfileWriterStore(eventManager event.Manager, directory, password string, profile *model.Profile) ProfileStore {
|
|
return v1.CreateProfileWriterStore(eventManager, directory, password, profile)
|
|
}
|
|
|
|
// LoadProfileWriterStore loads a profile store from filestore listening for events and saving them
|
|
// directory should be $appDir/profiles/$rand
|
|
func LoadProfileWriterStore(directory, password string) (ProfileStore, error) {
|
|
return v1.LoadProfileWriterStore(directory, password)
|
|
}
|
|
|
|
// ReadProfile reads a profile from storage and returns the profile
|
|
// Should only be called for cache refresh of the profile after a ProfileWriterStore has opened
|
|
// (and upgraded) the store, and thus supplied the key/salt
|
|
func ReadProfile(directory string, key [32]byte, salt [128]byte) (*model.Profile, error) {
|
|
return v1.ReadProfile(directory, key, salt)
|
|
}
|
|
|
|
// ********* Versioning and upgrade **********
|