All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 4m38s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 28s
Deploy to Staging / Verify Staging (pull_request) Successful in 6s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 6s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
- Add terms_agreements table for legal audit trail - Create terms-agreement feature capsule with repository - Modify signup to create terms agreement atomically - Add checkbox with PDF link to SignupForm - Capture IP, User-Agent, terms version, content hash - Update CLAUDE.md documentation index 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
34 lines
1.1 KiB
PL/PgSQL
34 lines
1.1 KiB
PL/PgSQL
-- Terms Agreements Table
|
|
-- Stores legal audit trail for Terms & Conditions acceptance at signup
|
|
|
|
CREATE TABLE IF NOT EXISTS terms_agreements (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
user_id VARCHAR(255) NOT NULL,
|
|
agreed_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
ip_address VARCHAR(45) NOT NULL,
|
|
user_agent TEXT NOT NULL,
|
|
terms_version VARCHAR(50) NOT NULL,
|
|
terms_url VARCHAR(255) NOT NULL,
|
|
terms_content_hash VARCHAR(64) NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Index for user lookup
|
|
CREATE INDEX IF NOT EXISTS idx_terms_agreements_user_id ON terms_agreements(user_id);
|
|
|
|
-- Trigger for updated_at
|
|
CREATE OR REPLACE FUNCTION update_terms_agreements_updated_at()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
DROP TRIGGER IF EXISTS terms_agreements_updated_at ON terms_agreements;
|
|
CREATE TRIGGER terms_agreements_updated_at
|
|
BEFORE UPDATE ON terms_agreements
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_terms_agreements_updated_at();
|