// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.30.0 // source: video_engagement.sql package dbgen import ( "context" "github.com/jackc/pgx/v5/pgtype" ) const GetActiveVideoWatchSession = `-- name: GetActiveVideoWatchSession :one SELECT id, user_id, content_kind, content_id, session_number, video_duration_sec, max_position_sec, started_at, last_heartbeat_at, ended_at, completed_at FROM user_video_watch_sessions WHERE user_id = $1 AND content_kind = $2 AND content_id = $3 AND ended_at IS NULL AND last_heartbeat_at >= $4 ORDER BY session_number DESC LIMIT 1 ` type GetActiveVideoWatchSessionParams struct { UserID int64 `json:"user_id"` ContentKind string `json:"content_kind"` ContentID int64 `json:"content_id"` LastHeartbeatAt pgtype.Timestamptz `json:"last_heartbeat_at"` } func (q *Queries) GetActiveVideoWatchSession(ctx context.Context, arg GetActiveVideoWatchSessionParams) (UserVideoWatchSession, error) { row := q.db.QueryRow(ctx, GetActiveVideoWatchSession, arg.UserID, arg.ContentKind, arg.ContentID, arg.LastHeartbeatAt, ) var i UserVideoWatchSession err := row.Scan( &i.ID, &i.UserID, &i.ContentKind, &i.ContentID, &i.SessionNumber, &i.VideoDurationSec, &i.MaxPositionSec, &i.StartedAt, &i.LastHeartbeatAt, &i.EndedAt, &i.CompletedAt, ) return i, err } const GetMaxVideoWatchSessionNumber = `-- name: GetMaxVideoWatchSessionNumber :one SELECT coalesce(max(session_number), 0)::int AS max_session_number FROM user_video_watch_sessions WHERE user_id = $1 AND content_kind = $2 AND content_id = $3 ` type GetMaxVideoWatchSessionNumberParams struct { UserID int64 `json:"user_id"` ContentKind string `json:"content_kind"` ContentID int64 `json:"content_id"` } func (q *Queries) GetMaxVideoWatchSessionNumber(ctx context.Context, arg GetMaxVideoWatchSessionNumberParams) (int32, error) { row := q.db.QueryRow(ctx, GetMaxVideoWatchSessionNumber, arg.UserID, arg.ContentKind, arg.ContentID) var max_session_number int32 err := row.Scan(&max_session_number) return max_session_number, err } const InsertVideoWatchSession = `-- name: InsertVideoWatchSession :one INSERT INTO user_video_watch_sessions ( user_id, content_kind, content_id, session_number, video_duration_sec, max_position_sec ) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id, user_id, content_kind, content_id, session_number, video_duration_sec, max_position_sec, started_at, last_heartbeat_at, ended_at, completed_at ` type InsertVideoWatchSessionParams struct { UserID int64 `json:"user_id"` ContentKind string `json:"content_kind"` ContentID int64 `json:"content_id"` SessionNumber int32 `json:"session_number"` VideoDurationSec pgtype.Int4 `json:"video_duration_sec"` MaxPositionSec int32 `json:"max_position_sec"` } func (q *Queries) InsertVideoWatchSession(ctx context.Context, arg InsertVideoWatchSessionParams) (UserVideoWatchSession, error) { row := q.db.QueryRow(ctx, InsertVideoWatchSession, arg.UserID, arg.ContentKind, arg.ContentID, arg.SessionNumber, arg.VideoDurationSec, arg.MaxPositionSec, ) var i UserVideoWatchSession err := row.Scan( &i.ID, &i.UserID, &i.ContentKind, &i.ContentID, &i.SessionNumber, &i.VideoDurationSec, &i.MaxPositionSec, &i.StartedAt, &i.LastHeartbeatAt, &i.EndedAt, &i.CompletedAt, ) return i, err } const UpdateVideoWatchSession = `-- name: UpdateVideoWatchSession :one UPDATE user_video_watch_sessions SET max_position_sec = $2, video_duration_sec = $3, last_heartbeat_at = $4, completed_at = $5, ended_at = $6 WHERE id = $1 RETURNING id, user_id, content_kind, content_id, session_number, video_duration_sec, max_position_sec, started_at, last_heartbeat_at, ended_at, completed_at ` type UpdateVideoWatchSessionParams struct { ID int64 `json:"id"` MaxPositionSec int32 `json:"max_position_sec"` VideoDurationSec pgtype.Int4 `json:"video_duration_sec"` LastHeartbeatAt pgtype.Timestamptz `json:"last_heartbeat_at"` CompletedAt pgtype.Timestamptz `json:"completed_at"` EndedAt pgtype.Timestamptz `json:"ended_at"` } func (q *Queries) UpdateVideoWatchSession(ctx context.Context, arg UpdateVideoWatchSessionParams) (UserVideoWatchSession, error) { row := q.db.QueryRow(ctx, UpdateVideoWatchSession, arg.ID, arg.MaxPositionSec, arg.VideoDurationSec, arg.LastHeartbeatAt, arg.CompletedAt, arg.EndedAt, ) var i UserVideoWatchSession err := row.Scan( &i.ID, &i.UserID, &i.ContentKind, &i.ContentID, &i.SessionNumber, &i.VideoDurationSec, &i.MaxPositionSec, &i.StartedAt, &i.LastHeartbeatAt, &i.EndedAt, &i.CompletedAt, ) return i, err }