45 lines
1.7 KiB
SQL
45 lines
1.7 KiB
SQL
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;
|