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

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