Files

659 lines
20 KiB
Go
Raw Permalink Normal View History

// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.27.0
// source: eula.sql
package repository
import (
"context"
"github.com/google/uuid"
"github.com/jackc/pgx/v5/pgtype"
)
const activateLocalDevEulaVersion = `-- name: ActivateLocalDevEulaVersion :one
WITH cleared AS (
UPDATE eulaVersions
SET isCurrent = FALSE
WHERE isCurrent = TRUE
),
upserted AS (
INSERT INTO eulaVersions (version, title, content, effectiveDate, createdBy, isCurrent, activatedAt, activatedBy)
VALUES ($1, $2, $3, NOW(), 'local-dev', TRUE, NOW(), 'local-dev')
ON CONFLICT (version) DO UPDATE
SET title = EXCLUDED.title,
content = EXCLUDED.content,
effectiveDate = EXCLUDED.effectiveDate,
isCurrent = TRUE,
activatedAt = NOW(),
activatedBy = EXCLUDED.activatedBy
RETURNING id
)
SELECT id FROM upserted
`
type ActivateLocalDevEulaVersionParams struct {
Version string `db:"version"`
Title string `db:"title"`
Content string `db:"content"`
}
// Activates or updates the local development EULA version and makes it current.
//
// WITH cleared AS (
// UPDATE eulaVersions
// SET isCurrent = FALSE
// WHERE isCurrent = TRUE
// ),
// upserted AS (
// INSERT INTO eulaVersions (version, title, content, effectiveDate, createdBy, isCurrent, activatedAt, activatedBy)
// VALUES ($1, $2, $3, NOW(), 'local-dev', TRUE, NOW(), 'local-dev')
// ON CONFLICT (version) DO UPDATE
// SET title = EXCLUDED.title,
// content = EXCLUDED.content,
// effectiveDate = EXCLUDED.effectiveDate,
// isCurrent = TRUE,
// activatedAt = NOW(),
// activatedBy = EXCLUDED.activatedBy
// RETURNING id
// )
// SELECT id FROM upserted
func (q *Queries) ActivateLocalDevEulaVersion(ctx context.Context, arg *ActivateLocalDevEulaVersionParams) (uuid.UUID, error) {
row := q.db.QueryRow(ctx, activateLocalDevEulaVersion, arg.Version, arg.Title, arg.Content)
var id uuid.UUID
err := row.Scan(&id)
return id, err
}
const clearCurrentEulaVersions = `-- name: ClearCurrentEulaVersions :exec
UPDATE eulaVersions
SET isCurrent = FALSE
WHERE isCurrent = TRUE
`
// Clears the isCurrent flag from all versions (does not clear activatedAt/By for audit trail)
//
// UPDATE eulaVersions
// SET isCurrent = FALSE
// WHERE isCurrent = TRUE
func (q *Queries) ClearCurrentEulaVersions(ctx context.Context) error {
_, err := q.db.Exec(ctx, clearCurrentEulaVersions)
return err
}
const countEulaAgreements = `-- name: CountEulaAgreements :one
SELECT COUNT(*) as total
FROM eulaAgreements a
WHERE ($1::uuid IS NULL OR a.eulaVersionId = $1::uuid)
AND ($2::text IS NULL OR a.cognitoSubjectId = $2::text)
`
type CountEulaAgreementsParams struct {
VersionID *uuid.UUID `db:"version_id"`
UserID *string `db:"user_id"`
}
// Counts agreements with optional filtering (matches ListEulaAgreements filters)
//
// SELECT COUNT(*) as total
// FROM eulaAgreements a
// WHERE ($1::uuid IS NULL OR a.eulaVersionId = $1::uuid)
// AND ($2::text IS NULL OR a.cognitoSubjectId = $2::text)
func (q *Queries) CountEulaAgreements(ctx context.Context, arg *CountEulaAgreementsParams) (int64, error) {
row := q.db.QueryRow(ctx, countEulaAgreements, arg.VersionID, arg.UserID)
var total int64
err := row.Scan(&total)
return total, err
}
const countEulaAgreementsByVersion = `-- name: CountEulaAgreementsByVersion :one
SELECT COUNT(*) as count
FROM eulaAgreements
WHERE eulaVersionId = $1
`
// Counts how many users have agreed to a specific EULA version
//
// SELECT COUNT(*) as count
// FROM eulaAgreements
// WHERE eulaVersionId = $1
func (q *Queries) CountEulaAgreementsByVersion(ctx context.Context, eulaversionid uuid.UUID) (int64, error) {
row := q.db.QueryRow(ctx, countEulaAgreementsByVersion, eulaversionid)
var count int64
err := row.Scan(&count)
return count, err
}
const countEulaVersions = `-- name: CountEulaVersions :one
SELECT COUNT(*) as total
FROM eulaVersions
`
// Counts total number of EULA versions
//
// SELECT COUNT(*) as total
// FROM eulaVersions
func (q *Queries) CountEulaVersions(ctx context.Context) (int64, error) {
row := q.db.QueryRow(ctx, countEulaVersions)
var total int64
err := row.Scan(&total)
return total, err
}
const createEulaAgreement = `-- name: CreateEulaAgreement :one
INSERT INTO eulaAgreements (cognitoSubjectId, userEmail, eulaVersionId, agreedFromIp)
VALUES ($1, $2, $3, $4)
RETURNING id, cognitoSubjectId, userEmail, eulaVersionId, agreedAt, agreedFromIp
`
type CreateEulaAgreementParams struct {
Cognitosubjectid string `db:"cognitosubjectid"`
Useremail string `db:"useremail"`
Eulaversionid uuid.UUID `db:"eulaversionid"`
Agreedfromip string `db:"agreedfromip"`
}
// Records a user's agreement to an EULA version
//
// INSERT INTO eulaAgreements (cognitoSubjectId, userEmail, eulaVersionId, agreedFromIp)
// VALUES ($1, $2, $3, $4)
// RETURNING id, cognitoSubjectId, userEmail, eulaVersionId, agreedAt, agreedFromIp
func (q *Queries) CreateEulaAgreement(ctx context.Context, arg *CreateEulaAgreementParams) (*Eulaagreement, error) {
row := q.db.QueryRow(ctx, createEulaAgreement,
arg.Cognitosubjectid,
arg.Useremail,
arg.Eulaversionid,
arg.Agreedfromip,
)
var i Eulaagreement
err := row.Scan(
&i.ID,
&i.Cognitosubjectid,
&i.Useremail,
&i.Eulaversionid,
&i.Agreedat,
&i.Agreedfromip,
)
return &i, err
}
const createEulaVersion = `-- name: CreateEulaVersion :one
INSERT INTO eulaVersions (version, title, content, effectiveDate, createdBy)
VALUES ($1, $2, $3, $4, $5)
RETURNING id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
`
type CreateEulaVersionParams struct {
Version string `db:"version"`
Title string `db:"title"`
Content string `db:"content"`
Effectivedate pgtype.Timestamptz `db:"effectivedate"`
Createdby string `db:"createdby"`
}
// Creates a new EULA version
//
// INSERT INTO eulaVersions (version, title, content, effectiveDate, createdBy)
// VALUES ($1, $2, $3, $4, $5)
// RETURNING id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
func (q *Queries) CreateEulaVersion(ctx context.Context, arg *CreateEulaVersionParams) (*Eulaversion, error) {
row := q.db.QueryRow(ctx, createEulaVersion,
arg.Version,
arg.Title,
arg.Content,
arg.Effectivedate,
arg.Createdby,
)
var i Eulaversion
err := row.Scan(
&i.ID,
&i.Version,
&i.Title,
&i.Content,
&i.Effectivedate,
&i.Createdat,
&i.Createdby,
&i.Iscurrent,
&i.Activatedat,
&i.Activatedby,
)
return &i, err
}
const createLocalDevEulaAgreement = `-- name: CreateLocalDevEulaAgreement :exec
INSERT INTO eulaAgreements (cognitoSubjectId, userEmail, eulaVersionId, agreedFromIp)
VALUES ($1, $2, $3, '127.0.0.1')
ON CONFLICT (cognitoSubjectId, eulaVersionId) DO NOTHING
`
type CreateLocalDevEulaAgreementParams struct {
CognitoSubjectID string `db:"cognito_subject_id"`
UserEmail string `db:"user_email"`
EulaVersionID uuid.UUID `db:"eula_version_id"`
}
// Records an idempotent local development EULA agreement.
//
// INSERT INTO eulaAgreements (cognitoSubjectId, userEmail, eulaVersionId, agreedFromIp)
// VALUES ($1, $2, $3, '127.0.0.1')
// ON CONFLICT (cognitoSubjectId, eulaVersionId) DO NOTHING
func (q *Queries) CreateLocalDevEulaAgreement(ctx context.Context, arg *CreateLocalDevEulaAgreementParams) error {
_, err := q.db.Exec(ctx, createLocalDevEulaAgreement, arg.CognitoSubjectID, arg.UserEmail, arg.EulaVersionID)
return err
}
const getCurrentEulaVersion = `-- name: GetCurrentEulaVersion :one
SELECT id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
FROM eulaVersions
WHERE isCurrent = TRUE
`
// Retrieves the current active EULA version
//
// SELECT id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
// FROM eulaVersions
// WHERE isCurrent = TRUE
func (q *Queries) GetCurrentEulaVersion(ctx context.Context) (*Eulaversion, error) {
row := q.db.QueryRow(ctx, getCurrentEulaVersion)
var i Eulaversion
err := row.Scan(
&i.ID,
&i.Version,
&i.Title,
&i.Content,
&i.Effectivedate,
&i.Createdat,
&i.Createdby,
&i.Iscurrent,
&i.Activatedat,
&i.Activatedby,
)
return &i, err
}
const getEulaVersionById = `-- name: GetEulaVersionById :one
SELECT id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
FROM eulaVersions
WHERE id = $1
`
// Retrieves a specific EULA version by its ID
//
// SELECT id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
// FROM eulaVersions
// WHERE id = $1
func (q *Queries) GetEulaVersionById(ctx context.Context, id uuid.UUID) (*Eulaversion, error) {
row := q.db.QueryRow(ctx, getEulaVersionById, id)
var i Eulaversion
err := row.Scan(
&i.ID,
&i.Version,
&i.Title,
&i.Content,
&i.Effectivedate,
&i.Createdat,
&i.Createdby,
&i.Iscurrent,
&i.Activatedat,
&i.Activatedby,
)
return &i, err
}
const getUserCurrentEulaAgreement = `-- name: GetUserCurrentEulaAgreement :one
SELECT a.id, a.cognitoSubjectId, a.userEmail, a.eulaVersionId, a.agreedAt, a.agreedFromIp
FROM eulaAgreements a
JOIN eulaVersions v ON a.eulaVersionId = v.id
WHERE a.cognitoSubjectId = $1 AND v.isCurrent = TRUE
`
// Checks if a user has agreed to the current EULA version
//
// SELECT a.id, a.cognitoSubjectId, a.userEmail, a.eulaVersionId, a.agreedAt, a.agreedFromIp
// FROM eulaAgreements a
// JOIN eulaVersions v ON a.eulaVersionId = v.id
// WHERE a.cognitoSubjectId = $1 AND v.isCurrent = TRUE
func (q *Queries) GetUserCurrentEulaAgreement(ctx context.Context, cognitosubjectid string) (*Eulaagreement, error) {
row := q.db.QueryRow(ctx, getUserCurrentEulaAgreement, cognitosubjectid)
var i Eulaagreement
err := row.Scan(
&i.ID,
&i.Cognitosubjectid,
&i.Useremail,
&i.Eulaversionid,
&i.Agreedat,
&i.Agreedfromip,
)
return &i, err
}
const getUserEulaAgreement = `-- name: GetUserEulaAgreement :one
SELECT id, cognitoSubjectId, userEmail, eulaVersionId, agreedAt, agreedFromIp
FROM eulaAgreements
WHERE cognitoSubjectId = $1 AND eulaVersionId = $2
`
type GetUserEulaAgreementParams struct {
Cognitosubjectid string `db:"cognitosubjectid"`
Eulaversionid uuid.UUID `db:"eulaversionid"`
}
// Checks if a user has agreed to a specific EULA version
//
// SELECT id, cognitoSubjectId, userEmail, eulaVersionId, agreedAt, agreedFromIp
// FROM eulaAgreements
// WHERE cognitoSubjectId = $1 AND eulaVersionId = $2
func (q *Queries) GetUserEulaAgreement(ctx context.Context, arg *GetUserEulaAgreementParams) (*Eulaagreement, error) {
row := q.db.QueryRow(ctx, getUserEulaAgreement, arg.Cognitosubjectid, arg.Eulaversionid)
var i Eulaagreement
err := row.Scan(
&i.ID,
&i.Cognitosubjectid,
&i.Useremail,
&i.Eulaversionid,
&i.Agreedat,
&i.Agreedfromip,
)
return &i, err
}
const listAgreedUsersForVersion = `-- name: ListAgreedUsersForVersion :many
SELECT id, cognitoSubjectId, userEmail, eulaVersionId, agreedAt, agreedFromIp
FROM eulaAgreements
WHERE eulaVersionId = $1
ORDER BY agreedAt DESC
LIMIT $2 OFFSET $3
`
type ListAgreedUsersForVersionParams struct {
Eulaversionid uuid.UUID `db:"eulaversionid"`
Limit int64 `db:"limit"`
Offset int64 `db:"offset"`
}
// Lists all users who have agreed to a specific EULA version
//
// SELECT id, cognitoSubjectId, userEmail, eulaVersionId, agreedAt, agreedFromIp
// FROM eulaAgreements
// WHERE eulaVersionId = $1
// ORDER BY agreedAt DESC
// LIMIT $2 OFFSET $3
func (q *Queries) ListAgreedUsersForVersion(ctx context.Context, arg *ListAgreedUsersForVersionParams) ([]*Eulaagreement, error) {
rows, err := q.db.Query(ctx, listAgreedUsersForVersion, arg.Eulaversionid, arg.Limit, arg.Offset)
if err != nil {
return nil, err
}
defer rows.Close()
items := []*Eulaagreement{}
for rows.Next() {
var i Eulaagreement
if err := rows.Scan(
&i.ID,
&i.Cognitosubjectid,
&i.Useremail,
&i.Eulaversionid,
&i.Agreedat,
&i.Agreedfromip,
); err != nil {
return nil, err
}
items = append(items, &i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const listEulaAgreements = `-- name: ListEulaAgreements :many
SELECT a.id, a.cognitoSubjectId, a.userEmail, a.eulaVersionId, a.agreedAt, a.agreedFromIp,
v.version as eulaVersionString
FROM eulaAgreements a
JOIN eulaVersions v ON a.eulaVersionId = v.id
WHERE ($3::uuid IS NULL OR a.eulaVersionId = $3::uuid)
AND ($4::text IS NULL OR a.cognitoSubjectId = $4::text)
ORDER BY a.agreedAt DESC
LIMIT $1 OFFSET $2
`
type ListEulaAgreementsParams struct {
Limit int64 `db:"limit"`
Offset int64 `db:"offset"`
VersionID *uuid.UUID `db:"version_id"`
UserID *string `db:"user_id"`
}
type ListEulaAgreementsRow struct {
ID uuid.UUID `db:"id"`
Cognitosubjectid string `db:"cognitosubjectid"`
Useremail string `db:"useremail"`
Eulaversionid uuid.UUID `db:"eulaversionid"`
Agreedat pgtype.Timestamptz `db:"agreedat"`
Agreedfromip string `db:"agreedfromip"`
Eulaversionstring string `db:"eulaversionstring"`
}
// Lists agreements with optional filtering by version_id or user_id
// Pass NULL for filters to skip them
//
// SELECT a.id, a.cognitoSubjectId, a.userEmail, a.eulaVersionId, a.agreedAt, a.agreedFromIp,
// v.version as eulaVersionString
// FROM eulaAgreements a
// JOIN eulaVersions v ON a.eulaVersionId = v.id
// WHERE ($3::uuid IS NULL OR a.eulaVersionId = $3::uuid)
// AND ($4::text IS NULL OR a.cognitoSubjectId = $4::text)
// ORDER BY a.agreedAt DESC
// LIMIT $1 OFFSET $2
func (q *Queries) ListEulaAgreements(ctx context.Context, arg *ListEulaAgreementsParams) ([]*ListEulaAgreementsRow, error) {
rows, err := q.db.Query(ctx, listEulaAgreements,
arg.Limit,
arg.Offset,
arg.VersionID,
arg.UserID,
)
if err != nil {
return nil, err
}
defer rows.Close()
items := []*ListEulaAgreementsRow{}
for rows.Next() {
var i ListEulaAgreementsRow
if err := rows.Scan(
&i.ID,
&i.Cognitosubjectid,
&i.Useremail,
&i.Eulaversionid,
&i.Agreedat,
&i.Agreedfromip,
&i.Eulaversionstring,
); err != nil {
return nil, err
}
items = append(items, &i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const listEulaAgreementsByUser = `-- name: ListEulaAgreementsByUser :many
SELECT a.id, a.cognitoSubjectId, a.userEmail, a.eulaVersionId, a.agreedAt, a.agreedFromIp,
v.version as eulaVersionString, v.title as eulaVersionTitle
FROM eulaAgreements a
JOIN eulaVersions v ON a.eulaVersionId = v.id
WHERE a.cognitoSubjectId = $1
ORDER BY a.agreedAt DESC
`
type ListEulaAgreementsByUserRow struct {
ID uuid.UUID `db:"id"`
Cognitosubjectid string `db:"cognitosubjectid"`
Useremail string `db:"useremail"`
Eulaversionid uuid.UUID `db:"eulaversionid"`
Agreedat pgtype.Timestamptz `db:"agreedat"`
Agreedfromip string `db:"agreedfromip"`
Eulaversionstring string `db:"eulaversionstring"`
Eulaversiontitle string `db:"eulaversiontitle"`
}
// Gets all EULA versions a specific user has agreed to (user's complete history)
//
// SELECT a.id, a.cognitoSubjectId, a.userEmail, a.eulaVersionId, a.agreedAt, a.agreedFromIp,
// v.version as eulaVersionString, v.title as eulaVersionTitle
// FROM eulaAgreements a
// JOIN eulaVersions v ON a.eulaVersionId = v.id
// WHERE a.cognitoSubjectId = $1
// ORDER BY a.agreedAt DESC
func (q *Queries) ListEulaAgreementsByUser(ctx context.Context, cognitosubjectid string) ([]*ListEulaAgreementsByUserRow, error) {
rows, err := q.db.Query(ctx, listEulaAgreementsByUser, cognitosubjectid)
if err != nil {
return nil, err
}
defer rows.Close()
items := []*ListEulaAgreementsByUserRow{}
for rows.Next() {
var i ListEulaAgreementsByUserRow
if err := rows.Scan(
&i.ID,
&i.Cognitosubjectid,
&i.Useremail,
&i.Eulaversionid,
&i.Agreedat,
&i.Agreedfromip,
&i.Eulaversionstring,
&i.Eulaversiontitle,
); err != nil {
return nil, err
}
items = append(items, &i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const listEulaVersions = `-- name: ListEulaVersions :many
SELECT id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
FROM eulaVersions
ORDER BY createdAt DESC
LIMIT $1 OFFSET $2
`
type ListEulaVersionsParams struct {
Limit int64 `db:"limit"`
Offset int64 `db:"offset"`
}
// Lists all EULA versions with pagination, ordered by createdAt descending
//
// SELECT id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
// FROM eulaVersions
// ORDER BY createdAt DESC
// LIMIT $1 OFFSET $2
func (q *Queries) ListEulaVersions(ctx context.Context, arg *ListEulaVersionsParams) ([]*Eulaversion, error) {
rows, err := q.db.Query(ctx, listEulaVersions, arg.Limit, arg.Offset)
if err != nil {
return nil, err
}
defer rows.Close()
items := []*Eulaversion{}
for rows.Next() {
var i Eulaversion
if err := rows.Scan(
&i.ID,
&i.Version,
&i.Title,
&i.Content,
&i.Effectivedate,
&i.Createdat,
&i.Createdby,
&i.Iscurrent,
&i.Activatedat,
&i.Activatedby,
); err != nil {
return nil, err
}
items = append(items, &i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const setEulaVersionCurrent = `-- name: SetEulaVersionCurrent :one
UPDATE eulaVersions
SET isCurrent = TRUE, activatedAt = NOW(), activatedBy = $2
WHERE id = $1
RETURNING id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
`
type SetEulaVersionCurrentParams struct {
ID uuid.UUID `db:"id"`
Activatedby *string `db:"activatedby"`
}
// Sets a specific version as the current active version with audit fields
//
// UPDATE eulaVersions
// SET isCurrent = TRUE, activatedAt = NOW(), activatedBy = $2
// WHERE id = $1
// RETURNING id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
func (q *Queries) SetEulaVersionCurrent(ctx context.Context, arg *SetEulaVersionCurrentParams) (*Eulaversion, error) {
row := q.db.QueryRow(ctx, setEulaVersionCurrent, arg.ID, arg.Activatedby)
var i Eulaversion
err := row.Scan(
&i.ID,
&i.Version,
&i.Title,
&i.Content,
&i.Effectivedate,
&i.Createdat,
&i.Createdby,
&i.Iscurrent,
&i.Activatedat,
&i.Activatedby,
)
return &i, err
}
const updateEulaVersionMetadata = `-- name: UpdateEulaVersionMetadata :one
UPDATE eulaVersions
SET title = $2, effectiveDate = $3
WHERE id = $1
RETURNING id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
`
type UpdateEulaVersionMetadataParams struct {
ID uuid.UUID `db:"id"`
Title string `db:"title"`
Effectivedate pgtype.Timestamptz `db:"effectivedate"`
}
// Updates only the metadata (title and effectiveDate) of an EULA version
//
// UPDATE eulaVersions
// SET title = $2, effectiveDate = $3
// WHERE id = $1
// RETURNING id, version, title, content, effectiveDate, createdAt, createdBy, isCurrent, activatedAt, activatedBy
func (q *Queries) UpdateEulaVersionMetadata(ctx context.Context, arg *UpdateEulaVersionMetadataParams) (*Eulaversion, error) {
row := q.db.QueryRow(ctx, updateEulaVersionMetadata, arg.ID, arg.Title, arg.Effectivedate)
var i Eulaversion
err := row.Scan(
&i.ID,
&i.Version,
&i.Title,
&i.Content,
&i.Effectivedate,
&i.Createdat,
&i.Createdby,
&i.Iscurrent,
&i.Activatedat,
&i.Activatedby,
)
return &i, err
}