mirror of
https://github.com/mainflux/mainflux.git
synced 2025-04-27 13:48:49 +08:00

* Update increment ID to UUID in things service Update increment ID to UUID for things and channels in things service and proto files. Also, update ID type from uint to string. Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update increment ID to UUID in http adapter Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update increment ID to UUID in ws adapter Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update increment ID to UUID in CoAP adapter Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update increment ID to UUID in normalizer service Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update increment ID to UUID in writer services Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update increment ID to UUID in reader services Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update increment ID to UUID in SDK Update increment ID to UUID in SDK. Update id type to string. Update tests. Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update increment ID to UUID in mqtt adapter Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Remove unnecessary case from influxdb reader Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update tests in order to increase code coverage Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com> * Update lora adapter to use string ID instead of unsigned int Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
73 lines
1.8 KiB
Go
73 lines
1.8 KiB
Go
//
|
|
// Copyright (c) 2018
|
|
// Mainflux
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package things
|
|
|
|
import "strings"
|
|
|
|
// 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 Thing struct {
|
|
ID string
|
|
Owner string
|
|
Type string
|
|
Name string
|
|
Key string
|
|
Metadata string
|
|
}
|
|
|
|
var thingTypes = map[string]bool{
|
|
"app": true,
|
|
"device": true,
|
|
}
|
|
|
|
// Validate returns an error if thing representation is invalid.
|
|
func (c *Thing) Validate() error {
|
|
if c.Type = strings.ToLower(c.Type); !thingTypes[c.Type] {
|
|
return ErrMalformedEntity
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// ThingRepository specifies a thing persistence API.
|
|
type ThingRepository interface {
|
|
// Save persists the thing. Successful operation is indicated by non-nil
|
|
// error response.
|
|
Save(Thing) (string, error)
|
|
|
|
// Update performs an update to the existing thing. A non-nil error is
|
|
// returned to indicate operation failure.
|
|
Update(Thing) error
|
|
|
|
// RetrieveByID retrieves the thing having the provided identifier, that is owned
|
|
// by the specified user.
|
|
RetrieveByID(string, string) (Thing, error)
|
|
|
|
// RetrieveByKey returns thing ID for given thing key.
|
|
RetrieveByKey(string) (string, error)
|
|
|
|
// RetrieveAll retrieves the subset of things owned by the specified user.
|
|
RetrieveAll(string, uint64, uint64) []Thing
|
|
|
|
// Remove removes the thing having the provided identifier, that is owned
|
|
// by the specified user.
|
|
Remove(string, string) error
|
|
}
|
|
|
|
// ThingCache contains thing caching interface.
|
|
type ThingCache interface {
|
|
// Save stores pair thing key, thing id.
|
|
Save(string, string) error
|
|
|
|
// ID returns thing ID for given key.
|
|
ID(string) (string, error)
|
|
|
|
// Removes thing from cache.
|
|
Remove(string) error
|
|
}
|