// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.30.0 // source: user_sub_course_video_progress.sql package dbgen import ( "context" ) const GetFirstIncompletePreviousVideo = `-- name: GetFirstIncompletePreviousVideo :one SELECT v.id, v.title, v.display_order FROM sub_course_videos target JOIN sub_course_videos v ON v.sub_course_id = target.sub_course_id AND v.status = 'PUBLISHED' AND ( v.display_order < target.display_order OR (v.display_order = target.display_order AND v.id < target.id) ) LEFT JOIN user_sub_course_video_progress p ON p.video_id = v.id AND p.user_id = $1::BIGINT AND p.completed_at IS NOT NULL WHERE target.id = $2::BIGINT AND p.video_id IS NULL ORDER BY v.display_order ASC, v.id ASC LIMIT 1 ` type GetFirstIncompletePreviousVideoParams struct { UserID int64 `json:"user_id"` VideoID int64 `json:"video_id"` } type GetFirstIncompletePreviousVideoRow struct { ID int64 `json:"id"` Title string `json:"title"` DisplayOrder int32 `json:"display_order"` } func (q *Queries) GetFirstIncompletePreviousVideo(ctx context.Context, arg GetFirstIncompletePreviousVideoParams) (GetFirstIncompletePreviousVideoRow, error) { row := q.db.QueryRow(ctx, GetFirstIncompletePreviousVideo, arg.UserID, arg.VideoID) var i GetFirstIncompletePreviousVideoRow err := row.Scan(&i.ID, &i.Title, &i.DisplayOrder) return i, err } const MarkVideoCompleted = `-- name: MarkVideoCompleted :one INSERT INTO user_sub_course_video_progress ( user_id, sub_course_id, video_id, completed_at, updated_at ) SELECT $1::BIGINT, v.sub_course_id, v.id, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP FROM sub_course_videos v WHERE v.id = $2::BIGINT AND v.status = 'PUBLISHED' ON CONFLICT (user_id, video_id) DO UPDATE SET completed_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP RETURNING id, user_id, sub_course_id, video_id, completed_at, created_at, updated_at ` type MarkVideoCompletedParams struct { UserID int64 `json:"user_id"` VideoID int64 `json:"video_id"` } func (q *Queries) MarkVideoCompleted(ctx context.Context, arg MarkVideoCompletedParams) (UserSubCourseVideoProgress, error) { row := q.db.QueryRow(ctx, MarkVideoCompleted, arg.UserID, arg.VideoID) var i UserSubCourseVideoProgress err := row.Scan( &i.ID, &i.UserID, &i.SubCourseID, &i.VideoID, &i.CompletedAt, &i.CreatedAt, &i.UpdatedAt, ) return i, err }