43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package datasaver
|
|
|
|
import (
|
|
"log"
|
|
"openreplay/backend/pkg/db/clickhouse"
|
|
"openreplay/backend/pkg/db/types"
|
|
"openreplay/backend/pkg/env"
|
|
"openreplay/backend/pkg/messages"
|
|
)
|
|
|
|
func (si *Saver) InitStats() {
|
|
si.ch = clickhouse.NewConnector(env.String("CLICKHOUSE_STRING"))
|
|
if err := si.ch.Prepare(); err != nil {
|
|
log.Fatalf("Clickhouse prepare error: %v\n", err)
|
|
}
|
|
si.pg.Conn.SetClickHouse(si.ch)
|
|
}
|
|
|
|
func (si *Saver) InsertStats(session *types.Session, msg messages.Message) error {
|
|
switch m := msg.(type) {
|
|
// Web
|
|
case *messages.SessionEnd:
|
|
return si.ch.InsertWebSession(session)
|
|
case *messages.PerformanceTrackAggr:
|
|
return si.ch.InsertWebPerformanceTrackAggr(session, m)
|
|
case *messages.ClickEvent:
|
|
return si.ch.InsertWebClickEvent(session, m)
|
|
case *messages.InputEvent:
|
|
return si.ch.InsertWebInputEvent(session, m)
|
|
// Unique for Web
|
|
case *messages.PageEvent:
|
|
return si.ch.InsertWebPageEvent(session, m)
|
|
case *messages.ResourceEvent:
|
|
return si.ch.InsertWebResourceEvent(session, m)
|
|
case *messages.ErrorEvent:
|
|
return si.ch.InsertWebErrorEvent(session, m)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (si *Saver) CommitStats() error {
|
|
return si.ch.Commit()
|
|
}
|