orama/invest-api/handler/whitelist.go
anonpenguin23 655bd92178 Squashed 'website/' content from commit d19b985
git-subtree-dir: website
git-subtree-split: d19b98589ec5d235560a210b26195b653a65a808
2026-03-26 18:14:59 +02:00

42 lines
1.0 KiB
Go

package handler
import (
"database/sql"
"fmt"
"net/http"
"github.com/debros/orama-website/invest-api/auth"
)
func WhitelistJoinHandler(database *sql.DB) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
wallet, chain, ok := auth.WalletFromContext(r.Context())
if !ok {
jsonError(w, http.StatusUnauthorized, "wallet required")
return
}
var existing int
database.QueryRow("SELECT COUNT(*) FROM whitelist WHERE wallet = ?", wallet).Scan(&existing)
if existing > 0 {
jsonError(w, http.StatusConflict, "wallet already on whitelist")
return
}
_, err := database.Exec("INSERT INTO whitelist (wallet, chain) VALUES (?, ?)", wallet, chain)
if err != nil {
jsonError(w, http.StatusInternalServerError, "failed to join whitelist")
return
}
var position int
database.QueryRow("SELECT COUNT(*) FROM whitelist").Scan(&position)
logActivity(database, "whitelist_join", wallet, fmt.Sprintf("Position #%d", position))
jsonResponse(w, http.StatusCreated, map[string]any{
"position": position,
})
}
}