005_advanced_pricing.sql 1.8 KB

12345678910111213141516171819202122232425262728293031323334
  1. -- Migration 005: Advanced Pricing (Defensive Update)
  2. -- 1. Ensure services table exists (minimal version)
  3. CREATE TABLE IF NOT EXISTS `services` (
  4. `id` int(11) NOT NULL AUTO_INCREMENT,
  5. `name_en` varchar(255) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  8. -- 2. Add columns to services (ignoring if they exist is handled by the fact that migrations are atomic per statement here)
  9. -- Note: if a column exists, the script will show an error but run_migrations.py will continue to next statement.
  10. ALTER TABLE `services` ADD COLUMN `name_ru` varchar(255) DEFAULT NULL;
  11. ALTER TABLE `services` ADD COLUMN `name_ua` varchar(255) DEFAULT NULL;
  12. ALTER TABLE `services` ADD COLUMN `desc_en` text DEFAULT NULL;
  13. ALTER TABLE `services` ADD COLUMN `tech_type` varchar(50) DEFAULT 'fdm';
  14. ALTER TABLE `services` ADD COLUMN `price_per_hour` decimal(10,2) DEFAULT 0.00;
  15. ALTER TABLE `services` ADD COLUMN `is_active` tinyint(1) DEFAULT 1;
  16. ALTER TABLE `services` ADD COLUMN `created_at` timestamp DEFAULT CURRENT_TIMESTAMP;
  17. -- 3. Add columns to materials
  18. ALTER TABLE `materials` ADD COLUMN `price_per_hour` decimal(10,2) DEFAULT NULL;
  19. ALTER TABLE `materials` ADD COLUMN `speed_coeff` decimal(10,2) DEFAULT 1.00;
  20. ALTER TABLE `materials` ADD COLUMN `service_id` int(11) DEFAULT NULL;
  21. -- 4. Initial seed for services
  22. INSERT INTO `services` (`name_en`, `name_ru`, `name_ua`, `tech_type`, `price_per_hour`)
  23. SELECT 'FDM Printing', 'FDM Печать', 'FDM Друк', 'fdm', 2.00
  24. FROM (SELECT 1) AS tmp
  25. WHERE NOT EXISTS (SELECT 1 FROM `services` WHERE `tech_type` = 'fdm') LIMIT 1;
  26. INSERT INTO `services` (`name_en`, `name_ru`, `name_ua`, `tech_type`, `price_per_hour`)
  27. SELECT 'SLA Printing', 'SLA Печать', 'SLA Друк', 'sla', 5.00
  28. FROM (SELECT 1) AS tmp
  29. WHERE NOT EXISTS (SELECT 1 FROM `services` WHERE `tech_type` = 'sla') LIMIT 1;