168 lines
3.8 KiB
Go
168 lines
3.8 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.25.0
|
|
// source: sessions.sql
|
|
|
|
package queries
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
const createSession = `-- name: CreateSession :exec
|
|
INSERT INTO sessions (uid, token, last_activity) VALUES ($1, $2, CURRENT_TIMESTAMP)
|
|
`
|
|
|
|
type CreateSessionParams struct {
|
|
Uid string
|
|
Token string
|
|
}
|
|
|
|
func (q *Queries) CreateSession(ctx context.Context, arg CreateSessionParams) error {
|
|
_, err := q.db.ExecContext(ctx, createSession, arg.Uid, arg.Token)
|
|
return err
|
|
}
|
|
|
|
const expireSession = `-- name: ExpireSession :exec
|
|
UPDATE sessions SET expires = 1 WHERE token = $1
|
|
`
|
|
|
|
func (q *Queries) ExpireSession(ctx context.Context, token string) error {
|
|
_, err := q.db.ExecContext(ctx, expireSession, token)
|
|
return err
|
|
}
|
|
|
|
const getActiveSessions = `-- name: GetActiveSessions :many
|
|
SELECT id, uid, token, expires, last_activity, created_at FROM sessions WHERE uid = $1 AND (expires > CURRENT_TIMESTAMP OR expires IS NULL) ORDER BY $2
|
|
`
|
|
|
|
type GetActiveSessionsParams struct {
|
|
Uid string
|
|
Column2 interface{}
|
|
}
|
|
|
|
func (q *Queries) GetActiveSessions(ctx context.Context, arg GetActiveSessionsParams) ([]Session, error) {
|
|
rows, err := q.db.QueryContext(ctx, getActiveSessions, arg.Uid, arg.Column2)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Session
|
|
for rows.Next() {
|
|
var i Session
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.Uid,
|
|
&i.Token,
|
|
&i.Expires,
|
|
&i.LastActivity,
|
|
&i.CreatedAt,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getSession = `-- name: GetSession :one
|
|
SELECT id, uid, token, expires, last_activity, created_at FROM sessions WHERE token = $1
|
|
`
|
|
|
|
func (q *Queries) GetSession(ctx context.Context, token string) (Session, error) {
|
|
row := q.db.QueryRowContext(ctx, getSession, token)
|
|
var i Session
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.Uid,
|
|
&i.Token,
|
|
&i.Expires,
|
|
&i.LastActivity,
|
|
&i.CreatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const getSessions = `-- name: GetSessions :many
|
|
SELECT id, uid, token, expires, last_activity, created_at FROM sessions WHERE uid = $1 ORDER BY $2
|
|
`
|
|
|
|
type GetSessionsParams struct {
|
|
Uid string
|
|
Column2 interface{}
|
|
}
|
|
|
|
func (q *Queries) GetSessions(ctx context.Context, arg GetSessionsParams) ([]Session, error) {
|
|
rows, err := q.db.QueryContext(ctx, getSessions, arg.Uid, arg.Column2)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []Session
|
|
for rows.Next() {
|
|
var i Session
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.Uid,
|
|
&i.Token,
|
|
&i.Expires,
|
|
&i.LastActivity,
|
|
&i.CreatedAt,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Close(); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const quickUpdateSession = `-- name: QuickUpdateSession :one
|
|
WITH updated_session AS (
|
|
UPDATE sessions
|
|
SET last_activity = CURRENT_TIMESTAMP
|
|
WHERE token = $1
|
|
RETURNING id, uid
|
|
),
|
|
inserted_or_updated AS (
|
|
INSERT INTO session_ips (session_id, ip_address, agent, access_time)
|
|
VALUES (
|
|
(SELECT id FROM updated_session),
|
|
$2,
|
|
$3,
|
|
CURRENT_TIMESTAMP
|
|
)
|
|
ON CONFLICT (session_id, ip_address)
|
|
DO UPDATE SET
|
|
agent = EXCLUDED.agent,
|
|
access_time = CURRENT_TIMESTAMP
|
|
RETURNING session_id
|
|
)
|
|
SELECT uid
|
|
FROM updated_session
|
|
`
|
|
|
|
type QuickUpdateSessionParams struct {
|
|
Token string
|
|
IpAddress string
|
|
Agent string
|
|
}
|
|
|
|
func (q *Queries) QuickUpdateSession(ctx context.Context, arg QuickUpdateSessionParams) (string, error) {
|
|
row := q.db.QueryRowContext(ctx, quickUpdateSession, arg.Token, arg.IpAddress, arg.Agent)
|
|
var uid string
|
|
err := row.Scan(&uid)
|
|
return uid, err
|
|
}
|