update sqlc gen

This commit is contained in:
Pavel 2024-03-16 22:56:08 +03:00
parent bf7f344d30
commit 30e3841714
2 changed files with 27 additions and 26 deletions

@ -390,11 +390,11 @@ FROM
WITH TimeBucket AS (
SELECT
CASE
WHEN EXTRACT(epoch FROM to_timestamp($2)) - EXTRACT(epoch FROM to_timestamp($1)) > 172800 THEN date_trunc('day', to_timestamp(time_bucket))
ELSE date_trunc('hour', to_timestamp(time_bucket))
WHEN EXTRACT(epoch FROM $2::timestamp) - EXTRACT(epoch FROM $1::timestamp) > 172800 THEN date_trunc('day', timestamp_bucket)
ELSE date_trunc('hour', timestamp_bucket)
END AS time_interval
FROM
generate_series(EXTRACT(epoch FROM to_timestamp($1)), EXTRACT(epoch FROM to_timestamp($2)), 3600) AS time_bucket
generate_series($1::timestamp, $2::timestamp, '1 hour'::interval) AS timestamp_bucket
),
OpenStats AS (
SELECT
@ -410,8 +410,8 @@ WITH TimeBucket AS (
WHERE
answer.quiz_id = $3
AND start = TRUE
AND created_at >= to_timestamp($1)
AND created_at <= to_timestamp($2)
AND created_at >= $1::timestamp
AND created_at <= $2::timestamp
GROUP BY
session
) AS first_starts
@ -434,8 +434,8 @@ WITH TimeBucket AS (
WHERE
answer.quiz_id = $3
AND result = TRUE
AND created_at >= to_timestamp($1)
AND created_at <= to_timestamp($2)
AND created_at >= $1::timestamp
AND created_at <= $2::timestamp
GROUP BY
session
) AS first_results
@ -458,20 +458,20 @@ WITH TimeBucket AS (
a.quiz_id = $3
AND a.result = TRUE
AND b.start = TRUE
AND a.created_at >= to_timestamp($1)
AND a.created_at <= to_timestamp($2)
AND a.created_at >= $1::timestamp
AND a.created_at <= $2::timestamp
GROUP BY
tb.time_interval
)
SELECT
to_timestamp(tb.time_interval) AS time_bucket,
tb.time_interval AS time_bucket,
COALESCE(os.open_count, 0) AS open_count,
COALESCE(rs.result_count, 0) AS result_count,
COALESCE(at.avg_time, 0) AS avg_time,
CASE
WHEN COALESCE(os.open_count, 0) > 0 THEN COALESCE(rs.result_count, 0) / COALESCE(os.open_count, 0)
ELSE 0
END AS conversion
END AS conversion
FROM
TimeBucket tb
LEFT JOIN

@ -8,6 +8,7 @@ package sqlcgen
import (
"context"
"database/sql"
"time"
"github.com/google/uuid"
"github.com/lib/pq"
@ -492,11 +493,11 @@ const generalStatistics = `-- name: GeneralStatistics :many
WITH TimeBucket AS (
SELECT
CASE
WHEN EXTRACT(epoch FROM to_timestamp($2)) - EXTRACT(epoch FROM to_timestamp($1)) > 172800 THEN date_trunc('day', to_timestamp(time_bucket))
ELSE date_trunc('hour', to_timestamp(time_bucket))
WHEN EXTRACT(epoch FROM $2::timestamp) - EXTRACT(epoch FROM $1::timestamp) > 172800 THEN date_trunc('day', timestamp_bucket)
ELSE date_trunc('hour', timestamp_bucket)
END AS time_interval
FROM
generate_series(EXTRACT(epoch FROM to_timestamp($1)), EXTRACT(epoch FROM to_timestamp($2)), 3600) AS time_bucket
generate_series($1::timestamp, $2::timestamp, '1 hour'::interval) AS timestamp_bucket
),
OpenStats AS (
SELECT
@ -512,8 +513,8 @@ WITH TimeBucket AS (
WHERE
answer.quiz_id = $3
AND start = TRUE
AND created_at >= to_timestamp($1)
AND created_at <= to_timestamp($2)
AND created_at >= $1::timestamp
AND created_at <= $2::timestamp
GROUP BY
session
) AS first_starts
@ -536,8 +537,8 @@ WITH TimeBucket AS (
WHERE
answer.quiz_id = $3
AND result = TRUE
AND created_at >= to_timestamp($1)
AND created_at <= to_timestamp($2)
AND created_at >= $1::timestamp
AND created_at <= $2::timestamp
GROUP BY
session
) AS first_results
@ -560,20 +561,20 @@ WITH TimeBucket AS (
a.quiz_id = $3
AND a.result = TRUE
AND b.start = TRUE
AND a.created_at >= to_timestamp($1)
AND a.created_at <= to_timestamp($2)
AND a.created_at >= $1::timestamp
AND a.created_at <= $2::timestamp
GROUP BY
tb.time_interval
)
SELECT
to_timestamp(tb.time_interval) AS time_bucket,
tb.time_interval AS time_bucket,
COALESCE(os.open_count, 0) AS open_count,
COALESCE(rs.result_count, 0) AS result_count,
COALESCE(at.avg_time, 0) AS avg_time,
CASE
WHEN COALESCE(os.open_count, 0) > 0 THEN COALESCE(rs.result_count, 0) / COALESCE(os.open_count, 0)
ELSE 0
END AS conversion
END AS conversion
FROM
TimeBucket tb
LEFT JOIN
@ -585,9 +586,9 @@ FROM
`
type GeneralStatisticsParams struct {
ToTimestamp float64 `db:"to_timestamp" json:"to_timestamp"`
ToTimestamp_2 float64 `db:"to_timestamp_2" json:"to_timestamp_2"`
QuizID int64 `db:"quiz_id" json:"quiz_id"`
Column1 time.Time `db:"column_1" json:"column_1"`
Column2 time.Time `db:"column_2" json:"column_2"`
QuizID int64 `db:"quiz_id" json:"quiz_id"`
}
type GeneralStatisticsRow struct {
@ -599,7 +600,7 @@ type GeneralStatisticsRow struct {
}
func (q *Queries) GeneralStatistics(ctx context.Context, arg GeneralStatisticsParams) ([]GeneralStatisticsRow, error) {
rows, err := q.db.QueryContext(ctx, generalStatistics, arg.ToTimestamp, arg.ToTimestamp_2, arg.QuizID)
rows, err := q.db.QueryContext(ctx, generalStatistics, arg.Column1, arg.Column2, arg.QuizID)
if err != nil {
return nil, err
}