Merge branch 'expiredPr' into 'main'

Expired pr

See merge request backend/quiz/common!21
This commit is contained in:
Mikhail 2024-06-04 21:44:54 +00:00
commit cff3083d9c
6 changed files with 120 additions and 28 deletions

@ -266,11 +266,19 @@ DELETE FROM privileges WHERE id = $1;
-- name: GetQuizConfig :one
SELECT config, accountid FROM quiz WHERE id = $1 AND deleted = false;
-- name: GetExpiredPrivilege :many
SELECT id, privilegeID, privilege_name, amount, created_at
FROM privileges
WHERE created_at + amount * interval '1 day' < NOW()
AND privilegeid = $1;
-- name: GetExpiredDayPrivilege :many
SELECT p.id, p.privilegeID, p.privilege_name, p.amount, p.created_at, a.user_id
FROM privileges p
JOIN account a ON p.account_id = a.id
WHERE p.created_at + p.amount * interval '1 day' < NOW()
AND p.privilegeID = $1;
-- name: GetExpiredCountPrivilege :many
SELECT p.id, p.privilegeID, p.privilege_name, p.amount, p.created_at, a.user_id
FROM privileges p
JOIN account a ON p.account_id = a.id
WHERE p.amount = 0
AND p.privilegeID = $1;
-- name: CheckAndAddDefault :exec
UPDATE privileges

@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.25.0
// sqlc v1.26.0
package sqlcgen

@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.25.0
// sqlc v1.26.0
package sqlcgen

