Mainflux.mainflux/twins/states.go

44 lines
1.1 KiB
Go

// Copyright (c) Mainflux
// SPDX-License-Identifier: Apache-2.0
package twins
import (
"context"
"time"
)
// State stores actual snapshot of entity's values.
type State struct {
TwinID string
ID int64
Definition int
Created time.Time
Payload map[string]interface{}
}
// StatesPage contains page related metadata as well as a list of twins that
// belong to this page.
type StatesPage struct {
PageMetadata
States []State
}
// StateRepository specifies a state persistence API.
type StateRepository interface {
// Save persists the state
Save(ctx context.Context, state State) error
// Update updates the state
Update(ctx context.Context, state State) error
// Count returns the number of states related to state
Count(ctx context.Context, twin Twin) (int64, error)
// RetrieveAll retrieves the subset of states related to twin specified by id
RetrieveAll(ctx context.Context, offset uint64, limit uint64, twinID string) (StatesPage, error)
// RetrieveLast retrieves the last saved state
RetrieveLast(ctx context.Context, twinID string) (State, error)
}