blob: 45c3a7f9441d8ae5853a3a51addae53e5ad57352 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import { createSupabaseAdminClient } from "@/lib/supabase/admin"
export async function rateLimit(
identifier: string,
limit: number,
windowMilliseconds: number
): Promise<{ success: boolean; remaining: number }> {
const windowSeconds = Math.max(Math.floor(windowMilliseconds / 1000), 1)
const adminClient = createSupabaseAdminClient()
const { data, error } = await adminClient.rpc("check_rate_limit", {
p_identifier: identifier,
p_limit: limit,
p_window_seconds: windowSeconds,
})
if (error) {
console.error("rate limit check failed:", error)
return { success: false, remaining: 0 }
}
return {
success: data.success as boolean,
remaining: data.remaining as number,
}
}
|