mirror of
https://github.com/DeBrosOfficial/orama.git
synced 2026-03-27 12:44:13 +00:00
42 lines
1.0 KiB
Go
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,
|
|
})
|
|
}
|
|
}
|