-- Add customer contract data fields to existing users. ALTER TABLE users ADD COLUMN IF NOT EXISTS first_name VARCHAR(100) NOT NULL DEFAULT '' AFTER email, ADD COLUMN IF NOT EXISTS last_name VARCHAR(100) NOT NULL DEFAULT '' AFTER first_name, ADD COLUMN IF NOT EXISTS street_address VARCHAR(180) NOT NULL DEFAULT '' AFTER last_name, ADD COLUMN IF NOT EXISTS postal_code VARCHAR(20) NOT NULL DEFAULT '' AFTER street_address, ADD COLUMN IF NOT EXISTS city VARCHAR(100) NOT NULL DEFAULT '' AFTER postal_code, ADD COLUMN IF NOT EXISTS country_code CHAR(2) NOT NULL DEFAULT 'AT' AFTER city; CREATE TABLE IF NOT EXISTS user_consents ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id BIGINT UNSIGNED NOT NULL, consent_type ENUM('terms', 'privacy', 'withdrawal') NOT NULL, document_url VARCHAR(2048) NOT NULL, document_version VARCHAR(100) NULL, consented_at DATETIME NOT NULL, consent_ip VARCHAR(45) NULL, PRIMARY KEY (id), UNIQUE KEY uq_user_consent_type (user_id, consent_type), KEY idx_user_consents_user (user_id), CONSTRAINT fk_user_consents_user FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;