sessions #2
@ -128,15 +128,103 @@ func (q *Queries) GetServiceSessionByRefreshJTI(ctx context.Context, refreshToke
|
|||||||
return i, err
|
return i, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getServiceSessions = `-- name: GetServiceSessions :many
|
||||||
|
SELECT session.id, session.service_id, session.client_id, session.user_id, session.issued_at, session.expires_at, session.last_active, session.ip_address, session.user_agent, session.access_token_id, session.refresh_token_id, session.is_active, session.revoked_at, session.scope, session.claims, service.id, service.client_id, service.client_secret, service.name, service.redirect_uris, service.scopes, service.grant_types, service.created_at, service.updated_at, service.is_active, service.description, service.icon_url, u.id, u.email, u.full_name, u.password_hash, u.is_admin, u.created_at, u.updated_at, u.last_login, u.phone_number, u.profile_picture, u.created_by, u.email_verified, u.avatar_verified, u.verified
|
||||||
|
FROM service_sessions AS session
|
||||||
|
JOIN api_services AS service ON service.id = session.service_id
|
||||||
|
JOIN users AS u ON u.id = session.user_id
|
||||||
|
ORDER BY session.issued_at DESC
|
||||||
|
LIMIT $1 OFFSET $2
|
||||||
|
`
|
||||||
|
|
||||||
|
type GetServiceSessionsParams struct {
|
||||||
|
Limit int32 `json:"limit"`
|
||||||
|
Offset int32 `json:"offset"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetServiceSessionsRow struct {
|
||||||
|
ServiceSession ServiceSession `json:"service_session"`
|
||||||
|
ApiService ApiService `json:"api_service"`
|
||||||
|
User User `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) GetServiceSessions(ctx context.Context, arg GetServiceSessionsParams) ([]GetServiceSessionsRow, error) {
|
||||||
|
rows, err := q.db.Query(ctx, getServiceSessions, arg.Limit, arg.Offset)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
var items []GetServiceSessionsRow
|
||||||
|
for rows.Next() {
|
||||||
|
var i GetServiceSessionsRow
|
||||||
|
if err := rows.Scan(
|
||||||
|
&i.ServiceSession.ID,
|
||||||
|
&i.ServiceSession.ServiceID,
|
||||||
|
&i.ServiceSession.ClientID,
|
||||||
|
&i.ServiceSession.UserID,
|
||||||
|
&i.ServiceSession.IssuedAt,
|
||||||
|
&i.ServiceSession.ExpiresAt,
|
||||||
|
&i.ServiceSession.LastActive,
|
||||||
|
&i.ServiceSession.IpAddress,
|
||||||
|
&i.ServiceSession.UserAgent,
|
||||||
|
&i.ServiceSession.AccessTokenID,
|
||||||
|
&i.ServiceSession.RefreshTokenID,
|
||||||
|
&i.ServiceSession.IsActive,
|
||||||
|
&i.ServiceSession.RevokedAt,
|
||||||
|
&i.ServiceSession.Scope,
|
||||||
|
&i.ServiceSession.Claims,
|
||||||
|
&i.ApiService.ID,
|
||||||
|
&i.ApiService.ClientID,
|
||||||
|
&i.ApiService.ClientSecret,
|
||||||
|
&i.ApiService.Name,
|
||||||
|
&i.ApiService.RedirectUris,
|
||||||
|
&i.ApiService.Scopes,
|
||||||
|
&i.ApiService.GrantTypes,
|
||||||
|
&i.ApiService.CreatedAt,
|
||||||
|
&i.ApiService.UpdatedAt,
|
||||||
|
&i.ApiService.IsActive,
|
||||||
|
&i.ApiService.Description,
|
||||||
|
&i.ApiService.IconUrl,
|
||||||
|
&i.User.ID,
|
||||||
|
&i.User.Email,
|
||||||
|
&i.User.FullName,
|
||||||
|
&i.User.PasswordHash,
|
||||||
|
&i.User.IsAdmin,
|
||||||
|
&i.User.CreatedAt,
|
||||||
|
&i.User.UpdatedAt,
|
||||||
|
&i.User.LastLogin,
|
||||||
|
&i.User.PhoneNumber,
|
||||||
|
&i.User.ProfilePicture,
|
||||||
|
&i.User.CreatedBy,
|
||||||
|
&i.User.EmailVerified,
|
||||||
|
&i.User.AvatarVerified,
|
||||||
|
&i.User.Verified,
|
||||||
|
); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
items = append(items, i)
|
||||||
|
}
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return items, nil
|
||||||
|
}
|
||||||
|
|
||||||
const listActiveServiceSessionsByClient = `-- name: ListActiveServiceSessionsByClient :many
|
const listActiveServiceSessionsByClient = `-- name: ListActiveServiceSessionsByClient :many
|
||||||
SELECT id, service_id, client_id, user_id, issued_at, expires_at, last_active, ip_address, user_agent, access_token_id, refresh_token_id, is_active, revoked_at, scope, claims FROM service_sessions
|
SELECT id, service_id, client_id, user_id, issued_at, expires_at, last_active, ip_address, user_agent, access_token_id, refresh_token_id, is_active, revoked_at, scope, claims FROM service_sessions
|
||||||
WHERE client_id = $1
|
WHERE client_id = $1
|
||||||
AND is_active = TRUE
|
AND is_active = TRUE
|
||||||
ORDER BY issued_at DESC
|
ORDER BY issued_at DESC
|
||||||
|
LIMIT $1 OFFSET $2
|
||||||
`
|
`
|
||||||
|
|
||||||
func (q *Queries) ListActiveServiceSessionsByClient(ctx context.Context, clientID string) ([]ServiceSession, error) {
|
type ListActiveServiceSessionsByClientParams struct {
|
||||||
rows, err := q.db.Query(ctx, listActiveServiceSessionsByClient, clientID)
|
Limit int32 `json:"limit"`
|
||||||
|
Offset int32 `json:"offset"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) ListActiveServiceSessionsByClient(ctx context.Context, arg ListActiveServiceSessionsByClientParams) ([]ServiceSession, error) {
|
||||||
|
rows, err := q.db.Query(ctx, listActiveServiceSessionsByClient, arg.Limit, arg.Offset)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -176,10 +264,16 @@ SELECT id, service_id, client_id, user_id, issued_at, expires_at, last_active, i
|
|||||||
WHERE user_id = $1
|
WHERE user_id = $1
|
||||||
AND is_active = TRUE
|
AND is_active = TRUE
|
||||||
ORDER BY issued_at DESC
|
ORDER BY issued_at DESC
|
||||||
|
LIMIT $1 OFFSET $2
|
||||||
`
|
`
|
||||||
|
|
||||||
func (q *Queries) ListActiveServiceSessionsByUser(ctx context.Context, userID *uuid.UUID) ([]ServiceSession, error) {
|
type ListActiveServiceSessionsByUserParams struct {
|
||||||
rows, err := q.db.Query(ctx, listActiveServiceSessionsByUser, userID)
|
Limit int32 `json:"limit"`
|
||||||
|
Offset int32 `json:"offset"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) ListActiveServiceSessionsByUser(ctx context.Context, arg ListActiveServiceSessionsByUserParams) ([]ServiceSession, error) {
|
||||||
|
rows, err := q.db.Query(ctx, listActiveServiceSessionsByUser, arg.Limit, arg.Offset)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -122,6 +122,72 @@ func (q *Queries) GetUserSessionByRefreshJTI(ctx context.Context, refreshTokenID
|
|||||||
return i, err
|
return i, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getUserSessions = `-- name: GetUserSessions :many
|
||||||
|
SELECT session.id, session.user_id, session.session_type, session.issued_at, session.expires_at, session.last_active, session.ip_address, session.user_agent, session.access_token_id, session.refresh_token_id, session.device_info, session.is_active, session.revoked_at, u.id, u.email, u.full_name, u.password_hash, u.is_admin, u.created_at, u.updated_at, u.last_login, u.phone_number, u.profile_picture, u.created_by, u.email_verified, u.avatar_verified, u.verified
|
||||||
|
FROM user_sessions AS session
|
||||||
|
JOIN users AS u ON u.id = session.user_id
|
||||||
|
ORDER BY session.issued_at DESC
|
||||||
|
LIMIT $1 OFFSET $2
|
||||||
|
`
|
||||||
|
|
||||||
|
type GetUserSessionsParams struct {
|
||||||
|
Limit int32 `json:"limit"`
|
||||||
|
Offset int32 `json:"offset"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetUserSessionsRow struct {
|
||||||
|
UserSession UserSession `json:"user_session"`
|
||||||
|
User User `json:"user"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) GetUserSessions(ctx context.Context, arg GetUserSessionsParams) ([]GetUserSessionsRow, error) {
|
||||||
|
rows, err := q.db.Query(ctx, getUserSessions, arg.Limit, arg.Offset)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
var items []GetUserSessionsRow
|
||||||
|
for rows.Next() {
|
||||||
|
var i GetUserSessionsRow
|
||||||
|
if err := rows.Scan(
|
||||||
|
&i.UserSession.ID,
|
||||||
|
&i.UserSession.UserID,
|
||||||
|
&i.UserSession.SessionType,
|
||||||
|
&i.UserSession.IssuedAt,
|
||||||
|
&i.UserSession.ExpiresAt,
|
||||||
|
&i.UserSession.LastActive,
|
||||||
|
&i.UserSession.IpAddress,
|
||||||
|
&i.UserSession.UserAgent,
|
||||||
|
&i.UserSession.AccessTokenID,
|
||||||
|
&i.UserSession.RefreshTokenID,
|
||||||
|
&i.UserSession.DeviceInfo,
|
||||||
|
&i.UserSession.IsActive,
|
||||||
|
&i.UserSession.RevokedAt,
|
||||||
|
&i.User.ID,
|
||||||
|
&i.User.Email,
|
||||||
|
&i.User.FullName,
|
||||||
|
&i.User.PasswordHash,
|
||||||
|
&i.User.IsAdmin,
|
||||||
|
&i.User.CreatedAt,
|
||||||
|
&i.User.UpdatedAt,
|
||||||
|
&i.User.LastLogin,
|
||||||
|
&i.User.PhoneNumber,
|
||||||
|
&i.User.ProfilePicture,
|
||||||
|
&i.User.CreatedBy,
|
||||||
|
&i.User.EmailVerified,
|
||||||
|
&i.User.AvatarVerified,
|
||||||
|
&i.User.Verified,
|
||||||
|
); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
items = append(items, i)
|
||||||
|
}
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return items, nil
|
||||||
|
}
|
||||||
|
|
||||||
const listActiveUserSessions = `-- name: ListActiveUserSessions :many
|
const listActiveUserSessions = `-- name: ListActiveUserSessions :many
|
||||||
SELECT id, user_id, session_type, issued_at, expires_at, last_active, ip_address, user_agent, access_token_id, refresh_token_id, device_info, is_active, revoked_at FROM user_sessions
|
SELECT id, user_id, session_type, issued_at, expires_at, last_active, ip_address, user_agent, access_token_id, refresh_token_id, device_info, is_active, revoked_at FROM user_sessions
|
||||||
WHERE user_id = $1
|
WHERE user_id = $1
|
||||||
|
@ -14,13 +14,15 @@ RETURNING *;
|
|||||||
SELECT * FROM service_sessions
|
SELECT * FROM service_sessions
|
||||||
WHERE client_id = $1
|
WHERE client_id = $1
|
||||||
AND is_active = TRUE
|
AND is_active = TRUE
|
||||||
ORDER BY issued_at DESC;
|
ORDER BY issued_at DESC
|
||||||
|
LIMIT $1 OFFSET $2;
|
||||||
|
|
||||||
-- name: ListActiveServiceSessionsByUser :many
|
-- name: ListActiveServiceSessionsByUser :many
|
||||||
SELECT * FROM service_sessions
|
SELECT * FROM service_sessions
|
||||||
WHERE user_id = $1
|
WHERE user_id = $1
|
||||||
AND is_active = TRUE
|
AND is_active = TRUE
|
||||||
ORDER BY issued_at DESC;
|
ORDER BY issued_at DESC
|
||||||
|
LIMIT $1 OFFSET $2;
|
||||||
|
|
||||||
-- name: GetServiceSessionByAccessJTI :one
|
-- name: GetServiceSessionByAccessJTI :one
|
||||||
SELECT * FROM service_sessions
|
SELECT * FROM service_sessions
|
||||||
@ -49,3 +51,11 @@ WHERE id = $1
|
|||||||
SELECT * FROM service_sessions
|
SELECT * FROM service_sessions
|
||||||
ORDER BY issued_at DESC
|
ORDER BY issued_at DESC
|
||||||
LIMIT $1 OFFSET $2;
|
LIMIT $1 OFFSET $2;
|
||||||
|
|
||||||
|
-- name: GetServiceSessions :many
|
||||||
|
SELECT sqlc.embed(session), sqlc.embed(service), sqlc.embed(u)
|
||||||
|
FROM service_sessions AS session
|
||||||
|
JOIN api_services AS service ON service.id = session.service_id
|
||||||
|
JOIN users AS u ON u.id = session.user_id
|
||||||
|
ORDER BY session.issued_at DESC
|
||||||
|
LIMIT $1 OFFSET $2;
|
||||||
|
@ -49,3 +49,10 @@ WHERE id = $1
|
|||||||
SELECT * FROM user_sessions
|
SELECT * FROM user_sessions
|
||||||
ORDER BY issued_at DESC
|
ORDER BY issued_at DESC
|
||||||
LIMIT $1 OFFSET $2;
|
LIMIT $1 OFFSET $2;
|
||||||
|
|
||||||
|
-- name: GetUserSessions :many
|
||||||
|
SELECT sqlc.embed(session), sqlc.embed(u)
|
||||||
|
FROM user_sessions AS session
|
||||||
|
JOIN users AS u ON u.id = session.user_id
|
||||||
|
ORDER BY session.issued_at DESC
|
||||||
|
LIMIT $1 OFFSET $2;
|
||||||
|
Reference in New Issue
Block a user