Documentation
¶
Overview ¶
Package db provides a simplistic ORM to communicate with an SQL database for storage
Index ¶
- Constants
- type APIToken
- type AuditLog
- type DataNetwork
- type Database
- func (db *Database) AllocateIP(ctx context.Context, imsi string) (net.IP, error)
- func (db *Database) AuditWriteFunc(ctx context.Context) func([]byte) error
- func (db *Database) Backup(destinationFile *os.File) error
- func (db *Database) BeginTransaction() (*Transaction, error)
- func (db *Database) Close() error
- func (db *Database) CountAPITokens(ctx context.Context, userID int) (int, error)
- func (db *Database) CountAuditLogs(ctx context.Context) (int, error)
- func (db *Database) CountDataNetworks(ctx context.Context) (int, error)
- func (db *Database) CountPolicies(ctx context.Context) (int, error)
- func (db *Database) CountRadioLogs(ctx context.Context) (int, error)
- func (db *Database) CountRoutes(ctx context.Context) (int, error)
- func (db *Database) CountSubscriberLogs(ctx context.Context) (int, error)
- func (db *Database) CountSubscribers(ctx context.Context) (int, error)
- func (db *Database) CountSubscribersInPolicy(ctx context.Context, policyID int) (int, error)
- func (db *Database) CountSubscribersWithIP(ctx context.Context) (int, error)
- func (db *Database) CountUsers(ctx context.Context) (int, error)
- func (db *Database) CreateAPIToken(ctx context.Context, apiToken *APIToken) error
- func (db *Database) CreateDataNetwork(ctx context.Context, dataNetwork *DataNetwork) error
- func (db *Database) CreatePolicy(ctx context.Context, policy *Policy) error
- func (db *Database) CreateSession(ctx context.Context, session *Session) (int64, error)
- func (db *Database) CreateSubscriber(ctx context.Context, subscriber *Subscriber) error
- func (db *Database) CreateUser(ctx context.Context, user *User) error
- func (db *Database) DeleteAPIToken(ctx context.Context, id int) error
- func (db *Database) DeleteDataNetwork(ctx context.Context, name string) error
- func (db *Database) DeleteExpiredSessions(ctx context.Context) (int, error)
- func (db *Database) DeleteOldAuditLogs(ctx context.Context, days int) error
- func (db *Database) DeleteOldRadioLogs(ctx context.Context, days int) error
- func (db *Database) DeleteOldSubscriberLogs(ctx context.Context, days int) error
- func (db *Database) DeletePolicy(ctx context.Context, name string) error
- func (db *Database) DeleteSessionByTokenHash(ctx context.Context, tokenHash []byte) error
- func (db *Database) DeleteSubscriber(ctx context.Context, imsi string) error
- func (db *Database) DeleteUser(ctx context.Context, email string) error
- func (db *Database) GetAPITokenByName(ctx context.Context, userID int, name string) (*APIToken, error)
- func (db *Database) GetAPITokenByTokenID(ctx context.Context, tokenID string) (*APIToken, error)
- func (db *Database) GetDataNetwork(ctx context.Context, name string) (*DataNetwork, error)
- func (db *Database) GetDataNetworkByID(ctx context.Context, id int) (*DataNetwork, error)
- func (db *Database) GetHomeNetworkPrivateKey(ctx context.Context) (string, error)
- func (db *Database) GetIPAddressesAllocated(ctx context.Context) (int, error)
- func (db *Database) GetIPAddressesTotal() (int, error)
- func (db *Database) GetLogRetentionPolicy(ctx context.Context, category LogCategory) (int, error)
- func (db *Database) GetOperator(ctx context.Context) (*Operator, error)
- func (db *Database) GetOperatorCode(ctx context.Context) (string, error)
- func (db *Database) GetPolicy(ctx context.Context, name string) (*Policy, error)
- func (db *Database) GetPolicyByID(ctx context.Context, id int) (*Policy, error)
- func (db *Database) GetRoute(ctx context.Context, id int64) (*Route, error)
- func (db *Database) GetSessionByTokenHash(ctx context.Context, tokenHash []byte) (*Session, error)
- func (db *Database) GetSize() (int64, error)
- func (db *Database) GetSubscriber(ctx context.Context, imsi string) (*Subscriber, error)
- func (db *Database) GetUser(ctx context.Context, email string) (*User, error)
- func (db *Database) GetUserByID(ctx context.Context, id int) (*User, error)
- func (db *Database) Initialize() error
- func (db *Database) InitializeNATSettings(ctx context.Context) error
- func (db *Database) InitializeOperator(ctx context.Context, initialOperator *Operator) error
- func (db *Database) InsertAuditLogJSON(ctx context.Context, raw []byte) error
- func (db *Database) InsertRadioLogJSON(ctx context.Context, raw []byte) error
- func (db *Database) InsertSubscriberLogJSON(ctx context.Context, raw []byte) error
- func (db *Database) IsLogRetentionPolicyInitialized(ctx context.Context, category LogCategory) bool
- func (db *Database) IsNATEnabled(ctx context.Context) (bool, error)
- func (db *Database) IsOperatorInitialized() bool
- func (db *Database) ListAPITokensPage(ctx context.Context, userID int, page int, perPage int) ([]APIToken, int, error)
- func (db *Database) ListAuditLogsPage(ctx context.Context, page, perPage int) ([]AuditLog, int, error)
- func (db *Database) ListDataNetworksPage(ctx context.Context, page, perPage int) ([]DataNetwork, int, error)
- func (db *Database) ListPoliciesPage(ctx context.Context, page int, perPage int) ([]Policy, int, error)
- func (db *Database) ListRadioLogsPage(ctx context.Context, page, perPage int) ([]RadioLog, int, error)
- func (db *Database) ListRoutesPage(ctx context.Context, page int, perPage int) ([]Route, int, error)
- func (db *Database) ListSubscriberLogsPage(ctx context.Context, page, perPage int) ([]SubscriberLog, int, error)
- func (db *Database) ListSubscribersPage(ctx context.Context, page int, perPage int) ([]Subscriber, int, error)
- func (db *Database) ListUsersPage(ctx context.Context, page, perPage int) ([]User, int, error)
- func (db *Database) PoliciesInDataNetwork(ctx context.Context, name string) (bool, error)
- func (db *Database) RadioWriteFunc(ctx context.Context) func([]byte) error
- func (db *Database) ReleaseIP(ctx context.Context, imsi string) error
- func (db *Database) Restore(backupFile *os.File) error
- func (db *Database) SetLogRetentionPolicy(ctx context.Context, policy *LogRetentionPolicy) error
- func (db *Database) SubscriberWriteFunc(ctx context.Context) func([]byte) error
- func (db *Database) SubscribersInPolicy(ctx context.Context, name string) (bool, error)
- func (db *Database) UpdateDataNetwork(ctx context.Context, dataNetwork *DataNetwork) error
- func (db *Database) UpdateHomeNetworkPrivateKey(ctx context.Context, privateKey string) error
- func (db *Database) UpdateNATSettings(ctx context.Context, enabled bool) error
- func (db *Database) UpdateOperatorCode(ctx context.Context, operatorCode string) error
- func (db *Database) UpdateOperatorID(ctx context.Context, mcc, mnc string) error
- func (db *Database) UpdateOperatorSlice(ctx context.Context, sst int32, sd int) error
- func (db *Database) UpdateOperatorTracking(ctx context.Context, supportedTACs []string) error
- func (db *Database) UpdatePolicy(ctx context.Context, policy *Policy) error
- func (db *Database) UpdateSubscriber(ctx context.Context, subscriber *Subscriber) error
- func (db *Database) UpdateUser(ctx context.Context, email string, roleID RoleID) error
- func (db *Database) UpdateUserPassword(ctx context.Context, email string, hashedPassword string) error
- type ListArgs
- type LogCategory
- type LogRetentionPolicy
- type NATSettings
- type NetworkInterface
- type NumItems
- type Operator
- type Policy
- type RadioLog
- type RoleID
- type Route
- type Session
- type Subscriber
- type SubscriberLog
- type Transaction
- type User
Constants ¶
const ( InitialMcc = "001" InitialMnc = "01" InitialOperatorSst = 1 InitialOperatorSd = 1056816 )
Initial operator values
const ( InitialDataNetworkName = "internet" InitialDataNetworkIPPool = "10.45.0.0/16" InitialDataNetworkDNS = "8.8.8.8" InitialDataNetworkMTU = 1400 )
Initial Data network values
const ( InitialPolicyName = "default" InitialPolicyBitrateUplink = "200 Mbps" InitialPolicyBitrateDownlink = "200 Mbps" InitialPolicyVar5qi = 1 InitialPolicyPriorityLevel = 1 )
Initial Policy values
const APITokensTableName = "api_tokens"
const AuditLogsTableName = "audit_logs"
const DataNetworksTableName = "data_networks"
const DefaultLogRetentionDays = 30
Initial Log Retention Policy values
const LogRetentionPolicyTableName = "log_retention_policies"
const (
NATDefaultEnabled = true
)
const NATSettingsTableName = "nat_settings"
const OperatorTableName = "operator"
const PoliciesTableName = "policies"
const QueryCreateAPITokensTable = `` /* 280-byte string literal not displayed */
const QueryCreateAuditLogsTable = `` /* 359-byte string literal not displayed */
Structured table (no raw blob). Keep strings NOT NULL with empty defaults to avoid NullString hassle.
const QueryCreateDataNetworksTable = `` /* 168-byte string literal not displayed */
const QueryCreateLogRetentionPolicyTable = `` /* 192-byte string literal not displayed */
const QueryCreateNATSettingsTable = `` /* 145-byte string literal not displayed */
const QueryCreateOperatorTable = `` /* 270-byte string literal not displayed */
const QueryCreatePoliciesTable = `` /* 323-byte string literal not displayed */
const QueryCreateRadioLogsTable = `` /* 320-byte string literal not displayed */
Structured table (no raw blob). Keep strings NOT NULL with empty defaults to avoid NullString hassle.
const QueryCreateRoutesTable = `` /* 183-byte string literal not displayed */
const QueryCreateSubscriberLogsTable = `` /* 318-byte string literal not displayed */
Structured table (no raw blob). Keep strings NOT NULL with empty defaults to avoid NullString hassle.
const QueryCreateSubscribersTable = `` /* 285-byte string literal not displayed */
const QueryCreateUsersTable = `` /* 158-byte string literal not displayed */
const RadioLogsTableName = "radio_logs"
const RoutesTableName = "routes"
const SessionsTableName = "sessions"
const SubscriberLogsTableName = "subscriber_logs"
const SubscribersTableName = "subscribers"
const UsersTableName = "users"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuditLog ¶ added in v0.2.0
type AuditLog struct { ID int `db:"id"` Timestamp string `db:"timestamp"` // store as RFC3339 string; parse in API layer if needed Level string `db:"level"` Actor string `db:"actor"` Action string `db:"action"` IP string `db:"ip"` Details string `db:"details"` // JSON or plain text (we store a string) }
type DataNetwork ¶ added in v0.1.0
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database is the object used to communicate with the established repository.
func NewDatabase ¶
NewDatabase connects to a given table in a given database, stores the connection information and returns an object containing the information. The database path must be a valid file path or ":memory:". The table will be created if it doesn't exist in the format expected by the package.
func (*Database) AllocateIP ¶
func (*Database) AuditWriteFunc ¶ added in v0.2.0
func (*Database) BeginTransaction ¶ added in v0.0.9
func (db *Database) BeginTransaction() (*Transaction, error)
func (*Database) CountAPITokens ¶ added in v0.3.0
func (*Database) CountAuditLogs ¶ added in v0.3.0
func (*Database) CountDataNetworks ¶ added in v0.3.0
func (*Database) CountPolicies ¶ added in v0.3.0
CountPolicies returns policy count
func (*Database) CountRadioLogs ¶ added in v0.3.0
func (*Database) CountRoutes ¶ added in v0.3.0
NumRoutes returns route count
func (*Database) CountSubscriberLogs ¶ added in v0.3.0
func (*Database) CountSubscribers ¶ added in v0.3.0
func (*Database) CountSubscribersInPolicy ¶ added in v0.3.0
func (*Database) CountSubscribersWithIP ¶ added in v0.3.0
func (*Database) CountUsers ¶ added in v0.3.0
CountUsers returns user count with a span named "SELECT users".
func (*Database) CreateAPIToken ¶ added in v0.2.0
CreateAPIToken inserts a new api token with a span named "INSERT api_token".
func (*Database) CreateDataNetwork ¶ added in v0.1.0
func (db *Database) CreateDataNetwork(ctx context.Context, dataNetwork *DataNetwork) error
func (*Database) CreatePolicy ¶ added in v0.1.0
func (*Database) CreateSession ¶ added in v0.3.0
func (*Database) CreateSubscriber ¶
func (db *Database) CreateSubscriber(ctx context.Context, subscriber *Subscriber) error
func (*Database) CreateUser ¶
CreateUser inserts a new user with a span named "INSERT users".
func (*Database) DeleteAPIToken ¶ added in v0.2.0
func (*Database) DeleteDataNetwork ¶ added in v0.1.0
func (*Database) DeleteExpiredSessions ¶ added in v0.3.0
func (*Database) DeleteOldAuditLogs ¶ added in v0.2.0
DeleteOldAuditLogs removes logs older than the specified retention period in days.
func (*Database) DeleteOldRadioLogs ¶ added in v0.3.0
DeleteOldRadioLogs removes logs older than the specified retention period in days.
func (*Database) DeleteOldSubscriberLogs ¶ added in v0.3.0
DeleteOldSubscriberLogs removes logs older than the specified retention period in days.
func (*Database) DeletePolicy ¶ added in v0.1.0
func (*Database) DeleteSessionByTokenHash ¶ added in v0.3.0
func (*Database) DeleteSubscriber ¶
func (*Database) DeleteUser ¶
DeleteUser removes a user by email with a span named "DELETE users".
func (*Database) GetAPITokenByName ¶ added in v0.2.0
func (*Database) GetAPITokenByTokenID ¶ added in v0.2.0
func (*Database) GetDataNetwork ¶ added in v0.1.0
func (*Database) GetDataNetworkByID ¶ added in v0.1.0
func (*Database) GetHomeNetworkPrivateKey ¶ added in v0.0.7
GetHomeNetworkPrivateKey retrieves the private key.
func (*Database) GetIPAddressesAllocated ¶
func (*Database) GetIPAddressesTotal ¶
func (*Database) GetLogRetentionPolicy ¶ added in v0.2.0
func (*Database) GetOperator ¶ added in v0.0.5
GetOperator retrieves the operator row.
func (*Database) GetOperatorCode ¶
GetOperatorCode fetches only the operatorCode field.
func (*Database) GetPolicyByID ¶ added in v0.1.0
func (*Database) GetSessionByTokenHash ¶ added in v0.3.0
func (*Database) GetSubscriber ¶
func (*Database) GetUserByID ¶ added in v0.2.0
GetUserByID fetches a single user by ID with a span named "SELECT users".
func (*Database) Initialize ¶ added in v0.1.0
func (*Database) InitializeNATSettings ¶ added in v0.3.0
InitializeNATSettings inserts the default NAT settings into the database. If the settings already exist, it does nothing.
func (*Database) InitializeOperator ¶
func (*Database) InsertAuditLogJSON ¶ added in v0.2.0
InsertAuditLogJSON parses the zap JSON and inserts a structured row.
func (*Database) InsertRadioLogJSON ¶ added in v0.3.0
InsertRadioLogJSON parses the zap JSON and inserts a structured row.
func (*Database) InsertSubscriberLogJSON ¶ added in v0.3.0
InsertSubscriberLogJSON parses the zap JSON and inserts a structured row.
func (*Database) IsLogRetentionPolicyInitialized ¶ added in v0.2.0
func (db *Database) IsLogRetentionPolicyInitialized(ctx context.Context, category LogCategory) bool
Ensure that we have a row for the Audit Log retention policy.
func (*Database) IsNATEnabled ¶ added in v0.3.0
func (*Database) IsOperatorInitialized ¶ added in v0.0.20
func (*Database) ListAPITokensPage ¶ added in v0.3.0
func (*Database) ListAuditLogsPage ¶ added in v0.3.0
func (*Database) ListDataNetworksPage ¶ added in v0.3.0
func (*Database) ListPoliciesPage ¶ added in v0.3.0
func (*Database) ListRadioLogsPage ¶ added in v0.3.0
func (*Database) ListRoutesPage ¶ added in v0.3.0
func (*Database) ListSubscriberLogsPage ¶ added in v0.3.0
func (*Database) ListSubscribersPage ¶ added in v0.3.0
func (*Database) ListUsersPage ¶ added in v0.3.0
func (*Database) PoliciesInDataNetwork ¶ added in v0.1.0
func (*Database) RadioWriteFunc ¶ added in v0.3.0
func (*Database) SetLogRetentionPolicy ¶ added in v0.2.0
func (db *Database) SetLogRetentionPolicy(ctx context.Context, policy *LogRetentionPolicy) error
SetLogRetentionPolicy upserts the retention policy for a category.
func (*Database) SubscriberWriteFunc ¶ added in v0.3.0
func (*Database) SubscribersInPolicy ¶ added in v0.1.0
func (*Database) UpdateDataNetwork ¶ added in v0.1.0
func (db *Database) UpdateDataNetwork(ctx context.Context, dataNetwork *DataNetwork) error
func (*Database) UpdateHomeNetworkPrivateKey ¶ added in v0.0.7
UpdateHomeNetworkPrivateKey updates the private key.
func (*Database) UpdateNATSettings ¶ added in v0.3.0
func (*Database) UpdateOperatorCode ¶
UpdateOperatorCode sets a new operatorCode.
func (*Database) UpdateOperatorID ¶ added in v0.0.12
UpdateOperatorID updates MCC/MNC.
func (*Database) UpdateOperatorSlice ¶ added in v0.0.7
UpdateOperatorSlice updates SST/SD.
func (*Database) UpdateOperatorTracking ¶ added in v0.0.7
UpdateOperatorTracking updates supported TACs.
func (*Database) UpdatePolicy ¶ added in v0.1.0
func (*Database) UpdateSubscriber ¶
func (db *Database) UpdateSubscriber(ctx context.Context, subscriber *Subscriber) error
func (*Database) UpdateUser ¶
UpdateUser updates a user's role with a span named "UPDATE users".
type LogCategory ¶ added in v0.2.0
type LogCategory string
const ( CategoryAuditLogs LogCategory = "audit" CategorySubscriberLogs LogCategory = "subscriber" CategoryRadioLogs LogCategory = "radio" )
type LogRetentionPolicy ¶ added in v0.2.0
type LogRetentionPolicy struct { ID int `db:"id"` Category LogCategory `db:"category"` Days int `db:"retention_days"` }
type NATSettings ¶ added in v0.3.0
type NATSettings struct {
Enabled bool `db:"enabled"`
}
type NetworkInterface ¶ added in v0.0.9
type NetworkInterface int
NetworkInterface is an enum for network interface keys.
const ( N3 NetworkInterface = iota N6 )
func (NetworkInterface) String ¶ added in v0.0.9
func (ni NetworkInterface) String() string
type Operator ¶
type Operator struct { ID int `db:"id"` Mcc string `db:"mcc"` Mnc string `db:"mnc"` OperatorCode string `db:"operatorCode"` SupportedTACs string `db:"supportedTACs"` // JSON-encoded list of strings Sst int32 `db:"sst"` Sd int `db:"sd"` HomeNetworkPrivateKey string `db:"homeNetworkPrivateKey"` }
func (*Operator) GetHomeNetworkPublicKey ¶ added in v0.0.7
func (*Operator) GetSupportedTacs ¶ added in v0.0.5
func (*Operator) SetSupportedTacs ¶ added in v0.0.5
type Route ¶ added in v0.0.9
type Route struct { ID int64 `db:"id"` Destination string `db:"destination"` Gateway string `db:"gateway"` Interface NetworkInterface `db:"interface"` Metric int `db:"metric"` }
Route represents a route record.
type Subscriber ¶
type SubscriberLog ¶ added in v0.3.0
type Transaction ¶ added in v0.0.9
type Transaction struct {
// contains filtered or unexported fields
}
Transaction wraps a SQLair transaction.
func (*Transaction) Commit ¶ added in v0.0.9
func (t *Transaction) Commit() error
func (*Transaction) CreateRoute ¶ added in v0.0.9
func (*Transaction) DeleteRoute ¶ added in v0.0.9
func (t *Transaction) DeleteRoute(ctx context.Context, id int64) error
func (*Transaction) Rollback ¶ added in v0.0.9
func (t *Transaction) Rollback() error