@@ -0,0 +1,21 @@
|
||||
-- Add ip column to challenges (idempotent)
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'public' AND table_name = 'challenges' AND column_name = 'ip'
|
||||
) THEN
|
||||
ALTER TABLE challenges ADD COLUMN ip TEXT;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- User login history (ip, created_at per user)
|
||||
CREATE TABLE IF NOT EXISTS user_logins (
|
||||
id SERIAL PRIMARY KEY,
|
||||
public_key TEXT NOT NULL REFERENCES users(public_key) ON DELETE CASCADE,
|
||||
ip TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_user_logins_public_key ON user_logins(public_key);
|
||||
CREATE INDEX IF NOT EXISTS idx_user_logins_created_at ON user_logins(created_at);
|
||||
Reference in New Issue
Block a user