Documentation
¶
Index ¶
- Constants
- Variables
- func AddDeviceToMulticastGroup(ctx context.Context, db sqlx.Ext, multicastGroupID uuid.UUID, ...) error
- func CodeMigration(name string, f func(db sqlx.Ext) error) error
- func CreateAPIKey(ctx context.Context, db sqlx.Ext, a *APIKey) (string, error)
- func CreateApplication(ctx context.Context, db sqlx.Queryer, item *Application) error
- func CreateDevice(ctx context.Context, db sqlx.Ext, d *Device) error
- func CreateDeviceKeys(ctx context.Context, db sqlx.Execer, dc *DeviceKeys) error
- func CreateDeviceProfile(ctx context.Context, db sqlx.Ext, dp *DeviceProfile) error
- func CreateGateway(ctx context.Context, db sqlx.Execer, gw *Gateway) error
- func CreateGatewayPing(ctx context.Context, db sqlx.Queryer, ping *GatewayPing) error
- func CreateGatewayPingRX(ctx context.Context, db sqlx.Queryer, rx *GatewayPingRX) error
- func CreateGatewayProfile(ctx context.Context, db sqlx.Ext, gp *GatewayProfile) error
- func CreateIntegration(ctx context.Context, db sqlx.Queryer, i *Integration) error
- func CreateMulticastGroup(ctx context.Context, db sqlx.Ext, mg *MulticastGroup) error
- func CreateNetworkServer(ctx context.Context, db sqlx.Queryer, n *NetworkServer) error
- func CreateOrganization(ctx context.Context, db sqlx.Queryer, org *Organization) error
- func CreateOrganizationUser(ctx context.Context, db sqlx.Execer, organizationID, userID int64, ...) error
- func CreateServiceProfile(ctx context.Context, db sqlx.Ext, sp *ServiceProfile) error
- func CreateUser(ctx context.Context, db sqlx.Queryer, user *User) error
- func DeleteAPIKey(ctx context.Context, db sqlx.Ext, id uuid.UUID) error
- func DeleteAllApplicationsForOrganizationID(ctx context.Context, db sqlx.Ext, organizationID int64) error
- func DeleteAllDeviceProfilesForOrganizationID(ctx context.Context, db sqlx.Ext, organizationID int64) error
- func DeleteAllDevicesForApplicationID(ctx context.Context, db sqlx.Ext, applicationID int64) error
- func DeleteAllGatewaysForOrganizationID(ctx context.Context, db sqlx.Ext, organizationID int64) error
- func DeleteAllServiceProfilesForOrganizationID(ctx context.Context, db sqlx.Ext, organizationID int64) error
- func DeleteApplication(ctx context.Context, db sqlx.Ext, id int64) error
- func DeleteDevice(ctx context.Context, db sqlx.Ext, devEUI lorawan.EUI64) error
- func DeleteDeviceKeys(ctx context.Context, db sqlx.Execer, devEUI lorawan.EUI64) error
- func DeleteDeviceProfile(ctx context.Context, db sqlx.Ext, id uuid.UUID) error
- func DeleteGateway(ctx context.Context, db sqlx.Ext, mac lorawan.EUI64) error
- func DeleteGatewayProfile(ctx context.Context, db sqlx.Ext, id uuid.UUID) error
- func DeleteIntegration(ctx context.Context, db sqlx.Execer, id int64) error
- func DeleteMulticastGroup(ctx context.Context, db sqlx.Ext, id uuid.UUID) error
- func DeleteNetworkServer(ctx context.Context, db sqlx.Ext, id int64) error
- func DeleteOrganization(ctx context.Context, db sqlx.Ext, id int64) error
- func DeleteOrganizationUser(ctx context.Context, db sqlx.Execer, organizationID, userID int64) error
- func DeleteServiceProfile(ctx context.Context, db sqlx.Ext, id uuid.UUID) error
- func DeleteUser(ctx context.Context, db sqlx.Execer, id int64) error
- func EnqueueDownlinkPayload(ctx context.Context, db sqlx.Ext, devEUI lorawan.EUI64, confirmed bool, ...) (uint32, error)
- func GetAPIKeyCount(ctx context.Context, db sqlx.Queryer, filters APIKeyFilters) (int, error)
- func GetApplicationCount(ctx context.Context, db sqlx.Queryer, filters ApplicationFilters) (int, error)
- func GetDeviceCount(ctx context.Context, db sqlx.Queryer, filters DeviceFilters) (int, error)
- func GetDeviceCountForMulticastGroup(ctx context.Context, db sqlx.Queryer, multicastGroup uuid.UUID) (int, error)
- func GetDeviceProfileCount(ctx context.Context, db sqlx.Queryer, filters DeviceProfileFilters) (int, error)
- func GetGatewayCount(ctx context.Context, db sqlx.Queryer, filters GatewayFilters) (int, error)
- func GetGatewayProfileCount(ctx context.Context, db sqlx.Queryer) (int, error)
- func GetGatewayProfileCountForNetworkServerID(ctx context.Context, db sqlx.Queryer, networkServerID int64) (int, error)
- func GetGatewaysForMACs(ctx context.Context, db sqlx.Queryer, macs []lorawan.EUI64) (map[lorawan.EUI64]Gateway, error)
- func GetLastGatewayPingAndRX(ctx context.Context, db sqlx.Queryer, mac lorawan.EUI64) (GatewayPing, []GatewayPingRX, error)
- func GetMulticastGroupCount(ctx context.Context, db sqlx.Queryer, filters MulticastGroupFilters) (int, error)
- func GetNetworkServerCount(ctx context.Context, db sqlx.Queryer, filters NetworkServerFilters) (int, error)
- func GetOrganizationCount(ctx context.Context, db sqlx.Queryer, filters OrganizationFilters) (int, error)
- func GetOrganizationUserCount(ctx context.Context, db sqlx.Queryer, organizationID int64) (int, error)
- func GetRedisKey(tmpl string, params ...interface{}) string
- func GetServiceProfileCount(ctx context.Context, db sqlx.Queryer, filters ServiceProfileFilters) (int, error)
- func GetUserCount(ctx context.Context, db sqlx.Queryer) (int, error)
- func GetUserToken(u User) (string, error)
- func LoginUserByPassword(ctx context.Context, db sqlx.Queryer, email string, password string) (string, error)
- func MigrateDown(db *sqlx.DB) error
- func MigrateUp(db *sqlx.DB) error
- func RedisClient() redis.UniversalClient
- func RemoveDeviceFromMulticastGroup(ctx context.Context, db sqlx.Ext, multicastGroupID uuid.UUID, ...) error
- func SaveMetrics(ctx context.Context, name string, metrics MetricsRecord) error
- func SaveMetricsForInterval(ctx context.Context, agg AggregationInterval, name string, ...) error
- func SetAggregationIntervals(intervals []AggregationInterval) error
- func SetMetricsTTL(minute, hour, day, month time.Duration)
- func SetTimeLocation(name string) error
- func Setup(c config.Config) error
- func Transaction(f func(tx sqlx.Ext) error) error
- func UpdateApplication(ctx context.Context, db sqlx.Execer, item Application) error
- func UpdateDevice(ctx context.Context, db sqlx.Ext, d *Device, localOnly bool) error
- func UpdateDeviceActivation(ctx context.Context, db sqlx.Ext, devEUI lorawan.EUI64, ...) error
- func UpdateDeviceKeys(ctx context.Context, db sqlx.Execer, dc *DeviceKeys) error
- func UpdateDeviceLastSeenAndDR(ctx context.Context, db sqlx.Ext, devEUI lorawan.EUI64, ts time.Time, dr int) error
- func UpdateDeviceProfile(ctx context.Context, db sqlx.Ext, dp *DeviceProfile) error
- func UpdateGateway(ctx context.Context, db sqlx.Execer, gw *Gateway) error
- func UpdateGatewayProfile(ctx context.Context, db sqlx.Ext, gp *GatewayProfile) error
- func UpdateIntegration(ctx context.Context, db sqlx.Execer, i *Integration) error
- func UpdateMulticastGroup(ctx context.Context, db sqlx.Ext, mg *MulticastGroup) error
- func UpdateNetworkServer(ctx context.Context, db sqlx.Execer, n *NetworkServer) error
- func UpdateOrganization(ctx context.Context, db sqlx.Execer, org *Organization) error
- func UpdateOrganizationUser(ctx context.Context, db sqlx.Execer, organizationID, userID int64, ...) error
- func UpdateServiceProfile(ctx context.Context, db sqlx.Ext, sp *ServiceProfile) error
- func UpdateUser(ctx context.Context, db sqlx.Execer, u *User) error
- type APIKey
- type APIKeyFilters
- type Action
- type AggregationInterval
- type Application
- type ApplicationFilters
- type ApplicationListItem
- type DBLogger
- func (db *DBLogger) Beginx() (*TxLogger, error)
- func (db *DBLogger) Exec(query string, args ...interface{}) (sql.Result, error)
- func (db *DBLogger) Query(query string, args ...interface{}) (*sql.Rows, error)
- func (db *DBLogger) QueryRowx(query string, args ...interface{}) *sqlx.Row
- func (db *DBLogger) Queryx(query string, args ...interface{}) (*sqlx.Rows, error)
- type Device
- type DeviceFilters
- type DeviceKeys
- type DeviceListItem
- type DeviceProfile
- type DeviceProfileFilters
- type DeviceProfileMeta
- type DevicesActiveInactive
- type DevicesDataRates
- type ExtraChannel
- type GPSPoint
- type Gateway
- type GatewayFilters
- type GatewayListItem
- type GatewayPing
- type GatewayPingRX
- type GatewayProfile
- type GatewayProfileMeta
- type GatewaysActiveInactive
- type Integration
- func GetIntegration(ctx context.Context, db sqlx.Queryer, id int64) (Integration, error)
- func GetIntegrationByApplicationID(ctx context.Context, db sqlx.Queryer, applicationID int64, kind string) (Integration, error)
- func GetIntegrationsForApplicationID(ctx context.Context, db sqlx.Queryer, applicationID int64) ([]Integration, error)
- type MetricsRecord
- type MulticastGroup
- type MulticastGroupFilters
- type MulticastGroupListItem
- type NetworkServer
- func GetNetworkServer(ctx context.Context, db sqlx.Queryer, id int64) (NetworkServer, error)
- func GetNetworkServerForApplicationID(ctx context.Context, db sqlx.Queryer, id int64) (NetworkServer, error)
- func GetNetworkServerForDevEUI(ctx context.Context, db sqlx.Queryer, devEUI lorawan.EUI64) (NetworkServer, error)
- func GetNetworkServerForDeviceProfileID(ctx context.Context, db sqlx.Queryer, id uuid.UUID) (NetworkServer, error)
- func GetNetworkServerForGatewayMAC(ctx context.Context, db sqlx.Queryer, mac lorawan.EUI64) (NetworkServer, error)
- func GetNetworkServerForGatewayProfileID(ctx context.Context, db sqlx.Queryer, id uuid.UUID) (NetworkServer, error)
- func GetNetworkServerForMulticastGroupID(ctx context.Context, db sqlx.Queryer, id uuid.UUID) (NetworkServer, error)
- func GetNetworkServerForServiceProfileID(ctx context.Context, db sqlx.Queryer, id uuid.UUID) (NetworkServer, error)
- func GetNetworkServers(ctx context.Context, db sqlx.Queryer, filters NetworkServerFilters) ([]NetworkServer, error)
- type NetworkServerFilters
- type Organization
- type OrganizationFilters
- type OrganizationUser
- type SearchResult
- type ServiceProfile
- type ServiceProfileFilters
- type ServiceProfileMeta
- type TxLogger
- func (q *TxLogger) Exec(query string, args ...interface{}) (sql.Result, error)
- func (q *TxLogger) Query(query string, args ...interface{}) (*sql.Rows, error)
- func (q *TxLogger) QueryRowx(query string, args ...interface{}) *sqlx.Row
- func (q *TxLogger) Queryx(query string, args ...interface{}) (*sqlx.Rows, error)
- type User
- func GetUser(ctx context.Context, db sqlx.Queryer, id int64) (User, error)
- func GetUserByEmail(ctx context.Context, db sqlx.Queryer, email string) (User, error)
- func GetUserByExternalID(ctx context.Context, db sqlx.Queryer, externalID string) (User, error)
- func GetUsers(ctx context.Context, db sqlx.Queryer, limit, offset int) ([]User, error)
- type UserProfile
- type UserProfileOrganization
- type UserProfileUser
Constants ¶
const ( ModulationFSK = "FSK" ModulationLoRa = "LORA" )
Modulations
Variables ¶
var ( ErrAlreadyExists = errors.New("object already exists") ErrDoesNotExist = errors.New("object does not exist") ErrUsedByOtherObjects = errors.New("this object is used by other objects, remove them first") ErrApplicationInvalidName = errors.New("invalid application name") ErrNodeInvalidName = errors.New("invalid node name") ErrNodeMaxRXDelay = errors.New("max value of RXDelay is 15") ErrCFListTooManyChannels = errors.New("too many channels in channel-list") ErrUserInvalidUsername = errors.New("username name may only be composed of upper and lower case characters and digits") ErrUserPasswordLength = errors.New("passwords must be at least 6 characters long") ErrInvalidUsernameOrPassword = errors.New("invalid username or password") ErrOrganizationInvalidName = errors.New("invalid organization name") ErrGatewayInvalidName = errors.New("invalid gateway name") ErrInvalidEmail = errors.New("invalid e-mail") ErrInvalidGatewayDiscoveryInterval = errors.New("invalid gateway-discovery interval, it must be greater than 0") ErrDeviceProfileInvalidName = errors.New("invalid device-profile name") ErrServiceProfileInvalidName = errors.New("invalid service-profile name") ErrMulticastGroupInvalidName = errors.New("invalid multicast-group name") ErrOrganizationMaxDeviceCount = errors.New("organization reached max. device count") ErrOrganizationMaxGatewayCount = errors.New("organization reached max. gateway count") ErrNetworkServerInvalidName = errors.New("invalid network-server name") ErrAPIKeyInvalidName = errors.New("invalid API Key name") )
errors
var ( // ErrTransactionRollback indicates that the transaction must be rolled back, // but does not raise an error returned by the Transaction function. ErrTransactionRollback = errors.New("rollback") )
Errors.
var (
// HashIterations denfines the number of times a password is hashed.
HashIterations = 100000
)
Functions ¶
func AddDeviceToMulticastGroup ¶
func AddDeviceToMulticastGroup(ctx context.Context, db sqlx.Ext, multicastGroupID uuid.UUID, devEUI lorawan.EUI64) error
AddDeviceToMulticastGroup adds the given device to the given multicast-group. It is recommended that db is a transaction.
func CodeMigration ¶
CodeMigration checks if the given function code has been applied and if not it will execute the given function.
func CreateAPIKey ¶
CreateAPIKey creates the given API key and returns the JWT.
func CreateApplication ¶
CreateApplication creates the given Application.
func CreateDevice ¶
CreateDevice creates the given device.
func CreateDeviceKeys ¶
CreateDeviceKeys creates the keys for the given device.
func CreateDeviceProfile ¶
CreateDeviceProfile creates the given device-profile. This will create the device-profile at the network-server side and will create a local reference record.
func CreateGateway ¶
CreateGateway creates the given Gateway.
func CreateGatewayPing ¶
CreateGatewayPing creates the given gateway ping.
func CreateGatewayPingRX ¶
CreateGatewayPingRX creates the received ping.
func CreateGatewayProfile ¶
CreateGatewayProfile creates the given gateway-profile. This will create the gateway-profile at the network-server side and will create a local reference record.
func CreateIntegration ¶
CreateIntegration creates the given Integration.
func CreateMulticastGroup ¶
CreateMulticastGroup creates the given multicast-group.
func CreateNetworkServer ¶
CreateNetworkServer creates the given network-server.
func CreateOrganization ¶
CreateOrganization creates the given Organization.
func CreateOrganizationUser ¶
func CreateOrganizationUser(ctx context.Context, db sqlx.Execer, organizationID, userID int64, isAdmin, isDeviceAdmin, isGatewayAdmin bool) error
CreateOrganizationUser adds the given user to the organization.
func CreateServiceProfile ¶
CreateServiceProfile creates the given service-profile.
func CreateUser ¶
CreateUser creates the given user.
func DeleteAPIKey ¶
DeleteAPIKey deletes the API key for the given ID.
func DeleteAllApplicationsForOrganizationID ¶
func DeleteAllApplicationsForOrganizationID(ctx context.Context, db sqlx.Ext, organizationID int64) error
DeleteAllApplicationsForOrganizationID deletes all applications given an organization id.
func DeleteAllDeviceProfilesForOrganizationID ¶
func DeleteAllDeviceProfilesForOrganizationID(ctx context.Context, db sqlx.Ext, organizationID int64) error
DeleteAllDeviceProfilesForOrganizationID deletes all device-profiles given an organization id.
func DeleteAllDevicesForApplicationID ¶
DeleteAllDevicesForApplicationID deletes all devices given an application id.
func DeleteAllGatewaysForOrganizationID ¶
func DeleteAllGatewaysForOrganizationID(ctx context.Context, db sqlx.Ext, organizationID int64) error
DeleteAllGatewaysForOrganizationID deletes all gateways for a given organization id.
func DeleteAllServiceProfilesForOrganizationID ¶
func DeleteAllServiceProfilesForOrganizationID(ctx context.Context, db sqlx.Ext, organizationID int64) error
DeleteAllServiceProfilesForOrganizationID deletes all service-profiles given an organization id.
func DeleteApplication ¶
DeleteApplication deletes the Application matching the given ID.
func DeleteDevice ¶
DeleteDevice deletes the device matching the given DevEUI.
func DeleteDeviceKeys ¶
DeleteDeviceKeys deletes the device-keys for the given DevEUI.
func DeleteDeviceProfile ¶
DeleteDeviceProfile deletes the device-profile matching the given id.
func DeleteGateway ¶
DeleteGateway deletes the gateway matching the given MAC.
func DeleteGatewayProfile ¶
DeleteGatewayProfile deletes the gateway-profile matching the given id.
func DeleteIntegration ¶
DeleteIntegration deletes the integration matching the given id.
func DeleteMulticastGroup ¶
DeleteMulticastGroup deletes a multicast-group given an id.
func DeleteNetworkServer ¶
DeleteNetworkServer deletes the network-server matching the given id.
func DeleteOrganization ¶
DeleteOrganization deletes the organization matching the given id.
func DeleteOrganizationUser ¶
func DeleteOrganizationUser(ctx context.Context, db sqlx.Execer, organizationID, userID int64) error
DeleteOrganizationUser deletes the given organization user.
func DeleteServiceProfile ¶
DeleteServiceProfile deletes the service-profile matching the given id.
func DeleteUser ¶
DeleteUser deletes the User record matching the given ID.
func EnqueueDownlinkPayload ¶
func EnqueueDownlinkPayload(ctx context.Context, db sqlx.Ext, devEUI lorawan.EUI64, confirmed bool, fPort uint8, data []byte) (uint32, error)
EnqueueDownlinkPayload adds the downlink payload to the network-server device-queue.
func GetAPIKeyCount ¶
GetAPIKeyCount returns the number of API keys.
func GetApplicationCount ¶
func GetApplicationCount(ctx context.Context, db sqlx.Queryer, filters ApplicationFilters) (int, error)
GetApplicationCount returns the total number of applications.
func GetDeviceCount ¶
GetDeviceCount returns the number of devices.
func GetDeviceCountForMulticastGroup ¶
func GetDeviceCountForMulticastGroup(ctx context.Context, db sqlx.Queryer, multicastGroup uuid.UUID) (int, error)
GetDeviceCountForMulticastGroup returns the number of devices for the given multicast-group.
func GetDeviceProfileCount ¶
func GetDeviceProfileCount(ctx context.Context, db sqlx.Queryer, filters DeviceProfileFilters) (int, error)
GetDeviceProfileCount returns the total number of device-profiles.
func GetGatewayCount ¶
GetGatewayCount returns the total number of gateways.
func GetGatewayProfileCount ¶
GetGatewayProfileCount returns the total number of gateway-profiles.
func GetGatewayProfileCountForNetworkServerID ¶
func GetGatewayProfileCountForNetworkServerID(ctx context.Context, db sqlx.Queryer, networkServerID int64) (int, error)
GetGatewayProfileCountForNetworkServerID returns the total number of gateway-profiles given a network-server ID.
func GetGatewaysForMACs ¶
func GetGatewaysForMACs(ctx context.Context, db sqlx.Queryer, macs []lorawan.EUI64) (map[lorawan.EUI64]Gateway, error)
GetGatewaysForMACs returns a map of gateways given a slice of MACs.
func GetLastGatewayPingAndRX ¶
func GetLastGatewayPingAndRX(ctx context.Context, db sqlx.Queryer, mac lorawan.EUI64) (GatewayPing, []GatewayPingRX, error)
GetLastGatewayPingAndRX returns the last gateway ping and RX for the given gateway MAC.
func GetMulticastGroupCount ¶
func GetMulticastGroupCount(ctx context.Context, db sqlx.Queryer, filters MulticastGroupFilters) (int, error)
GetMulticastGroupCount returns the total number of multicast-groups given the provided filters. Note that empty values are not used as filters.
func GetNetworkServerCount ¶
func GetNetworkServerCount(ctx context.Context, db sqlx.Queryer, filters NetworkServerFilters) (int, error)
GetNetworkServerCount returns the total number of network-servers.
func GetOrganizationCount ¶
func GetOrganizationCount(ctx context.Context, db sqlx.Queryer, filters OrganizationFilters) (int, error)
GetOrganizationCount returns the total number of organizations.
func GetOrganizationUserCount ¶
func GetOrganizationUserCount(ctx context.Context, db sqlx.Queryer, organizationID int64) (int, error)
GetOrganizationUserCount returns the number of users for the given organization.
func GetRedisKey ¶
GetRedisKey returns the Redis key given a template and parameters.
func GetServiceProfileCount ¶
func GetServiceProfileCount(ctx context.Context, db sqlx.Queryer, filters ServiceProfileFilters) (int, error)
GetServiceProfileCount returns the total number of service-profiles.
func GetUserCount ¶
GetUserCount returns the total number of users.
func GetUserToken ¶
GetUserToken returns a JWT token for the given user.
func LoginUserByPassword ¶
func LoginUserByPassword(ctx context.Context, db sqlx.Queryer, email string, password string) (string, error)
LoginUserByPassword returns a JWT token for the user matching the given email and password combination.
func MigrateDown ¶
MigrateDown configure postgres migration down
func RemoveDeviceFromMulticastGroup ¶
func RemoveDeviceFromMulticastGroup(ctx context.Context, db sqlx.Ext, multicastGroupID uuid.UUID, devEUI lorawan.EUI64) error
RemoveDeviceFromMulticastGroup removes the given device from the given multicast-group.
func SaveMetrics ¶
func SaveMetrics(ctx context.Context, name string, metrics MetricsRecord) error
SaveMetrics stores the given metrics into Redis.
func SaveMetricsForInterval ¶
func SaveMetricsForInterval(ctx context.Context, agg AggregationInterval, name string, metrics MetricsRecord) error
SaveMetricsForInterval aggregates and stores the given metrics.
func SetAggregationIntervals ¶
func SetAggregationIntervals(intervals []AggregationInterval) error
SetAggregationIntervals sets the metrics aggregation to the given intervals.
func SetMetricsTTL ¶
SetMetricsTTL sets the storage TTL.
func SetTimeLocation ¶
SetTimeLocation sets the time location.
func Transaction ¶
Transaction wraps the given function in a transaction. In case the given functions returns an error, the transaction will be rolled back.
func UpdateApplication ¶
UpdateApplication updates the given Application.
func UpdateDevice ¶
UpdateDevice updates the given device. When localOnly is set, it will not update the device on the network-server.
func UpdateDeviceActivation ¶
func UpdateDeviceActivation(ctx context.Context, db sqlx.Ext, devEUI lorawan.EUI64, devAddr lorawan.DevAddr, appSKey lorawan.AES128Key) error
UpdateDeviceActivation updates the device address and the AppSKey.
func UpdateDeviceKeys ¶
UpdateDeviceKeys updates the given device-keys.
func UpdateDeviceLastSeenAndDR ¶
func UpdateDeviceLastSeenAndDR(ctx context.Context, db sqlx.Ext, devEUI lorawan.EUI64, ts time.Time, dr int) error
UpdateDeviceLastSeenAndDR updates the device last-seen timestamp and data-rate.
func UpdateDeviceProfile ¶
UpdateDeviceProfile updates the given device-profile.
func UpdateGateway ¶
UpdateGateway updates the given Gateway.
func UpdateGatewayProfile ¶
UpdateGatewayProfile updates the given gateway-profile.
func UpdateIntegration ¶
UpdateIntegration updates the given Integration.
func UpdateMulticastGroup ¶
UpdateMulticastGroup updates the given multicast-group.
func UpdateNetworkServer ¶
UpdateNetworkServer updates the given network-server.
func UpdateOrganization ¶
UpdateOrganization updates the given organization.
func UpdateOrganizationUser ¶
func UpdateOrganizationUser(ctx context.Context, db sqlx.Execer, organizationID, userID int64, isAdmin, isDeviceAdmin, isGatewayAdmin bool) error
UpdateOrganizationUser updates the given user of the organization.
func UpdateServiceProfile ¶
UpdateServiceProfile updates the given service-profile.
Types ¶
type APIKey ¶
type APIKey struct {
ID uuid.UUID `db:"id"`
CreatedAt time.Time `db:"created_at"`
Name string `db:"name"`
IsAdmin bool `db:"is_admin"`
OrganizationID *int64 `db:"organization_id"`
ApplicationID *int64 `db:"application_id"`
}
APIKey represents an API key.
func GetAPIKeys ¶
GetAPIKeys returns a slice of API keys.
type APIKeyFilters ¶
type APIKeyFilters struct {
IsAdmin bool `db:"is_admin"`
OrganizationID *int64 `db:"organization_id"`
ApplicationID *int64 `db:"application_id"`
// Limit and Offset are added for convenience so that this struct can
// be given as the arguments.
Limit int `db:"limit"`
Offset int `db:"offset"`
}
APIKeyFilters provides filters for getting the API keys.
type AggregationInterval ¶
type AggregationInterval string
AggregationInterval defines the aggregation type.
const ( AggregationMinute AggregationInterval = "MINUTE" AggregationHour AggregationInterval = "HOUR" AggregationDay AggregationInterval = "DAY" AggregationMonth AggregationInterval = "MONTH" )
Metrics aggregation intervals.
type Application ¶
type Application struct {
ID int64 `db:"id"`
Name string `db:"name"`
Description string `db:"description"`
OrganizationID int64 `db:"organization_id"`
ServiceProfileID uuid.UUID `db:"service_profile_id"`
PayloadCodec codec.Type `db:"payload_codec"`
PayloadEncoderScript string `db:"payload_encoder_script"`
PayloadDecoderScript string `db:"payload_decoder_script"`
MQTTTLSCert []byte `db:"mqtt_tls_cert"`
}
Application represents an application.
func GetApplication ¶
GetApplication returns the Application for the given id.
func (Application) Validate ¶
func (a Application) Validate() error
Validate validates the data of the Application.
type ApplicationFilters ¶
type ApplicationFilters struct {
UserID int64 `db:"user_id"`
OrganizationID int64 `db:"organization_id"`
Search string `db:"search"`
// Limit and Offset are added for convenience so that this struct can
// be given as the arguments.
Limit int `db:"limit"`
Offset int `db:"offset"`
}
ApplicationFilters provides filters for filtering applications.
func (ApplicationFilters) SQL ¶
func (f ApplicationFilters) SQL() string
SQL returns the SQL filters.
type ApplicationListItem ¶
type ApplicationListItem struct {
Application
ServiceProfileName string `db:"service_profile_name"`
}
ApplicationListItem devices the application as a list item.
func GetApplications ¶
func GetApplications(ctx context.Context, db sqlx.Queryer, filters ApplicationFilters) ([]ApplicationListItem, error)
GetApplications returns a slice of applications, sorted by name and respecting the given limit and offset.
type DBLogger ¶
DBLogger is a DB wrapper which logs the executed sql queries and their duration.
type Device ¶
type Device struct {
DevEUI lorawan.EUI64 `db:"dev_eui"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
LastSeenAt *time.Time `db:"last_seen_at"`
ApplicationID int64 `db:"application_id"`
DeviceProfileID uuid.UUID `db:"device_profile_id"`
Name string `db:"name"`
Description string `db:"description"`
SkipFCntCheck bool `db:"-"`
ReferenceAltitude float64 `db:"-"`
DeviceStatusBattery *float32 `db:"device_status_battery"`
DeviceStatusMargin *int `db:"device_status_margin"`
DeviceStatusExternalPower bool `db:"device_status_external_power_source"`
DR *int `db:"dr"`
Latitude *float64 `db:"latitude"`
Longitude *float64 `db:"longitude"`
Altitude *float64 `db:"altitude"`
DevAddr lorawan.DevAddr `db:"dev_addr"`
AppSKey lorawan.AES128Key `db:"app_s_key"`
Variables hstore.Hstore `db:"variables"`
Tags hstore.Hstore `db:"tags"`
IsDisabled bool `db:"-"`
}
Device defines a LoRaWAN device.
func GetDevice ¶
func GetDevice(ctx context.Context, db sqlx.Queryer, devEUI lorawan.EUI64, forUpdate, localOnly bool) (Device, error)
GetDevice returns the device matching the given DevEUI. When forUpdate is set to true, then db must be a db transaction. When localOnly is set to true, no call to the network-server is made to retrieve additional device data.
type DeviceFilters ¶
type DeviceFilters struct {
OrganizationID int64 `db:"organization_id"`
ApplicationID int64 `db:"application_id"`
MulticastGroupID uuid.UUID `db:"multicast_group_id"`
ServiceProfileID uuid.UUID `db:"service_profile_id"`
Search string `db:"search"`
Tags hstore.Hstore `db:"tags"`
// Limit and Offset are added for convenience so that this struct can
// be given as the arguments.
Limit int `db:"limit"`
Offset int `db:"offset"`
}
DeviceFilters provide filters that can be used to filter on devices. Note that empty values are not used as filter.
type DeviceKeys ¶
type DeviceKeys struct {
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
DevEUI lorawan.EUI64 `db:"dev_eui"`
NwkKey lorawan.AES128Key `db:"nwk_key"`
AppKey lorawan.AES128Key `db:"app_key"`
JoinNonce int `db:"join_nonce"`
}
DeviceKeys defines the keys for a LoRaWAN device.
func GetDeviceKeys ¶
GetDeviceKeys returns the device-keys for the given DevEUI.
type DeviceListItem ¶
DeviceListItem defines the Device as list item.
func GetDevices ¶
func GetDevices(ctx context.Context, db sqlx.Queryer, filters DeviceFilters) ([]DeviceListItem, error)
GetDevices returns a slice of devices.
type DeviceProfile ¶
type DeviceProfile struct {
NetworkServerID int64 `db:"network_server_id"`
OrganizationID int64 `db:"organization_id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
PayloadCodec codec.Type `db:"payload_codec"`
PayloadEncoderScript string `db:"payload_encoder_script"`
PayloadDecoderScript string `db:"payload_decoder_script"`
Tags hstore.Hstore `db:"tags"`
UplinkInterval time.Duration `db:"uplink_interval"`
DeviceProfile ns.DeviceProfile `db:"-"`
}
DeviceProfile defines the device-profile.
func GetDeviceProfile ¶
func GetDeviceProfile(ctx context.Context, db sqlx.Queryer, id uuid.UUID, forUpdate, localOnly bool) (DeviceProfile, error)
GetDeviceProfile returns the device-profile matching the given id. When forUpdate is set to true, then db must be a db transaction. When localOnly is set to true, no call to the network-server is made to retrieve additional device data.
func (DeviceProfile) Validate ¶
func (dp DeviceProfile) Validate() error
Validate validates the device-profile data.
type DeviceProfileFilters ¶
type DeviceProfileFilters struct {
ApplicationID int64 `db:"application_id"`
OrganizationID int64 `db:"organization_id"`
UserID int64 `db:"user_id"`
// Limit and Offset are added for convenience so that this struct can
// be given as the arguments.
Limit int `db:"limit"`
Offset int `db:"offset"`
}
DeviceProfileFilters provide filders for filtering device-profiles.
func (DeviceProfileFilters) SQL ¶
func (f DeviceProfileFilters) SQL() string
SQL returns the SQL filters.
type DeviceProfileMeta ¶
type DeviceProfileMeta struct {
DeviceProfileID uuid.UUID `db:"device_profile_id"`
NetworkServerID int64 `db:"network_server_id"`
OrganizationID int64 `db:"organization_id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
NetworkServerName string `db:"network_server_name"`
}
DeviceProfileMeta defines the device-profile meta record.
func GetDeviceProfiles ¶
func GetDeviceProfiles(ctx context.Context, db sqlx.Queryer, filters DeviceProfileFilters) ([]DeviceProfileMeta, error)
GetDeviceProfiles returns a slice of device-profiles.
type DevicesActiveInactive ¶
type DevicesActiveInactive struct {
NeverSeenCount uint32 `db:"never_seen_count"`
ActiveCount uint32 `db:"active_count"`
InactiveCount uint32 `db:"inactive_count"`
}
DevicesActiveInactive holds the active and inactive counts.
func GetDevicesActiveInactive ¶
func GetDevicesActiveInactive(ctx context.Context, db sqlx.Queryer, organizationID int64) (DevicesActiveInactive, error)
GetDevicesActiveInactive returns the active / inactive devices.
type DevicesDataRates ¶
DevicesDataRates holds the device counts by data-rate.
func GetDevicesDataRates ¶
func GetDevicesDataRates(ctx context.Context, db sqlx.Queryer, organizationID int64) (DevicesDataRates, error)
GetDevicesDataRates returns the device counts by data-rate.
type ExtraChannel ¶
type ExtraChannel struct {
Modulation string
Frequency int
Bandwidth int
Bitrate int
SpreadingFactors []int
}
ExtraChannel defines an extra channel for the gateway-profile.
type GPSPoint ¶
GPSPoint contains a GPS point.
type Gateway ¶
type Gateway struct {
MAC lorawan.EUI64 `db:"mac"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
FirstSeenAt *time.Time `db:"first_seen_at"`
LastSeenAt *time.Time `db:"last_seen_at"`
Name string `db:"name"`
Description string `db:"description"`
OrganizationID int64 `db:"organization_id"`
Ping bool `db:"ping"`
LastPingID *int64 `db:"last_ping_id"`
LastPingSentAt *time.Time `db:"last_ping_sent_at"`
NetworkServerID int64 `db:"network_server_id"`
GatewayProfileID *uuid.UUID `db:"gateway_profile_id"`
ServiceProfileID *uuid.UUID `db:"service_profile_id"`
Latitude float64 `db:"latitude"`
Longitude float64 `db:"longitude"`
Altitude float64 `db:"altitude"`
Tags hstore.Hstore `db:"tags"`
Metadata hstore.Hstore `db:"metadata"`
}
Gateway represents a gateway.
type GatewayFilters ¶
type GatewayFilters struct {
OrganizationID int64 `db:"organization_id"`
UserID int64 `db:"user_id"`
Search string `db:"search"`
// Limit and Offset are added for convenience so that this struct can
// be given as the arguments.
Limit int `db:"limit"`
Offset int `db:"offset"`
}
GatewayFilters provides filters for filtering gateways.
type GatewayListItem ¶
type GatewayListItem struct {
MAC lorawan.EUI64 `db:"mac"`
Name string `db:"name"`
Description string `db:"description"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
FirstSeenAt *time.Time `db:"first_seen_at"`
LastSeenAt *time.Time `db:"last_seen_at"`
OrganizationID int64 `db:"organization_id"`
NetworkServerID int64 `db:"network_server_id"`
Latitude float64 `db:"latitude"`
Longitude float64 `db:"longitude"`
Altitude float64 `db:"altitude"`
NetworkServerName string `db:"network_server_name"`
}
GatewayListItem defines the gateway as list item.
func GetGateways ¶
func GetGateways(ctx context.Context, db sqlx.Queryer, filters GatewayFilters) ([]GatewayListItem, error)
GetGateways returns a slice of gateways sorted by name.
type GatewayPing ¶
type GatewayPing struct {
ID int64 `db:"id"`
CreatedAt time.Time `db:"created_at"`
GatewayMAC lorawan.EUI64 `db:"gateway_mac"`
Frequency int `db:"frequency"`
DR int `db:"dr"`
}
GatewayPing represents a gateway ping.
func GetGatewayPing ¶
GetGatewayPing returns the ping matching the given id.
type GatewayPingRX ¶
type GatewayPingRX struct {
ID int64 `db:"id"`
PingID int64 `db:"ping_id"`
CreatedAt time.Time `db:"created_at"`
GatewayMAC lorawan.EUI64 `db:"gateway_mac"`
ReceivedAt *time.Time `db:"received_at"`
RSSI int `db:"rssi"`
LoRaSNR float64 `db:"lora_snr"`
Location GPSPoint `db:"location"`
Altitude float64 `db:"altitude"`
}
GatewayPingRX represents a ping received by one of the gateways.
func GetGatewayPingRXForPingID ¶
func GetGatewayPingRXForPingID(ctx context.Context, db sqlx.Queryer, pingID int64) ([]GatewayPingRX, error)
GetGatewayPingRXForPingID returns the received gateway pings for the given ping ID.
type GatewayProfile ¶
type GatewayProfile struct {
NetworkServerID int64 `db:"network_server_id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
GatewayProfile ns.GatewayProfile `db:"-"`
}
GatewayProfile defines a gateway-profile.
func GetGatewayProfile ¶
GetGatewayProfile returns the gateway-profile matching the given id.
type GatewayProfileMeta ¶
type GatewayProfileMeta struct {
GatewayProfileID uuid.UUID `db:"gateway_profile_id"`
NetworkServerID int64 `db:"network_server_id"`
NetworkServerName string `db:"network_server_name"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
StatsInterval time.Duration `db:"stats_interval"`
}
GatewayProfileMeta defines the gateway-profile meta record.
func GetGatewayProfiles ¶
func GetGatewayProfiles(ctx context.Context, db sqlx.Queryer, limit, offset int) ([]GatewayProfileMeta, error)
GetGatewayProfiles returns a slice of gateway-profiles.
func GetGatewayProfilesForNetworkServerID ¶
func GetGatewayProfilesForNetworkServerID(ctx context.Context, db sqlx.Queryer, networkServerID int64, limit, offset int) ([]GatewayProfileMeta, error)
GetGatewayProfilesForNetworkServerID returns a slice of gateway-profiles for the given network-server ID.
type GatewaysActiveInactive ¶
type GatewaysActiveInactive struct {
NeverSeenCount uint32 `db:"never_seen_count"`
ActiveCount uint32 `db:"active_count"`
InactiveCount uint32 `db:"inactive_count"`
}
GatewaysActiveInactive holds the avtive and inactive counts.
func GetGatewaysActiveInactive ¶
func GetGatewaysActiveInactive(ctx context.Context, db sqlx.Queryer, organizationID int64) (GatewaysActiveInactive, error)
GetGatewaysActiveInactive returns the active / inactive gateways.
type Integration ¶
type Integration struct {
ID int64 `db:"id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
ApplicationID int64 `db:"application_id"`
Kind string `db:"kind"`
Settings json.RawMessage `db:"settings"`
}
Integration represents an integration.
func GetIntegration ¶
GetIntegration returns the Integration for the given id.
func GetIntegrationByApplicationID ¶
func GetIntegrationByApplicationID(ctx context.Context, db sqlx.Queryer, applicationID int64, kind string) (Integration, error)
GetIntegrationByApplicationID returns the Integration for the given application id and kind.
func GetIntegrationsForApplicationID ¶
func GetIntegrationsForApplicationID(ctx context.Context, db sqlx.Queryer, applicationID int64) ([]Integration, error)
GetIntegrationsForApplicationID returns the integrations for the given application id.
type MetricsRecord ¶
MetricsRecord holds a single metrics record.
func GetMetrics ¶
func GetMetrics(ctx context.Context, agg AggregationInterval, name string, start, end time.Time) ([]MetricsRecord, error)
GetMetrics returns the metrics for the requested aggregation interval.
type MulticastGroup ¶
type MulticastGroup struct {
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
MCAppSKey lorawan.AES128Key `db:"mc_app_s_key"`
ApplicationID int64 `db:"application_id"`
MulticastGroup ns.MulticastGroup `db:"-"`
}
MulticastGroup defines the multicast-group.
func GetMulticastGroup ¶
func GetMulticastGroup(ctx context.Context, db sqlx.Queryer, id uuid.UUID, forUpdate, localOnly bool) (MulticastGroup, error)
GetMulticastGroup returns the multicast-group given an id.
func (MulticastGroup) Validate ¶
func (mg MulticastGroup) Validate() error
Validate validates the service-profile data.
type MulticastGroupFilters ¶
type MulticastGroupFilters struct {
OrganizationID int64 `db:"organization_id"`
ApplicationID int64 `db:"application_id"`
DevEUI lorawan.EUI64 `db:"dev_eui"`
Search string `db:"search"`
// Limit and Offset are added for convenience so that this struct can
// be given as the arguments.
Limit int `db:"limit"`
Offset int `db:"offset"`
}
MulticastGroupFilters provide filters that can be used to filter on multicast-groups. Note that empty values are not used as filters.
func (MulticastGroupFilters) SQL ¶
func (f MulticastGroupFilters) SQL() string
SQL returns the SQL filter.
type MulticastGroupListItem ¶
type MulticastGroupListItem struct {
ID uuid.UUID `db:"id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
ApplicationID int64 `db:"application_id"`
ApplicationName string `db:"application_name"`
}
MulticastGroupListItem defines the multicast-group for listing.
func GetMulticastGroups ¶
func GetMulticastGroups(ctx context.Context, db sqlx.Queryer, filters MulticastGroupFilters) ([]MulticastGroupListItem, error)
GetMulticastGroups returns a slice of multicast-groups, given the privded filters. Note that empty values are not used as filters.
type NetworkServer ¶
type NetworkServer struct {
ID int64 `db:"id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
Server string `db:"server"`
CACert string `db:"ca_cert"`
TLSCert string `db:"tls_cert"`
TLSKey string `db:"tls_key"`
RoutingProfileCACert string `db:"routing_profile_ca_cert"`
RoutingProfileTLSCert string `db:"routing_profile_tls_cert"`
RoutingProfileTLSKey string `db:"routing_profile_tls_key"`
GatewayDiscoveryEnabled bool `db:"gateway_discovery_enabled"`
GatewayDiscoveryInterval int `db:"gateway_discovery_interval"`
GatewayDiscoveryTXFrequency int `db:"gateway_discovery_tx_frequency"`
GatewayDiscoveryDR int `db:"gateway_discovery_dr"`
}
NetworkServer defines the information to connect to a network-server.
func GetNetworkServer ¶
GetNetworkServer returns the network-server matching the given id.
func GetNetworkServerForApplicationID ¶
func GetNetworkServerForApplicationID(ctx context.Context, db sqlx.Queryer, id int64) (NetworkServer, error)
GetNetworkServerForApplicationID returns the network-server for the given application ID.
func GetNetworkServerForDevEUI ¶
func GetNetworkServerForDevEUI(ctx context.Context, db sqlx.Queryer, devEUI lorawan.EUI64) (NetworkServer, error)
GetNetworkServerForDevEUI returns the network-server for the given DevEUI.
func GetNetworkServerForDeviceProfileID ¶
func GetNetworkServerForDeviceProfileID(ctx context.Context, db sqlx.Queryer, id uuid.UUID) (NetworkServer, error)
GetNetworkServerForDeviceProfileID returns the network-server for the given device-profile id.
func GetNetworkServerForGatewayMAC ¶
func GetNetworkServerForGatewayMAC(ctx context.Context, db sqlx.Queryer, mac lorawan.EUI64) (NetworkServer, error)
GetNetworkServerForGatewayMAC returns the network-server for a given gateway mac.
func GetNetworkServerForGatewayProfileID ¶
func GetNetworkServerForGatewayProfileID(ctx context.Context, db sqlx.Queryer, id uuid.UUID) (NetworkServer, error)
GetNetworkServerForGatewayProfileID returns the network-server for the given gateway-profile id.
func GetNetworkServerForMulticastGroupID ¶
func GetNetworkServerForMulticastGroupID(ctx context.Context, db sqlx.Queryer, id uuid.UUID) (NetworkServer, error)
GetNetworkServerForMulticastGroupID returns the network-server for the given multicast-group id.
func GetNetworkServerForServiceProfileID ¶
func GetNetworkServerForServiceProfileID(ctx context.Context, db sqlx.Queryer, id uuid.UUID) (NetworkServer, error)
GetNetworkServerForServiceProfileID returns the network-server for the given service-profile id.
func GetNetworkServers ¶
func GetNetworkServers(ctx context.Context, db sqlx.Queryer, filters NetworkServerFilters) ([]NetworkServer, error)
GetNetworkServers returns a slice of network-servers.
func (NetworkServer) Validate ¶
func (ns NetworkServer) Validate() error
Validate validates the network-server data.
type NetworkServerFilters ¶
type NetworkServerFilters struct {
OrganizationID int64 `db:"organization_id"`
// Limit and Offset are added for convenience so that this struct can
// be given as the arguments.
Limit int `db:"limit"`
Offset int `db:"offset"`
}
NetworkServerFilters provides filters for filtering network-servers.
func (NetworkServerFilters) SQL ¶
func (f NetworkServerFilters) SQL() string
SQL returns the SQL filters.
type Organization ¶
type Organization struct {
ID int64 `db:"id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
DisplayName string `db:"display_name"`
CanHaveGateways bool `db:"can_have_gateways"`
MaxDeviceCount int `db:"max_device_count"`
MaxGatewayCount int `db:"max_gateway_count"`
}
Organization represents an organization.
func GetOrganization ¶
func GetOrganization(ctx context.Context, db sqlx.Queryer, id int64, forUpdate bool) (Organization, error)
GetOrganization returns the Organization for the given id. When forUpdate is set to true, then db must be a db transaction.
func GetOrganizations ¶
func GetOrganizations(ctx context.Context, db sqlx.Queryer, filters OrganizationFilters) ([]Organization, error)
GetOrganizations returns a slice of organizations, sorted by name.
func (Organization) Validate ¶
func (o Organization) Validate() error
Validate validates the data of the Organization.
type OrganizationFilters ¶
type OrganizationFilters struct {
UserID int64 `db:"user_id"`
Search string `db:"search"`
// Limit and Offset are added for convenience so that this struct can
// be given as the arguments.
Limit int `db:"limit"`
Offset int `db:"offset"`
}
OrganizationFilters provides filters for filtering organizations.
func (OrganizationFilters) SQL ¶
func (f OrganizationFilters) SQL() string
SQL returns the SQL filters.
type OrganizationUser ¶
type OrganizationUser struct {
UserID int64 `db:"user_id"`
Email string `db:"email"`
IsAdmin bool `db:"is_admin"`
IsDeviceAdmin bool `db:"is_device_admin"`
IsGatewayAdmin bool `db:"is_gateway_admin"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
OrganizationUser represents an organization user.
func GetOrganizationUser ¶
func GetOrganizationUser(ctx context.Context, db sqlx.Queryer, organizationID, userID int64) (OrganizationUser, error)
GetOrganizationUser gets the information of the given organization user.
func GetOrganizationUsers ¶
func GetOrganizationUsers(ctx context.Context, db sqlx.Queryer, organizationID int64, limit, offset int) ([]OrganizationUser, error)
GetOrganizationUsers returns the users for the given organization.
type SearchResult ¶
type SearchResult struct {
Kind string `db:"kind"`
Score float64 `db:"score"`
OrganizationID *int64 `db:"organization_id"`
OrganizationName *string `db:"organization_name"`
ApplicationID *int64 `db:"application_id"`
ApplicationName *string `db:"application_name"`
DeviceDevEUI *lorawan.EUI64 `db:"device_dev_eui"`
DeviceName *string `db:"device_name"`
GatewayMAC *lorawan.EUI64 `db:"gateway_mac"`
GatewayName *string `db:"gateway_name"`
}
SearchResult defines a search result.
type ServiceProfile ¶
type ServiceProfile struct {
NetworkServerID int64 `db:"network_server_id"`
OrganizationID int64 `db:"organization_id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
ServiceProfile ns.ServiceProfile `db:"-"`
}
ServiceProfile defines the service-profile.
func GetServiceProfile ¶
func GetServiceProfile(ctx context.Context, db sqlx.Queryer, id uuid.UUID, localOnly bool) (ServiceProfile, error)
GetServiceProfile returns the service-profile matching the given id.
func (ServiceProfile) Validate ¶
func (sp ServiceProfile) Validate() error
Validate validates the service-profile data.
type ServiceProfileFilters ¶
type ServiceProfileFilters struct {
UserID int64 `db:"user_id"`
OrganizationID int64 `db:"organization_id"`
NetworkServerID int64 `db:"network_server_id"`
// Limit and Offset are added for convenience so that this struct can
// be given as the arguments.
Limit int `db:"limit"`
Offset int `db:"offset"`
}
ServiceProfileFilters provides filters for filtering service profiles.
func (ServiceProfileFilters) SQL ¶
func (f ServiceProfileFilters) SQL() string
SQL returns the SQL filters.
type ServiceProfileMeta ¶
type ServiceProfileMeta struct {
ServiceProfileID uuid.UUID `db:"service_profile_id"`
NetworkServerID int64 `db:"network_server_id"`
OrganizationID int64 `db:"organization_id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
Name string `db:"name"`
NetworkServerName string `db:"network_server_name"`
}
ServiceProfileMeta defines the service-profile meta record.
func GetServiceProfiles ¶
func GetServiceProfiles(ctx context.Context, db sqlx.Queryer, filters ServiceProfileFilters) ([]ServiceProfileMeta, error)
GetServiceProfiles returns a slice of service-profiles.
type TxLogger ¶
TxLogger logs the executed sql queries and their duration.
type User ¶
type User struct {
ID int64 `db:"id"`
IsAdmin bool `db:"is_admin"`
IsActive bool `db:"is_active"`
SessionTTL int32 `db:"session_ttl"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
PasswordHash string `db:"password_hash"`
Email string `db:"email"`
EmailVerified bool `db:"email_verified"`
EmailOld string `db:"email_old"`
Note string `db:"note"`
ExternalID *string `db:"external_id"` // must be pointer for unique index
}
User defines the user structure.
func GetUserByEmail ¶
GetUserByEmail returns the User for the given email.
func GetUserByExternalID ¶
GetUserByExternalID returns the User for the given ext. ID.
func (*User) SetPasswordHash ¶
SetPasswordHash hashes the given password and sets it.
type UserProfile ¶
type UserProfile struct {
User UserProfileUser
Organizations []UserProfileOrganization
}
UserProfile contains the profile of the user.
func GetProfile ¶
GetProfile returns the user profile (user, applications and organizations to which the user is linked).
type UserProfileOrganization ¶
type UserProfileOrganization struct {
ID int64 `db:"organization_id"`
Name string `db:"organization_name"`
IsAdmin bool `db:"is_admin"`
IsDeviceAdmin bool `db:"is_device_admin"`
IsGatewayAdmin bool `db:"is_gateway_admin"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
UserProfileOrganization contains the organizations to which the user is linked.
type UserProfileUser ¶
type UserProfileUser struct {
ID int64 `db:"id"`
Email string `db:"email"`
IsAdmin bool `db:"is_admin"`
IsActive bool `db:"is_active"`
SessionTTL int32 `db:"session_ttl"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
UserProfileUser contains the user information of the profile.