diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-07-19 11:31:07 +0300 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-07-19 18:32:12 +0300 |
| commit | 24c0224dd90533bc962d5e1a198cdc464018176c (patch) | |
| tree | 89f2c400f8158e0ef83918f67d4aeb3867e2f799 /internal/server/api | |
| parent | f793203e043aaa2db38823c84500e82756348ac0 (diff) | |
Changed session durations metric to classic histogram, added
last_activity to calculate monthly active users
Diffstat (limited to 'internal/server/api')
| -rw-r--r-- | internal/server/api/api.go | 15 | ||||
| -rw-r--r-- | internal/server/api/migrations/20250718210459_users_last_activity.sql | 5 |
2 files changed, 20 insertions, 0 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go index 5159186..6c602ea 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -11,6 +11,7 @@ import ( "strconv" "strings" "sync" + "time" "github.com/kyren223/eko/internal/data" "github.com/kyren223/eko/internal/packet" @@ -1703,3 +1704,17 @@ func DeviceAnalytics(ctx context.Context, sess *session.Session, request *packet return nil } + +func SetLastUserActivity(ctx context.Context, sess *session.Session) { + queries := data.New(db) + now := time.Now().UnixMilli() + err := queries.UpdateUserLastActivity(ctx, data.UpdateUserLastActivityParams{ + LastActivity: &now, + ID: sess.ID(), + }) + if err != nil { + slog.ErrorContext(ctx, "database error", "error", err) + } else { + slog.DebugContext(ctx, "set user activity", "now", now) + } +} diff --git a/internal/server/api/migrations/20250718210459_users_last_activity.sql b/internal/server/api/migrations/20250718210459_users_last_activity.sql new file mode 100644 index 0000000..2fbc2c8 --- /dev/null +++ b/internal/server/api/migrations/20250718210459_users_last_activity.sql @@ -0,0 +1,5 @@ +-- +goose Up +ALTER TABLE users ADD COLUMN last_activity INTEGER; + +-- +goose Down +ALTER TABLE users DROP COLUMN last_activity; |
