mirror of
https://github.com/DeBrosOfficial/orama.git
synced 2026-03-27 20:34:12 +00:00
80 lines
2.3 KiB
Go
80 lines
2.3 KiB
Go
package handler
|
|
|
|
import (
|
|
"database/sql"
|
|
"net/http"
|
|
|
|
"github.com/debros/orama-website/invest-api/auth"
|
|
"github.com/debros/orama-website/invest-api/db"
|
|
)
|
|
|
|
func MeHandler(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 not found in context")
|
|
return
|
|
}
|
|
|
|
resp := db.MeResponse{
|
|
Wallet: wallet,
|
|
Chain: chain,
|
|
Licenses: []db.LicenseInfo{},
|
|
PurchaseHistory: []db.PurchaseRecord{},
|
|
}
|
|
|
|
// Token totals
|
|
database.QueryRow(
|
|
"SELECT COALESCE(SUM(tokens_allocated), 0), COALESCE(SUM(amount_paid), 0) FROM token_purchases WHERE wallet = ?",
|
|
wallet,
|
|
).Scan(&resp.TokensPurchased, &resp.TokenSpent)
|
|
|
|
// Licenses
|
|
rows, _ := database.Query(
|
|
"SELECT license_number, claimed_via_nft, created_at FROM license_purchases WHERE wallet = ? ORDER BY created_at",
|
|
wallet,
|
|
)
|
|
if rows != nil {
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
var l db.LicenseInfo
|
|
var claimed int
|
|
rows.Scan(&l.LicenseNumber, &claimed, &l.PurchasedAt)
|
|
l.ClaimedViaNFT = claimed == 1
|
|
resp.Licenses = append(resp.Licenses, l)
|
|
}
|
|
}
|
|
|
|
// Whitelist
|
|
var count int
|
|
database.QueryRow("SELECT COUNT(*) FROM whitelist WHERE wallet = ?", wallet).Scan(&count)
|
|
resp.OnWhitelist = count > 0
|
|
|
|
// ANCHAT claim status
|
|
var claimCount int
|
|
database.QueryRow("SELECT COUNT(*) FROM anchat_claims WHERE wallet = ?", wallet).Scan(&claimCount)
|
|
resp.AnchatClaimed = claimCount > 0
|
|
if resp.AnchatClaimed {
|
|
database.QueryRow("SELECT orama_amount FROM anchat_claims WHERE wallet = ?", wallet).Scan(&resp.AnchatOrama)
|
|
}
|
|
|
|
// Purchase history (combined)
|
|
histRows, _ := database.Query(`
|
|
SELECT 'token' as type, amount_paid, pay_currency, tx_hash, created_at FROM token_purchases WHERE wallet = ?
|
|
UNION ALL
|
|
SELECT 'license' as type, amount_paid, pay_currency, tx_hash, created_at FROM license_purchases WHERE wallet = ?
|
|
ORDER BY created_at DESC
|
|
`, wallet, wallet)
|
|
if histRows != nil {
|
|
defer histRows.Close()
|
|
for histRows.Next() {
|
|
var p db.PurchaseRecord
|
|
histRows.Scan(&p.Type, &p.Amount, &p.Currency, &p.TxHash, &p.CreatedAt)
|
|
resp.PurchaseHistory = append(resp.PurchaseHistory, p)
|
|
}
|
|
}
|
|
|
|
jsonResponse(w, http.StatusOK, resp)
|
|
}
|
|
}
|