CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(120) NOT NULL,
  email VARCHAR(180) NOT NULL UNIQUE,
  password VARCHAR(255) NOT NULL,
  active TINYINT(1) NOT NULL DEFAULT 1,
  created_at DATETIME NULL,
  updated_at DATETIME NULL
);

CREATE TABLE categories (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(120) NOT NULL,
  slug VARCHAR(140) NOT NULL UNIQUE,
  description TEXT NULL,
  tag_color VARCHAR(20) NULL DEFAULT '#0067B8',
  sort_order INT NOT NULL DEFAULT 0,
  active TINYINT(1) NOT NULL DEFAULT 1,
  created_at DATETIME NULL,
  updated_at DATETIME NULL
);

CREATE TABLE courses (
  id INT AUTO_INCREMENT PRIMARY KEY,
  category_id INT NULL,
  title VARCHAR(180) NOT NULL,
  slug VARCHAR(200) NOT NULL UNIQUE,
  short_description TEXT NULL,
  full_description LONGTEXT NULL,
  cover_image VARCHAR(255) NULL,
  workload VARCHAR(80) NULL,
  modality VARCHAR(120) NULL,
  price DECIMAL(10,2) NULL DEFAULT 0,
  promo_price DECIMAL(10,2) NULL DEFAULT 0,
  installments_text VARCHAR(120) NULL,
  badge_text VARCHAR(120) NULL,
  is_featured TINYINT(1) NOT NULL DEFAULT 0,
  is_hot TINYINT(1) NOT NULL DEFAULT 0,
  is_in_company TINYINT(1) NOT NULL DEFAULT 0,
  status VARCHAR(20) NOT NULL DEFAULT 'published',
  sort_order INT NOT NULL DEFAULT 0,
  seo_title VARCHAR(180) NULL,
  seo_description VARCHAR(255) NULL,
  created_at DATETIME NULL,
  updated_at DATETIME NULL,
  CONSTRAINT fk_courses_category FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL
);

CREATE TABLE home_contents (
  content_key VARCHAR(100) PRIMARY KEY,
  content_value LONGTEXT NULL
);

CREATE TABLE leads (
  id INT AUTO_INCREMENT PRIMARY KEY,
  course_id INT NULL,
  name VARCHAR(140) NOT NULL,
  email VARCHAR(180) NULL,
  phone VARCHAR(60) NULL,
  message TEXT NULL,
  created_at DATETIME NULL,
  CONSTRAINT fk_leads_course FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE SET NULL
);

INSERT INTO users (name,email,password,active,created_at,updated_at) VALUES
('Administrador','admin@tds.local','$2y$12$l/DT8NabQg6J/W923/k6tO3QZ6I3xKqSPVfc2XFeF2H83qtXeQYJK',1,NOW(),NOW());

INSERT INTO categories (name,slug,description,tag_color,sort_order,active,created_at,updated_at) VALUES
('Análise de Dados','dados','Cursos focados em BI e análise de dados.','#0067B8',1,1,NOW(),NOW()),
('Python & Dados','python-dados','Automação, análise e ciência de dados com Python.','#107C10',2,1,NOW(),NOW()),
('Inteligência Artificial','ia','Formações em IA aplicada e agentes.','#C55A11',3,1,NOW(),NOW()),
('Cloud & Engenharia','cloud','Arquitetura e engenharia de dados na nuvem.','#AA7700',4,1,NOW(),NOW());

INSERT INTO courses (category_id,title,slug,short_description,full_description,cover_image,workload,modality,price,promo_price,installments_text,badge_text,is_featured,is_hot,is_in_company,status,sort_order,seo_title,seo_description,created_at,updated_at) VALUES
(1,'Power BI Essencial','power-bi-essencial','Domine a ferramenta de BI mais usada nas empresas.','Aprenda a construir dashboards profissionais, modelar dados e criar relatórios que apoiam decisões estratégicas.','','40h','Presencial e Online ao vivo',2500,2200,'10x sem juros','Mais Procurado',1,0,0,'published',1,'Power BI Essencial','Curso oficial de Power BI na TDS',NOW(),NOW()),
(2,'Python para Análise de Dados Aplicada','python-analise-dados','Pandas, NumPy e visualização com foco prático.','Do tratamento de dados à análise aplicada com projetos reais e integração com o mercado.','','50h','Presencial e Online ao vivo',2500,2200,'10x sem juros','Em Alta',1,1,0,'published',2,'Python para Dados','Curso de Python para análise de dados',NOW(),NOW()),
(3,'Dados & Agentes de IA','dados-agentes-ia','Construa agentes inteligentes com dados reais.','LLMs, automação e pipelines de IA para ambientes corporativos e governo.','','48h','In company / sob demanda',0,0,'Sob consulta','IA',0,1,1,'published',3,'Dados e Agentes de IA','Curso de agentes de IA',NOW(),NOW()),
(4,'Engenharia de Dados','engenharia-de-dados','Azure Data Factory, ETL/ELT e arquiteturas modernas.','Formação completa para engenheiros de dados modernos com foco em cloud.','','80h','In company / sob demanda',0,0,'Sob consulta','Cloud',0,0,1,'published',4,'Engenharia de Dados','Curso de engenharia de dados',NOW(),NOW());

INSERT INTO home_contents (content_key, content_value) VALUES
('hero_title','Aprenda as habilidades que o mercado procura agora.'),
('hero_text','Formações práticas em TI, Dados, Cloud e Inteligência Artificial. Certificação oficial Microsoft para quem quer se destacar em um mundo cada vez mais digital.'),
('courses_title','Cursos que transformam carreiras'),
('courses_subtitle','Presencial e Online ao vivo. Aprenda com especialistas e saia com certificado Microsoft reconhecido pelo mercado.');


CREATE TABLE site_settings (
  setting_key VARCHAR(120) PRIMARY KEY,
  setting_value TEXT NULL
);

CREATE TABLE pages (
  id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(180) NOT NULL,
  slug VARCHAR(200) NOT NULL UNIQUE,
  excerpt TEXT NULL,
  content LONGTEXT NULL,
  status VARCHAR(20) NOT NULL DEFAULT 'published',
  sort_order INT NOT NULL DEFAULT 0,
  created_at DATETIME NULL,
  updated_at DATETIME NULL
);

ALTER TABLE courses
  ADD COLUMN features_text LONGTEXT NULL AFTER full_description,
  ADD COLUMN audience_text TEXT NULL AFTER features_text;

INSERT INTO site_settings (setting_key, setting_value) VALUES
('whatsapp_number', '5565999999999'),
('footer_text', 'Escola premium de tecnologia, dados e IA. Parceiro autorizado Microsoft.'),
('contact_email', 'contato@tds.local'),
('contact_phone', '(65) 99999-9999')
ON DUPLICATE KEY UPDATE setting_value=VALUES(setting_value);

INSERT INTO pages (title, slug, excerpt, content, status, sort_order, created_at, updated_at) VALUES
('Sobre a TDS', 'sobre', 'Conheça a TDS Academy.', 'A TDS Academy é uma escola premium de tecnologia, dados e inteligência artificial em Mato Grosso.', 'published', 1, NOW(), NOW()),
('Empresas e Governo', 'empresas-governo', 'Soluções corporativas e in company.', 'Oferecemos treinamentos sob medida para empresas privadas e órgãos públicos.', 'published', 2, NOW(), NOW());
