80 lines
3.1 KiB
SQL
80 lines
3.1 KiB
SQL
-- Plans table
|
|
CREATE TABLE IF NOT EXISTS plans (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
price DECIMAL(10, 2) DEFAULT 0.00,
|
|
max_customers INT DEFAULT 10,
|
|
can_custom_domain BOOLEAN DEFAULT FALSE,
|
|
is_trial BOOLEAN DEFAULT FALSE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Seed default plans
|
|
INSERT INTO plans (name, price, max_customers, can_custom_domain, is_trial) VALUES
|
|
('Free Trial', 0.00, 5, FALSE, TRUE),
|
|
('Pro', 49.00, 50, TRUE, FALSE),
|
|
('Enterprise', 199.00, 1000, TRUE, FALSE);
|
|
|
|
-- MSPs table (Tenants)
|
|
CREATE TABLE IF NOT EXISTS msps (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
plan_id INT NOT NULL,
|
|
subdomain VARCHAR(255) UNIQUE,
|
|
custom_domain VARCHAR(255) UNIQUE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (plan_id) REFERENCES plans(id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Users table
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
msp_id INT NULL, -- NULL for superadmins
|
|
name VARCHAR(255) NOT NULL,
|
|
email VARCHAR(255) UNIQUE NOT NULL,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
role ENUM('superadmin', 'msp_admin', 'msp_staff') NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (msp_id) REFERENCES msps(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Onboarding Templates
|
|
CREATE TABLE IF NOT EXISTS onboarding_templates (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
msp_id INT NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
description TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (msp_id) REFERENCES msps(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Onboarding Template Steps (Pages)
|
|
CREATE TABLE IF NOT EXISTS onboarding_template_steps (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
template_id INT NOT NULL,
|
|
title VARCHAR(255) NOT NULL,
|
|
description TEXT,
|
|
order_index INT DEFAULT 0,
|
|
FOREIGN KEY (template_id) REFERENCES onboarding_templates(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Onboarding Template Fields/Content
|
|
CREATE TABLE IF NOT EXISTS onboarding_template_fields (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
step_id INT NOT NULL,
|
|
type ENUM('text', 'form_input', 'form_textarea', 'form_select', 'download', 'upload') NOT NULL,
|
|
label VARCHAR(255) NOT NULL,
|
|
content TEXT, -- Used for 'text' or 'download' URL or 'options' for select
|
|
is_required BOOLEAN DEFAULT FALSE,
|
|
order_index INT DEFAULT 0,
|
|
FOREIGN KEY (step_id) REFERENCES onboarding_template_steps(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Update customers table to link to MSP
|
|
ALTER TABLE customers ADD COLUMN msp_id INT NOT NULL AFTER id;
|
|
ALTER TABLE customers ADD CONSTRAINT fk_customer_msp FOREIGN KEY (msp_id) REFERENCES msps(id) ON DELETE CASCADE;
|
|
|
|
-- Create a default superadmin (password: admin123)
|
|
-- In a real app, this would be handled via a setup script or CLI.
|
|
INSERT INTO users (name, email, password_hash, role) VALUES
|
|
('Super Admin', 'admin@msp-portal.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'superadmin');
|