Documentation ¶
Overview ¶
Package model is a model abstraction of publish.
Index ¶
- Variables
- func DaysFromSymptomOnset(onsetInterval int32, checkInterval int32) int32
- func IntervalNumber(t time.Time) int32
- func ReportTypeTransmissionRisk(reportType string, providedTR int) int
- func TimeForIntervalNumber(interval int32) time.Time
- func TruncateWindow(t time.Time, d time.Duration) time.Time
- type ErrorKeyInvalidReportTypeTransition
- type Exposure
- func FromExportKey(key *export.TemporaryExposureKey, maxSymptomOnsetDays int32) (*Exposure, error)
- func ReviseKeys(ctx context.Context, existing map[string]*Exposure, incoming []*Exposure) ([]*Exposure, error)
- func TransformExposureKey(exposureKey verifyapi.ExposureKey, appPackageName string, ...) (*Exposure, error)
- func (e *Exposure) AddMissingRegions(regions []string)
- func (e *Exposure) AdjustAndValidate(settings *KeyTransform) error
- func (e *Exposure) ExposureKeyBase64() string
- func (e *Exposure) HasBeenRevised() bool
- func (e *Exposure) HasDaysSinceSymptomOnset() bool
- func (e *Exposure) HasHealthAuthorityID() bool
- func (e *Exposure) Revise(in *Exposure) (bool, error)
- func (e *Exposure) SetDaysSinceSymptomOnset(d int32)
- func (e *Exposure) SetHealthAuthorityID(haID int64)
- func (e *Exposure) SetRevisedAt(t time.Time) error
- func (e *Exposure) SetRevisedDaysSinceSymptomOnset(d int32)
- func (e *Exposure) SetRevisedReportType(rt string)
- func (e *Exposure) SetRevisedTransmissionRisk(tr int)
- type KeyTransform
- type Transformer
- type TransformerConfig
Constants ¶
This section is empty.
Variables ¶
var ( // ErrorExposureKeyMismatch - internal coding error, tried to revise key A by passing in key B ErrorExposureKeyMismatch = fmt.Errorf("attempted to revise a key with a different key") // ErrorNonLocalProvenance - key revision attempted on federated key, which is not allowed ErrorNonLocalProvenance = fmt.Errorf("key not origionally uploaded to this server, cannot revise") // ErrorNotSameFederationSource - if a key arrived by federation, it can onlybe be revised by the same query (same source) ErrorNotSameFederationSource = fmt.Errorf("key cannot be revised by a different federation query") // ErrorKeyAlreadyRevised - attempt to revise a key that has already been revised. ErrorKeyAlreadyRevised = fmt.Errorf("key has already been revised and cannot be revised again") )
Functions ¶
func DaysFromSymptomOnset ¶
DaysFromSymptomOnset calculates the number of days between two start intervals. Partial days are rounded up/down to the closest day. If the checkInterval is before the onsetInterval, number of days will be negative.
func IntervalNumber ¶
IntervalNumber calculates the exposure notification system interval number based on the input time.
func ReportTypeTransmissionRisk ¶
ReportTypeTransmissionRisk will calculate the backfill, default Transmission Risk. If there is a provided transmission risk that is non-zero, that will be used, otherwise this mapping is used: * Confirmed Test -> 2 * Clinical Diagnosis -> 4 * Negative -> 6 See constants defined in pkg/api/v1alpha1/verification_types.go
func TimeForIntervalNumber ¶
TimeForIntervalNumber returns the time at which a specific interval starts. The interval number * 600 (10m = 600s) is the corresponding unix timestamp.
Types ¶
type ErrorKeyInvalidReportTypeTransition ¶ added in v0.8.0
type ErrorKeyInvalidReportTypeTransition struct {
// contains filtered or unexported fields
}
ErrorKeyInvalidReportTypeTransition is an error returned when the TEK tried to move to an invalid state (e.g. positive -> likely).
func (*ErrorKeyInvalidReportTypeTransition) Error ¶ added in v0.8.0
func (e *ErrorKeyInvalidReportTypeTransition) Error() string
Error implements error.
type Exposure ¶
type Exposure struct { ExposureKey []byte TransmissionRisk int AppPackageName string Regions []string Traveler bool IntervalNumber int32 IntervalCount int32 CreatedAt time.Time LocalProvenance bool FederationSyncID int64 FederationQueryID string // Export file based Federation ExportImportID *int64 ImportFileID *int64 RevisedImportFileID *int64 // These fields are nullable to maintain backwards compatibility with // older versions that predate their existence. HealthAuthorityID *int64 ReportType string DaysSinceSymptomOnset *int32 // Fields to support key revision. RevisedReportType *string RevisedAt *time.Time RevisedDaysSinceSymptomOnset *int32 RevisedTransmissionRisk *int // contains filtered or unexported fields }
Exposure represents the record as stored in the database
func FromExportKey ¶ added in v0.11.0
func FromExportKey(key *export.TemporaryExposureKey, maxSymptomOnsetDays int32) (*Exposure, error)
FromExportKey is used to read a key from an export file and convert it back to the internal database format.
func ReviseKeys ¶
func ReviseKeys(ctx context.Context, existing map[string]*Exposure, incoming []*Exposure) ([]*Exposure, error)
ReviseKeys takes a set of existing keys, and a list of keys currently being uploaded. Only keys that need to be revised or are being created for the first time are returned in the output set.
func TransformExposureKey ¶
func TransformExposureKey(exposureKey verifyapi.ExposureKey, appPackageName string, upcaseRegions []string, settings *KeyTransform) (*Exposure, error)
TransformExposureKey converts individual key data to an exposure entity. Validations during the transform include:
* exposure keys are exactly 16 bytes in length after base64 decoding * minInterval <= interval number +intervalCount <= maxInterval * MinIntervalCount <= interval count <= MaxIntervalCount
func (*Exposure) AddMissingRegions ¶
AddMissingRegions will merge the input regions into the regions already on the exposure. Set union operation.
func (*Exposure) AdjustAndValidate ¶ added in v0.11.0
func (e *Exposure) AdjustAndValidate(settings *KeyTransform) error
func (*Exposure) ExposureKeyBase64 ¶
ExposureKeyBase64 returns the ExposureKey property base64 encoded.
func (*Exposure) HasBeenRevised ¶
HasBeenRevised returns true if this key has been revised. This is indicated by the RevisedAt time not being nil.
func (*Exposure) HasDaysSinceSymptomOnset ¶
HasDaysSinceSymptomOnset returns true if the this key has the days since symptom onset field is et.
func (*Exposure) HasHealthAuthorityID ¶
HasHealthAuthorityID returns true if this Exposure has a health authority ID.
func (*Exposure) SetDaysSinceSymptomOnset ¶
SetDaysSinceSymptomOnset sets the days since symptom onset field, possibly allocating a new pointer.
func (*Exposure) SetHealthAuthorityID ¶
SetHealthAuthorityID assigned a health authority ID. Typically done during transform.
func (*Exposure) SetRevisedAt ¶
SetRevisedAt will set the revision time on this Exposure. The RevisedAt timestamp can only be set once. Attempting to set it again will result in an error.
func (*Exposure) SetRevisedDaysSinceSymptomOnset ¶
SetRevisedDaysSinceSymptomOnset will set the revised days since symptom onset.
func (*Exposure) SetRevisedReportType ¶
SetRevisedReportType will set the revised report type.
func (*Exposure) SetRevisedTransmissionRisk ¶
SetRevisedTransmissionRisk will set the revised transmission risk.
type KeyTransform ¶
type KeyTransform struct { MinStartInterval int32 MaxStartInterval int32 MaxEndInteral int32 CreatedAt time.Time ReleaseStillValidKeys bool BatchWindow time.Duration }
KeyTransform represents the settings to apply when transforming an individual key on a publish request.
type Transformer ¶
type Transformer struct {
// contains filtered or unexported fields
}
Transformer represents a configured Publish -> Exposure[] transformer.
func NewTransformer ¶
func NewTransformer(config TransformerConfig) (*Transformer, error)
NewTransformer creates a transformer for turning publish API requests into records for insertion into the database. On the call to TransformPublish all data is validated according to the transformer that is used.
func (*Transformer) TransformPublish ¶
func (t *Transformer) TransformPublish(ctx context.Context, inData *verifyapi.Publish, regions []string, claims *verification.VerifiedClaims, batchTime time.Time) ([]*Exposure, []string, error)
TransformPublish converts incoming key data to a list of exposure entities. The data in the request is validated during the transform, including:
* 0 exposure Keys in the requests * > Transformer.maxExposureKeys in the request
The return params are the list of exposures, a list of warnings, and any errors that occur.
type TransformerConfig ¶
type TransformerConfig interface { MaxExposureKeys() uint MaxSameDayKeys() uint MaxIntervalStartAge() time.Duration TruncateWindow() time.Duration MaxSymptomOnsetDays() uint MaxValidSymptomOnsetReportDays() uint DefaultSymptomOnsetDaysAgo() uint DebugReleaseSameDayKeys() bool }
TransformerConfig defines the interface that is needed to configure a `Transformer`