@ -1,6 +1,6 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.25.0
// sqlc v1.26.0
// source: queries.sql
package sqlcgen
@ -1477,36 +1477,86 @@ func (q *Queries) GetCurrentAccount(ctx context.Context, accountid string) (User
return i, err
}
const getExpiredPrivilege = `-- name: GetExpiredPrivilege :many
SELECT id, privilegeID, privilege_name, amount, created_at
FROM privileges
WHERE created_at + amount * interval '1 day' < NOW()
AND privilegeid = $1
const getExpiredCountPrivilege = `-- name: GetExpiredCountPrivilege :many
SELECT p.id, p.privilegeID, p.privilege_name, p.amount, p.created_at, a.user_id
FROM privileges p
JOIN account a ON p.account_id = a.id
WHERE p.amount = 0
AND p.privilegeID = $1
`
type GetExpiredPrivilegeRow struct {
type GetExpiredCountPrivilegeRow struct {
ID int32 `db:"id" json:"id"`
Privilegeid sql.NullString `db:"privilegeid" json:"privilegeid"`
PrivilegeName sql.NullString `db:"privilege_name" json:"privilege_name"`
Amount sql.NullInt32 `db:"amount" json:"amount"`
CreatedAt sql.NullTime `db:"created_at" json:"created_at"`
UserID sql.NullString `db:"user_id" json:"user_id"`
}
func (q *Queries) GetExpiredPrivilege(ctx context.Context, privilegeid sql.NullString) ([]GetExpiredPrivilegeRow, error) {
rows, err := q.db.QueryContext(ctx, getExpiredPrivilege, privilegeid)
func (q *Queries) GetExpiredCountPrivilege(ctx context.Context, privilegeid sql.NullString) ([]GetExpiredCountPrivilegeRow, error) {
rows, err := q.db.QueryContext(ctx, getExpiredCountPrivilege, privilegeid)
if err != nil {
return nil, err
}
defer rows.Close()
var items []GetExpiredPrivilegeRow
var items []GetExpiredCountPrivilegeRow
for rows.Next() {
var i GetExpiredPrivilegeRow
var i GetExpiredCountPrivilegeRow
if err := rows.Scan(
&i.ID,
&i.Privilegeid,
&i.PrivilegeName,
&i.Amount,
&i.CreatedAt,
&i.UserID,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const getExpiredDayPrivilege = `-- name: GetExpiredDayPrivilege :many
SELECT p.id, p.privilegeID, p.privilege_name, p.amount, p.created_at, a.user_id
FROM privileges p
JOIN account a ON p.account_id = a.id
WHERE p.created_at + p.amount * interval '1 day' < NOW()
AND p.privilegeID = $1
`
type GetExpiredDayPrivilegeRow struct {
ID int32 `db:"id" json:"id"`
Privilegeid sql.NullString `db:"privilegeid" json:"privilegeid"`
PrivilegeName sql.NullString `db:"privilege_name" json:"privilege_name"`
Amount sql.NullInt32 `db:"amount" json:"amount"`
CreatedAt sql.NullTime `db:"created_at" json:"created_at"`
UserID sql.NullString `db:"user_id" json:"user_id"`
}
func (q *Queries) GetExpiredDayPrivilege(ctx context.Context, privilegeid sql.NullString) ([]GetExpiredDayPrivilegeRow, error) {
rows, err := q.db.QueryContext(ctx, getExpiredDayPrivilege, privilegeid)
if err != nil {
return nil, err
}
defer rows.Close()
var items []GetExpiredDayPrivilegeRow
for rows.Next() {
var i GetExpiredDayPrivilegeRow
if err := rows.Scan(
&i.ID,
&i.Privilegeid,
&i.PrivilegeName,
&i.Amount,
&i.CreatedAt,
&i.UserID,
); err != nil {
return nil, err
}

@ -266,6 +266,11 @@ type ShortPrivilege struct {
CreatedAt time.Time `json:"created_at"`
}
type ExpiredPrivileges struct {
UserID string
Privilege ShortPrivilege
}
type Account struct {
ID string `json:"id"`
UserID string `json:"user_id"`

@ -11,19 +11,19 @@ import (
)
type Deps struct {
Queries *sqlcgen.Queries
Pool *sql.DB
Queries *sqlcgen.Queries
Pool *sql.DB
}
type AccountRepository struct {
queries *sqlcgen.Queries
pool *sql.DB
queries *sqlcgen.Queries
pool *sql.DB
}
func NewAccountRepository(deps Deps) *AccountRepository {
return &AccountRepository{
queries: deps.Queries,
pool: deps.Pool,
queries: deps.Queries,
pool: deps.Pool,
}
}
@ -206,13 +206,13 @@ func (r *AccountRepository) InsertPrivilege(ctx context.Context, privilege *mode
}
// test +
func (r *AccountRepository) GetExpired(ctx context.Context, privilegeID string) ([]model.ShortPrivilege, error) {
rows, err := r.queries.GetExpiredPrivilege(ctx, sql.NullString{String: privilegeID, Valid: privilegeID != ""})
func (r *AccountRepository) GetExpired(ctx context.Context, privilegeID string) ([]model.ExpiredPrivileges, error) {
rows, err := r.queries.GetExpiredDayPrivilege(ctx, sql.NullString{String: privilegeID, Valid: privilegeID != ""})
if err != nil {
return nil, err
}
var expiredRecords []model.ShortPrivilege
var expiredRecords []model.ExpiredPrivileges
for _, row := range rows {
privilege := model.ShortPrivilege{
@ -222,7 +222,36 @@ func (r *AccountRepository) GetExpired(ctx context.Context, privilegeID string)
Amount: uint64(row.Amount.Int32),
CreatedAt: row.CreatedAt.Time,
}
expiredRecords = append(expiredRecords, privilege)
expiredRecords = append(expiredRecords, model.ExpiredPrivileges{
UserID: row.UserID.String,
Privilege: privilege,
})
}
return expiredRecords, nil
}
func (r *AccountRepository) GetExpiredCount(ctx context.Context, privilegeID string) ([]model.ExpiredPrivileges, error) {
rows, err := r.queries.GetExpiredCountPrivilege(ctx, sql.NullString{String: privilegeID, Valid: privilegeID != ""})
if err != nil {
return nil, err
}
var expiredRecords []model.ExpiredPrivileges
for _, row := range rows {
privilege := model.ShortPrivilege{
ID: fmt.Sprintf("%d", row.ID),
PrivilegeID: row.Privilegeid.String,
PrivilegeName: row.PrivilegeName.String,
Amount: uint64(row.Amount.Int32),
CreatedAt: row.CreatedAt.Time,
}
expiredRecords = append(expiredRecords, model.ExpiredPrivileges{
UserID: row.UserID.String,
Privilege: privilege,
})
}