Antonio Mika
·
2026-10-10
1package postgres
2
3import (
4 "time"
5
6 "github.com/picosh/pico/pkg/db"
7)
8
9func (me *PsqlDB) FindAccessLogs(userID string, fromDate *time.Time) ([]*db.AccessLog, error) {
10 var logs []*db.AccessLog
11 err := me.Db.Select(&logs, `SELECT * FROM access_logs WHERE user_id=$1 AND created_at >= $2 ORDER BY created_at ASC`, userID, fromDate)
12 if err != nil {
13 return nil, err
14 }
15 return logs, nil
16}
17
18func (me *PsqlDB) FindAccessLogsByPubkey(pubkey string, fromDate *time.Time) ([]*db.AccessLog, error) {
19 var logs []*db.AccessLog
20 err := me.Db.Select(&logs, `SELECT * FROM access_logs WHERE pubkey=$1 AND created_at >= $2 ORDER BY created_at ASC`, pubkey, fromDate)
21 if err != nil {
22 return nil, err
23 }
24 return logs, nil
25}
26
27func (me *PsqlDB) FindPubkeysInAccessLogs(userID string) ([]string, error) {
28 var pubkeys []string
29 err := me.Db.Select(&pubkeys, `SELECT DISTINCT(pubkey) FROM access_logs WHERE user_id=$1`, userID)
30 if err != nil {
31 return nil, err
32 }
33 return pubkeys, nil
34}
35
36func (me *PsqlDB) InsertAccessLog(log *db.AccessLog) error {
37 _, err := me.Db.Exec(
38 `INSERT INTO access_logs (user_id, service, pubkey, identity) VALUES ($1, $2, $3, $4);`,
39 log.UserID,
40 log.Service,
41 log.Pubkey,
42 log.Identity,
43 )
44 return err
45}