CREATE DATABASE IF NOT EXISTS defaultdb; USE defaultdb; CREATE TABLE admins ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL UNIQUE, email VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, full_name VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL UNIQUE, email VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, full_name VARCHAR(255) NOT NULL, dob DATE NOT NULL, address TEXT NOT NULL, country VARCHAR(100) NOT NULL, zip_code VARCHAR(20) NOT NULL, phone_number VARCHAR(20) NOT NULL, balance DECIMAL(10,2) DEFAULT 0.00, kyc_status VARCHAR(50) DEFAULT 'not_submitted', withdrawal_status VARCHAR(50) DEFAULT 'active', status VARCHAR(50) DEFAULT 'active', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE kyc_documents ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, document_category VARCHAR(50) NOT NULL, -- id, utility, ssn, selfie document_type VARCHAR(50) NOT NULL, -- state_id, driver_license, passport, utility_bill, paystub, ssn, selfie file_path VARCHAR(255) NOT NULL, status VARCHAR(50) DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ); CREATE TABLE investment_plans ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, roi DECIMAL(5,2) NOT NULL, tenure INT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE investments ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, plan_id INT, amount DECIMAL(10,2) NOT NULL, status VARCHAR(50) DEFAULT 'active', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY (plan_id) REFERENCES investment_plans(id) ON DELETE SET NULL ); CREATE TABLE payment_methods ( id INT AUTO_INCREMENT PRIMARY KEY, crypto_name VARCHAR(255) NOT NULL, wallet_address VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE transactions ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, type VARCHAR(50) NOT NULL, amount DECIMAL(10,2) NOT NULL, status VARCHAR(50) DEFAULT 'pending', wallet_address VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ); CREATE TABLE messages ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, message TEXT NOT NULL, is_read BOOLEAN NOT NULL DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ); CREATE TABLE testimonials ( id INT AUTO_INCREMENT PRIMARY KEY, author VARCHAR(255) NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE withdrawals ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL, amount DECIMAL(10,2) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );