38438-vm/db/migrations/004_enhanced_employees.sql
Flatlogic Bot f03a7a8de5 employees
2026-02-15 00:26:46 +00:00

51 lines
2.2 KiB
SQL

-- Migration for Enhanced Employee Management
-- 1. Alter employees table to add required fields
ALTER TABLE employees ADD COLUMN first_name VARCHAR(100) AFTER tenant_id;
ALTER TABLE employees ADD COLUMN last_name VARCHAR(100) AFTER first_name;
ALTER TABLE employees ADD COLUMN start_date DATE AFTER position;
ALTER TABLE employees ADD COLUMN is_limited BOOLEAN DEFAULT TRUE AFTER start_date;
ALTER TABLE employees ADD COLUMN user_id INT NULL AFTER is_limited;
ALTER TABLE employees ADD CONSTRAINT fk_employee_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL;
-- Migrate existing names to first/last (rough split)
UPDATE employees SET first_name = SUBSTRING_INDEX(name, ' ', 1), last_name = SUBSTRING_INDEX(name, ' ', -1) WHERE name LIKE '% %';
UPDATE employees SET first_name = name, last_name = '' WHERE name NOT LIKE '% %';
-- 2. Wage History Table
CREATE TABLE IF NOT EXISTS employee_wages (
id INT AUTO_INCREMENT PRIMARY KEY,
tenant_id INT NOT NULL,
employee_id INT NOT NULL,
hourly_rate DECIMAL(10, 2) NOT NULL,
effective_date DATE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE,
FOREIGN KEY (employee_id) REFERENCES employees(id) ON DELETE CASCADE
);
-- 3. Teams Table
CREATE TABLE IF NOT EXISTS teams (
id INT AUTO_INCREMENT PRIMARY KEY,
tenant_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
);
-- 4. Employee-Team Link (Many-to-Many)
CREATE TABLE IF NOT EXISTS employee_teams (
employee_id INT NOT NULL,
team_id INT NOT NULL,
tenant_id INT NOT NULL,
PRIMARY KEY (employee_id, team_id),
FOREIGN KEY (employee_id) REFERENCES employees(id) ON DELETE CASCADE,
FOREIGN KEY (team_id) REFERENCES teams(id) ON DELETE CASCADE,
FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
);
-- Seed some teams
INSERT IGNORE INTO teams (tenant_id, name) VALUES (1, 'Engineering');
INSERT IGNORE INTO teams (tenant_id, name) VALUES (1, 'R&D');
INSERT IGNORE INTO teams (tenant_id, name) VALUES (1, 'Product Management');