The codebase that powers boop.cat
boop.cat
1// Copyright 2025 boop.cat
2// Licensed under the Apache License, Version 2.0
3// See LICENSE file for details.
4
5package db
6
7import (
8 "database/sql"
9 "time"
10)
11
12type BannedIP struct {
13 IP string
14 Reason string
15 UserID string
16 CreatedAt string
17}
18
19func BanIP(db *sql.DB, ip, userID, reason string) error {
20
21 var exists string
22 err := db.QueryRow(`SELECT ip FROM banned_ips WHERE ip = ?`, ip).Scan(&exists)
23 if err == nil {
24 return nil
25 }
26
27 now := time.Now().UTC().Format(time.RFC3339)
28 _, err = db.Exec(`
29 INSERT INTO banned_ips (ip, reason, userId, createdAt)
30 VALUES (?, ?, ?, ?)
31 `, ip, reason, userID, now)
32 return err
33}
34
35func IsIPBanned(db *sql.DB, ip string) (bool, string) {
36 var reason string
37 err := db.QueryRow(`SELECT reason FROM banned_ips WHERE ip = ?`, ip).Scan(&reason)
38 if err != nil {
39 return false, ""
40 }
41 return true, reason
42}