sessioncolumns

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2025 License: MIT Imports: 4 Imported by: 0

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")
		}
		return session.Events[0].BoundHit.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")
		}
		return session.Events[len(session.Events)-1].BoundHit.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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL