Documentation
¶
Overview ¶
Package sessioncolumns provides column implementations for session data tracking.
Package sessioncolumns provides column implementations for session data tracking.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var DurationColumn = columns.NewSimpleSessionColumn( columns.CoreInterfaces.SessionDuration.ID, columns.CoreInterfaces.SessionDuration.Field, func(session *schema.Session) (any, error) { lastEventTime, ok := session.Values[columns.CoreInterfaces.SessionLastEventTime.Field.Name] if !ok { return nil, columns.NewBrokenSessionError("session last event time not found") } firstEventTime, ok := session.Values[columns.CoreInterfaces.SessionFirstEventTime.Field.Name] if !ok { return nil, columns.NewBrokenSessionError("session first event time not found") } lastEventTimeInt, ok := lastEventTime.(int64) if !ok { return nil, columns.NewBrokenSessionError("session last event time is not an int64") } firstEventTimeInt, ok := firstEventTime.(int64) if !ok { return nil, columns.NewBrokenSessionError("session first event time is not an int64") } if lastEventTimeInt < firstEventTimeInt { return nil, columns.NewBrokenSessionError("session last event time is earlier than session first event time") } return lastEventTimeInt - firstEventTimeInt, nil }, columns.WithSessionColumnDependsOn( schema.DependsOnEntry{ Interface: columns.CoreInterfaces.SessionLastEventTime.ID, GreaterOrEqualTo: "1.0.0", }, schema.DependsOnEntry{ Interface: columns.CoreInterfaces.SessionFirstEventTime.ID, GreaterOrEqualTo: "1.0.0", }), )
DurationColumn is the column for the duration of a session
View Source
var FirstEventTimeColumn = columns.NewSimpleSessionColumn( columns.CoreInterfaces.SessionFirstEventTime.ID, columns.CoreInterfaces.SessionFirstEventTime.Field, func(session *schema.Session) (any, error) { if len(session.Events) == 0 { return nil, columns.NewBrokenSessionError("session has no events") } serverReceivedTime, err := time.Parse(time.RFC3339, session.Events[0].BoundHit.ServerReceivedTime) if err != nil { return nil, columns.NewBrokenSessionError( fmt.Sprintf("failed to parse server received time: %v", err), ) } return serverReceivedTime.Unix(), nil })
FirstEventTimeColumn is the column for the first event time of a session
View Source
var LastEventTimeColumn = columns.NewSimpleSessionColumn( columns.CoreInterfaces.SessionLastEventTime.ID, columns.CoreInterfaces.SessionLastEventTime.Field, func(session *schema.Session) (any, error) { if len(session.Events) == 0 { return nil, columns.NewBrokenSessionError("session has no events") } serverReceivedTime, err := time.Parse(time.RFC3339, session.Events[len(session.Events)-1].BoundHit.ServerReceivedTime) if err != nil { return nil, columns.NewBrokenSessionError( fmt.Sprintf("failed to parse server received time: %v", err), ) } return serverReceivedTime.Unix(), nil })
LastEventTimeColumn is the column for the last event time of a session
View Source
var SessionIDColumn = columns.NewSimpleSessionColumn( columns.CoreInterfaces.SessionID.ID, columns.CoreInterfaces.SessionID.Field, func(session *schema.Session) (any, error) { if len(session.Events) == 0 { return nil, fmt.Errorf("session has no events") } firstEventID, ok := session.Events[0].Values[columns.CoreInterfaces.EventID.Field.Name] if !ok { return nil, errors.New("First event doesn't have ID") } return firstEventID, nil }, columns.WithSessionColumnDependsOn( schema.DependsOnEntry{ Interface: columns.CoreInterfaces.EventID.ID, GreaterOrEqualTo: "1.0.0", }, ), )
SessionIDColumn is the column for the session ID
View Source
var TotalEventsColumn = columns.NewSimpleSessionColumn( columns.CoreInterfaces.SessionTotalEvents.ID, columns.CoreInterfaces.SessionTotalEvents.Field, func(session *schema.Session) (any, error) { return len(session.Events), nil }, )
TotalEventsColumn is the column for the total events of a session
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.