Documentation
¶
Index ¶
- Constants
- Variables
- func Backup(hnd *Handler, path string, now time.Time) error
- func DecodeTimestamp(data []byte) (*time.Time, error)
- func EncodeTimestamp(t time.Time) ([]byte, error)
- func GetRescueDelay() int
- func GetSyncRows(tx *bolt.Tx, userUUID uuid.UUID, excludeDatabaseUUID uuid.UUID, ...) ([]*pb.SyncRowStorage, bool, *timestamppb.Timestamp, error)
- func MakeSyncRowStorageKey(updatedAt time.Time, userUUID uuid.UUID, databaseUUID uuid.UUID, ...) ([]byte, error)
- func ParseDatabaseId(key []byte) (databaseID uuid.UUID, err error)
- func ParseUserUUID(key []byte) (userUUID uuid.UUID, err error)
- func SetAndCheckRescueMode(handler *Handler, userUUID uuid.UUID, rescueDelay int) error
- func StoreSyncRow(tx *bolt.Tx, data *SyncData) error
- func UpsertRow(tx *bolt.Tx, key []byte, row *pb.SyncRowStorage) error
- type Handler
- func (handler *Handler) BatchCtxSync(ctx context.Context, fn func(tx *bolt.Tx) error) error
- func (handler *Handler) Close()
- func (handler *Handler) UpdateCtxAuth(ctx context.Context, fn func(tx *bolt.Tx) error) error
- func (handler *Handler) UpdateCtxSync(ctx context.Context, fn func(tx *bolt.Tx) error) error
- func (handler *Handler) ViewCtxAuth(ctx context.Context, fn func(tx *bolt.Tx) error) error
- func (handler *Handler) ViewCtxSync(ctx context.Context, fn func(tx *bolt.Tx) error) error
- type RescueData
- type SyncData
Constants ¶
const GBucketBackupData = "backup_data"
const GBucketEmailIndex = "emails_users_index"
const GBucketRefreshToken = "refresh_tokens"
const GBucketSync = "sync"
const GBucketUsers = "users"
bucket du handler auth
Variables ¶
var MakeErrBucketNotFound func(bucketName string) error = func(bucketName string) error { return fmt.Errorf("le bucket %s n'existe pas", bucketName) }
Functions ¶
func Backup ¶
Backup exécute une sauvegarde cohérente des bases de données auth et sync. Elle crée deux fichiers de sauvegarde horodatés dans le répertoire `path`. La sauvegarde est une opération non-destructive (en lecture seule) sur les bases de production. Un "breakpoint" temporel est injecté dans la sauvegarde de la base de synchronisation pour permettre une récupération de données après une restauration.
func DecodeTimestamp ¶
Decode un timestamp depuis un buffer de 16 bytes exactement
func EncodeTimestamp ¶
Encode un timestamp dans un buffer de 16 bytes exactement
func GetRescueDelay ¶
func GetRescueDelay() int
Retourne le nombre de jours max où le serveur peut rester en mode rescue
func GetSyncRows ¶
func GetSyncRows(tx *bolt.Tx, userUUID uuid.UUID, excludeDatabaseUUID uuid.UUID, fromDate time.Time, maxOperations uint64) ([]*pb.SyncRowStorage, bool, *timestamppb.Timestamp, error)
GetSyncRows récupère toutes les SyncRows pour un utilisateur à partir d'une certaine date, en excluant celles provenant d'un `databaseId` spécifique.
func MakeSyncRowStorageKey ¶
func MakeSyncRowStorageKey(updatedAt time.Time, userUUID uuid.UUID, databaseUUID uuid.UUID, entityUUID uuid.UUID, clientTaskUUID uuid.UUID) ([]byte, error)
MakeSyncRowStorageKey fabrique la clée de stockage du bucket de sync La structure est optimisée pour la localité des données par utilisateur et le tri chronologique. [userUUID][timestamp][databaseUUID][entityUUID][clientTaskUUID] [ 16 ][ 16 ][ 16 ][ 16 ][ 16 ] = 80 octets
func ParseDatabaseId ¶
ParseDatabaseId extrait le databaseID d'une clé de 80 octets. La structure de la clé est : [0-15]: userUUID | [16-31]: timestamp | [32-47]: databaseUUID | [48-63]: entityUUID | [64-79]: clientTaskUUID
func ParseUserUUID ¶
ParseUserUUID extrait l'user uuid d'une clé de 80 octets. La structure de la clé est : [0-15]: userUUID | [16-31]: timestamp | [32-47]: databaseUUID | [48-63]: entityUUID | [64-79]: clientTaskUUID
func SetAndCheckRescueMode ¶
func StoreSyncRow ¶
Insert une ligne dans le bucket Sync Si un pre insert hook est trigger, retourne un payload à ajouter à la réponse
Types ¶
type Handler ¶
type Handler struct {
Rescue *RescueData
// contains filtered or unexported fields
}