Documentation
¶
Overview ¶
Package things contains the domain concept definitions needed to support Mainflux things service functionality.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrMalformedEntity indicates malformed entity specification (e.g. // invalid username or password). ErrMalformedEntity = errors.New("malformed entity specification") // when accessing a protected resource. ErrUnauthorizedAccess = errors.New("missing or invalid credentials provided") // ErrNotFound indicates a non-existent entity request. ErrNotFound = errors.New("non-existent entity") // ErrConflict indicates that entity already exists. ErrConflict = errors.New("entity already exists") )
Functions ¶
This section is empty.
Types ¶
type Channel ¶
Channel represents a Mainflux "communication group". This group contains the things that can exchange messages between eachother.
type ChannelCache ¶
type ChannelCache interface { // Connect channel thing connection. Connect(context.Context, string, string) error // HasThing checks if thing is connected to channel. HasThing(context.Context, string, string) bool // Disconnects thing from channel. Disconnect(context.Context, string, string) error // Removes channel from cache. Remove(context.Context, string) error }
ChannelCache contains channel-thing connection caching interface.
type ChannelRepository ¶
type ChannelRepository interface { // Save persists the channel. Successful operation is indicated by unique // identifier accompanied by nil error response. A non-nil error is // returned to indicate operation failure. Save(context.Context, Channel) (string, error) // Update performs an update to the existing channel. A non-nil error is // returned to indicate operation failure. Update(context.Context, Channel) error // RetrieveByID retrieves the channel having the provided identifier, that is owned // by the specified user. RetrieveByID(context.Context, string, string) (Channel, error) // RetrieveAll retrieves the subset of channels owned by the specified user. RetrieveAll(context.Context, string, uint64, uint64, string) (ChannelsPage, error) // RetrieveByThing retrieves the subset of channels owned by the specified // user and have specified thing connected to them. RetrieveByThing(context.Context, string, string, uint64, uint64) (ChannelsPage, error) // Remove removes the channel having the provided identifier, that is owned // by the specified user. Remove(context.Context, string, string) error // Connect adds thing to the channel's list of connected things. Connect(context.Context, string, string, string) error // Disconnect removes thing from the channel's list of connected // things. Disconnect(context.Context, string, string, string) error // HasThing determines whether the thing with the provided access key, is // "connected" to the specified channel. If that's the case, it returns // thing's ID. HasThing(context.Context, string, string) (string, error) // HasThingByID determines whether the thing with the provided ID, is // "connected" to the specified channel. If that's the case, then // returned error will be nil. HasThingByID(context.Context, string, string) error }
ChannelRepository specifies a channel persistence API.
type ChannelsPage ¶
type ChannelsPage struct { PageMetadata Channels []Channel }
ChannelsPage contains page related metadata as well as list of channels that belong to this page.
type IdentityProvider ¶
IdentityProvider specifies an API for generating unique identifiers.
type PageMetadata ¶
PageMetadata contains page metadata that helps navigation.
type Service ¶
type Service interface { // AddThing adds new thing to the user identified by the provided key. AddThing(context.Context, string, Thing) (Thing, error) // UpdateThing updates the thing identified by the provided ID, that // belongs to the user identified by the provided key. UpdateThing(context.Context, string, Thing) error // UpdateKey updates key value of the existing thing. A non-nil error is // returned to indicate operation failure. UpdateKey(context.Context, string, string, string) error // ViewThing retrieves data about the thing identified with the provided // ID, that belongs to the user identified by the provided key. ViewThing(context.Context, string, string) (Thing, error) // ListThings retrieves data about subset of things that belongs to the // user identified by the provided key. ListThings(context.Context, string, uint64, uint64, string) (ThingsPage, error) // ListThingsByChannel retrieves data about subset of things that are // connected to specified channel and belong to the user identified by // the provided key. ListThingsByChannel(context.Context, string, string, uint64, uint64) (ThingsPage, error) // RemoveThing removes the thing identified with the provided ID, that // belongs to the user identified by the provided key. RemoveThing(context.Context, string, string) error // CreateChannel adds new channel to the user identified by the provided key. CreateChannel(context.Context, string, Channel) (Channel, error) // UpdateChannel updates the channel identified by the provided ID, that // belongs to the user identified by the provided key. UpdateChannel(context.Context, string, Channel) error // ViewChannel retrieves data about the channel identified by the provided // ID, that belongs to the user identified by the provided key. ViewChannel(context.Context, string, string) (Channel, error) // ListChannels retrieves data about subset of channels that belongs to the // user identified by the provided key. ListChannels(context.Context, string, uint64, uint64, string) (ChannelsPage, error) // ListChannelsByThing retrieves data about subset of channels that have // specified thing connected to them and belong to the user identified by // the provided key. ListChannelsByThing(context.Context, string, string, uint64, uint64) (ChannelsPage, error) // RemoveChannel removes the thing identified by the provided ID, that // belongs to the user identified by the provided key. RemoveChannel(context.Context, string, string) error // Connect adds thing to the channel's list of connected things. Connect(context.Context, string, string, string) error // Disconnect removes thing from the channel's list of connected // things. Disconnect(context.Context, string, string, string) error // CanAccess determines whether the channel can be accessed using the // provided key and returns thing's id if access is allowed. CanAccess(context.Context, string, string) (string, error) // CanAccessByID determines whether the channnel can be accessed by // the given thing and returns error if it cannot. CanAccessByID(context.Context, string, string) error // Identify returns thing ID for given thing key. Identify(context.Context, string) (string, error) }
Service specifies an API that must be fullfiled by the domain service implementation, and all of its decorators (e.g. logging & metrics).
func New ¶
func New(users mainflux.UsersServiceClient, things ThingRepository, channels ChannelRepository, ccache ChannelCache, tcache ThingCache, idp IdentityProvider) Service
New instantiates the things service implementation.
type Thing ¶
Thing represents a Mainflux thing. Each thing is owned by one user, and it is assigned with the unique identifier and (temporary) access key.
type ThingCache ¶
type ThingCache interface { // Save stores pair thing key, thing id. Save(context.Context, string, string) error // ID returns thing ID for given key. ID(context.Context, string) (string, error) // Removes thing from cache. Remove(context.Context, string) error }
ThingCache contains thing caching interface.
type ThingRepository ¶
type ThingRepository interface { // Save persists the thing. Successful operation is indicated by non-nil // error response. Save(context.Context, Thing) (string, error) // Update performs an update to the existing thing. A non-nil error is // returned to indicate operation failure. Update(context.Context, Thing) error // UpdateKey updates key value of the existing thing. A non-nil error is // returned to indicate operation failure. UpdateKey(context.Context, string, string, string) error // RetrieveByID retrieves the thing having the provided identifier, that is owned // by the specified user. RetrieveByID(context.Context, string, string) (Thing, error) // RetrieveByKey returns thing ID for given thing key. RetrieveByKey(context.Context, string) (string, error) // RetrieveAll retrieves the subset of things owned by the specified user. RetrieveAll(context.Context, string, uint64, uint64, string) (ThingsPage, error) // RetrieveByChannel retrieves the subset of things owned by the specified // user and connected to specified channel. RetrieveByChannel(context.Context, string, string, uint64, uint64) (ThingsPage, error) // Remove removes the thing having the provided identifier, that is owned // by the specified user. Remove(context.Context, string, string) error }
ThingRepository specifies a thing persistence API.
type ThingsPage ¶
type ThingsPage struct { PageMetadata Things []Thing }
ThingsPage contains page related metadata as well as list of things that belong to this page.
Directories
¶
Path | Synopsis |
---|---|
Package api contains API-related concerns: endpoint definitions, middlewares and all resource representations.
|
Package api contains API-related concerns: endpoint definitions, middlewares and all resource representations. |
auth/grpc
Package grpc contains implementation of things service gRPC API.
|
Package grpc contains implementation of things service gRPC API. |
auth/http
Package http contains implementation of things auth service HTTP API.
|
Package http contains implementation of things auth service HTTP API. |
things/http
Package http contains implementation of things service HTTP API.
|
Package http contains implementation of things service HTTP API. |
Package postgres contains repository implementations using PostgreSQL as the underlying database.
|
Package postgres contains repository implementations using PostgreSQL as the underlying database. |
Package redis contains cache implementations using Redis as the underlying database.
|
Package redis contains cache implementations using Redis as the underlying database. |
Package tracing contains middlewares that will add spans to existing traces.
|
Package tracing contains middlewares that will add spans to existing traces. |
Package users contains implementation for users service in single user scenario.
|
Package users contains implementation for users service in single user scenario. |
Package uuid provides a UUID identity provider.
|
Package uuid provides a UUID identity provider. |