CREATE TABLE IF NOT EXISTS teams ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, owner_email VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS team_members ( id INT AUTO_INCREMENT PRIMARY KEY, team_id INT NOT NULL, email VARCHAR(255) NOT NULL, role VARCHAR(50) DEFAULT 'member', -- 'owner', 'admin', 'member' status VARCHAR(50) DEFAULT 'active', -- 'invited', 'active' created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (team_id) REFERENCES teams(id) ON DELETE CASCADE ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS api_keys ( id INT AUTO_INCREMENT PRIMARY KEY, team_id INT NOT NULL, api_key VARCHAR(64) NOT NULL UNIQUE, label VARCHAR(255) DEFAULT 'Default Key', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (team_id) REFERENCES teams(id) ON DELETE CASCADE ) ENGINE=InnoDB; -- Add team_id to urls if it doesn't exist SET @dbname = DATABASE(); SET @tablename = "urls"; SET @columnname = "team_id"; SET @preparedStatement = (SELECT IF( (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname) > 0, "SELECT 1", "ALTER TABLE urls ADD COLUMN team_id INT DEFAULT NULL AFTER id, ADD FOREIGN KEY (team_id) REFERENCES teams(id) ON DELETE SET NULL" )); PREPARE stmt FROM @preparedStatement; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- Insert a default team for existing data INSERT INTO teams (name, owner_email) VALUES ('Yumee Default Team', 'yumeecute@aol.com'); SET @default_team_id = LAST_INSERT_ID(); UPDATE urls SET team_id = @default_team_id WHERE team_id IS NULL;