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 `json:"id"` Owner string `json:"-"` Type string `json:"type"` Name string `json:"name,omitempty"` Key string `json:"key"` Payload string `json:"payload,omitempty"` } 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 // One retrieves the thing having the provided identifier, that is owned // by the specified user. One(string, string) (Thing, error) // All retrieves the subset of things owned by the specified user. All(string, int, int) []Thing // Remove removes the thing having the provided identifier, that is owned // by the specified user. Remove(string, string) error }