chore: update admin apis
This commit is contained in:
@@ -33,12 +33,15 @@ func clampLimit(limit int) int {
|
||||
func (r *AdminRepo) ListUsers(ctx context.Context, q string, limit, offset int) ([]model.AdminUser, int, error) {
|
||||
limit = clampLimit(limit)
|
||||
rows, err := r.pg.Pool.Query(ctx, `
|
||||
SELECT id, email, handle, name, avatar_url, role, plan, email_verified_at, banned_at, created_at,
|
||||
SELECT u.id, u.email, u.handle, u.name, u.avatar_url, u.role, u.plan,
|
||||
u.email_verified_at, u.banned_at,
|
||||
(SELECT COUNT(*) FROM posts p WHERE p.user_id = u.id AND p.deleted_at IS NULL) AS post_count,
|
||||
u.created_at,
|
||||
COUNT(*) OVER() AS total
|
||||
FROM users
|
||||
WHERE ($1 = '' OR name ILIKE '%'||$1||'%' OR handle ILIKE '%'||$1||'%'
|
||||
OR COALESCE(email, '') ILIKE '%'||$1||'%')
|
||||
ORDER BY created_at DESC
|
||||
FROM users u
|
||||
WHERE ($1 = '' OR u.name ILIKE '%'||$1||'%' OR u.handle ILIKE '%'||$1||'%'
|
||||
OR COALESCE(u.email, '') ILIKE '%'||$1||'%')
|
||||
ORDER BY u.created_at DESC
|
||||
LIMIT $2 OFFSET $3`, q, limit, offset)
|
||||
if err != nil {
|
||||
return nil, 0, fmt.Errorf("admin list users: %w", err)
|
||||
@@ -50,7 +53,7 @@ func (r *AdminRepo) ListUsers(ctx context.Context, q string, limit, offset int)
|
||||
for rows.Next() {
|
||||
var u model.AdminUser
|
||||
if err := rows.Scan(&u.ID, &u.Email, &u.Handle, &u.Name, &u.AvatarURL,
|
||||
&u.Role, &u.Plan, &u.EmailVerifiedAt, &u.BannedAt, &u.CreatedAt, &total); err != nil {
|
||||
&u.Role, &u.Plan, &u.EmailVerifiedAt, &u.BannedAt, &u.PostCount, &u.CreatedAt, &total); err != nil {
|
||||
return nil, 0, fmt.Errorf("scan admin user: %w", err)
|
||||
}
|
||||
out = append(out, u)
|
||||
@@ -146,7 +149,7 @@ func (r *AdminRepo) ListFeedback(ctx context.Context, status string, limit, offs
|
||||
}
|
||||
rows, err := r.pg.Pool.Query(ctx, `
|
||||
SELECT f.id, f.category, f.message, f.contact_email, f.created_at,
|
||||
f.resolved_at, f.replied_at, f.reply_message,
|
||||
f.acknowledged_at, f.resolved_at, f.replied_at, f.reply_message,
|
||||
u.handle, u.name, u.email,
|
||||
COUNT(*) OVER() AS total
|
||||
FROM feedback f
|
||||
@@ -166,7 +169,7 @@ func (r *AdminRepo) ListFeedback(ctx context.Context, status string, limit, offs
|
||||
for rows.Next() {
|
||||
var f model.AdminFeedback
|
||||
if err := rows.Scan(&f.ID, &f.Category, &f.Message, &f.ContactEmail, &f.CreatedAt,
|
||||
&f.ResolvedAt, &f.RepliedAt, &f.ReplyMessage,
|
||||
&f.AcknowledgedAt, &f.ResolvedAt, &f.RepliedAt, &f.ReplyMessage,
|
||||
&f.AuthorHandle, &f.AuthorName, &f.AuthorEmail, &total); err != nil {
|
||||
return nil, 0, fmt.Errorf("scan admin feedback: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user