Files
sts-avto-v2/modules/database/index.js
kalugin66 11fb813a09
All checks were successful
Deploy sts / deploy-sber (push) Successful in 42s
модификация
2026-07-20 00:27:48 +05:00

302 lines
31 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
let db;
function init(database) {
db = database;
return initDatabase();
}
function initDatabase() {
return new Promise((resolve, reject) => {
db.serialize(() => {
db.run(`CREATE TABLE IF NOT EXISTS leads (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
phone TEXT NOT NULL,
message TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)`);
db.run(`CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
login TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL,
full_name TEXT,
role TEXT NOT NULL DEFAULT 'admin',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)`);
db.run(`CREATE TABLE IF NOT EXISTS hero_settings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
key TEXT UNIQUE NOT NULL,
value TEXT
)`);
db.run(`CREATE TABLE IF NOT EXISTS hero_stats (
id INTEGER PRIMARY KEY AUTOINCREMENT,
label TEXT NOT NULL,
value TEXT NOT NULL,
is_dynamic INTEGER DEFAULT 0,
sort_order INTEGER DEFAULT 0
)`);
db.run(`CREATE TABLE IF NOT EXISTS about_settings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
key TEXT UNIQUE NOT NULL,
value TEXT
)`);
db.run(`CREATE TABLE IF NOT EXISTS about_features (
id INTEGER PRIMARY KEY AUTOINCREMENT,
svg_icon TEXT,
title TEXT NOT NULL,
description TEXT,
sort_order INTEGER DEFAULT 0
)`);
db.run(`CREATE TABLE IF NOT EXISTS services (
id INTEGER PRIMARY KEY AUTOINCREMENT,
svg_icon TEXT,
title TEXT NOT NULL,
description TEXT,
items TEXT DEFAULT '[]',
is_large INTEGER DEFAULT 0,
sort_order INTEGER DEFAULT 0,
is_active INTEGER DEFAULT 1
)`);
db.run(`CREATE TABLE IF NOT EXISTS work_schemes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
svg_icon TEXT,
title TEXT NOT NULL,
description TEXT,
items TEXT DEFAULT '[]',
sort_order INTEGER DEFAULT 0,
is_active INTEGER DEFAULT 1
)`);
db.run(`CREATE TABLE IF NOT EXISTS process_steps (
id INTEGER PRIMARY KEY AUTOINCREMENT,
step_number INTEGER NOT NULL,
title TEXT NOT NULL,
description TEXT,
sort_order INTEGER DEFAULT 0
)`);
db.run(`CREATE TABLE IF NOT EXISTS equipment (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
brand TEXT,
image_path TEXT,
qty TEXT,
specs TEXT DEFAULT '[]',
age_badge TEXT DEFAULT '',
sort_order INTEGER DEFAULT 0,
is_active INTEGER DEFAULT 1
)`);
db.run(`CREATE TABLE IF NOT EXISTS equipment_gallery (
id INTEGER PRIMARY KEY AUTOINCREMENT,
equipment_id INTEGER NOT NULL,
image_path TEXT NOT NULL,
sort_order INTEGER DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (equipment_id) REFERENCES equipment(id) ON DELETE CASCADE
)`);
db.run(`CREATE TABLE IF NOT EXISTS geo_regions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
sort_order INTEGER DEFAULT 0
)`);
db.run(`CREATE TABLE IF NOT EXISTS geo_settings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
key TEXT UNIQUE NOT NULL,
value TEXT
)`);
db.run(`CREATE TABLE IF NOT EXISTS licenses (
id INTEGER PRIMARY KEY AUTOINCREMENT,
svg_icon TEXT,
title TEXT NOT NULL,
description TEXT,
sort_order INTEGER DEFAULT 0
)`);
db.run(`CREATE TABLE IF NOT EXISTS license_gallery (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
image_path TEXT,
sort_order INTEGER DEFAULT 0
)`);
db.run(`CREATE TABLE IF NOT EXISTS public_activities (
id INTEGER PRIMARY KEY AUTOINCREMENT,
svg_icon TEXT,
title TEXT NOT NULL,
description TEXT,
sort_order INTEGER DEFAULT 0
)`);
db.run(`CREATE TABLE IF NOT EXISTS activity_gallery (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
image_path TEXT,
sort_order INTEGER DEFAULT 0
)`);
db.run(`CREATE TABLE IF NOT EXISTS partners (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
logo_path TEXT,
sort_order INTEGER DEFAULT 0,
is_active INTEGER DEFAULT 1
)`);
db.run(`CREATE TABLE IF NOT EXISTS settings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
key TEXT UNIQUE NOT NULL,
value TEXT
)`);
db.get(`SELECT COUNT(*) as cnt FROM settings`, (err, row) => {
if (row && row.cnt > 0) { resolve(); return; }
seedAll().then(resolve).catch(reject);
});
});
});
}
async function seedAll() {
const run = (sql, params) => new Promise(r => db.run(sql, params || [], () => r()));
const runEach = (sql, rows) => Promise.all(rows.map(r => {
const stmt = db.prepare(sql);
return new Promise(res => {
stmt.run(...r, function() { stmt.finalize(); res(); });
});
}));
const heroDefaults = [
['hero_bg', './img/hero-bg.webp'], ['badge_text', 'Лицензии СРО и НОСТРОЙ'],
['h1_text', 'демонтаж нефтегазопроводов по России, утилизация отходов'],
['subtitle', 'Собственная спецтехника. Лицензии СРО и НОСТРОЙ. Более {years} лет опыта. Работаем на опасных производственных объектах без привлечения субподрядчиков.'],
['phone_800', '8 (800) 555-29-31'], ['phone_ekb', '8 (343) 237-25-66'],
['email', 'sts_zakaz@mail.ru'], ['address', 'г. Екатеринбург, ул. Московская, 11, оф. 702'],
['button1_text', 'Оставить заявку'], ['button1_link', '#contacts'],
['button2_text', 'Наши услуги'], ['button2_link', '#services']
];
await runEach('INSERT OR IGNORE INTO hero_settings (key, value) VALUES (?, ?)', heroDefaults);
await runEach('INSERT INTO hero_stats (label, value, is_dynamic, sort_order) VALUES (?, ?, ?, ?)', [
['лет на рынке', '{years}', 1, 0], ['объектов выполнено', '200', 0, 1],
['единиц техники', '80', 0, 2], ['федеральных округов', '6', 0, 3]
]);
await runEach('INSERT OR IGNORE INTO about_settings (key, value) VALUES (?, ?)', [
['section_subtitle', 'Компания «СТС-Авто» — надёжный партнёр в сфере демонтажа, оказывает услуги по демонтажу магистральных трубопроводов, объектов инфраструктуры, зданий, сооружений и разделки жд транспорта, с последующей переработкой и утилизацией для предприятий. Мы работаем на всей территории Российской Федерации.'],
['main_heading', 'Собственная техника и полный контроль'], ['about_image', './img/hero-bg.webp'],
['paragraph_1', 'Наш автопарк состоит из более чем 80 единиц современной спецтехники, возраст которой не превышает 5 лет. Мы используем экскаваторы, краны, погрузчики, самосвалы и тралы ведущих мировых производителей: KAMAZ, Komatsu, Zoomlion, SDLG, Соболь, УАЗ.'],
['paragraph_2', 'Все работы выполняются исключительно силами компании — без привлечения субподрядчиков. Это гарантирует полное соответствие качества, сроков и ответственности на каждом этапе проекта.'],
['paragraph_3', 'Мы работаем в самых сложных условиях: труднодоступные районы, заболоченные территории, Крайний Север. Гибкие варианты оплаты: работаем по договору, включая вариант расчёта трубой за услуги (бартер с металлоломом после демонтажа).']
]);
await runEach('INSERT INTO about_features (svg_icon, title, description, sort_order) VALUES (?, ?, ?, ?)', [
['<path d="M18.92 6.01C18.72 5.42 18.16 5 17.5 5h-11c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 11l1.5-4.5h11L19 11H5z"/>', 'Парк техники не старше 5 лет', 'Более 80 единиц современной спецтехники', 0],
['<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>', 'Без субподрядчиков', 'Все работы силами компании', 1],
['<path d="M19.35 10.04A7.49 7.49 0 0012 4C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"/>', 'Сложные условия', 'Болота, Крайний Север, труднодоступные районы', 2],
['<path d="M11.8 10.9c-2.27-.59-3-1.2-3-2.15 0-1.09 1.01-1.85 2.7-1.85 1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-1.94.42-3.5 1.68-3.5 3.61 0 2.31 1.91 3.46 4.7 4.13 2.5.6 3 1.48 3 2.41 0 .69-.49 1.79-2.7 1.79-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c1.95-.37 3.5-1.5 3.5-3.55 0-2.84-2.43-3.81-4.7-4.4z"/>', 'Гибкая оплата', 'Включая расчёт трубой (бартер)', 3]
]);
const svcIcon = {
demolish: '<path d="M19.35 10.04A7.49 7.49 0 0012 4C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"/>',
recult: '<path d="M14 6l-3.75 5 2.85 3.8-1.6 1.2C9.81 13.75 7 10 7 10l-6 8h22L14 6z"/>',
clear: '<path d="M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z"/>',
lezh: '<path d="M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-9 14H4v-3h7v3zm0-5H4V8h7v3zm9 5h-7v-3h7v3zm0-5h-7V8h7v3z"/>',
scheme1: '<path d="M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zM6 18.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm13.5-9l1.96 2.5H17V9.5h2.5zm-1.5 9c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"/>',
scheme2: '<path d="M11.8 10.9c-2.27-.59-3-1.2-3-2.15 0-1.09 1.01-1.85 2.7-1.85 1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-1.94.42-3.5 1.68-3.5 3.61 0 2.31 1.91 3.46 4.7 4.13 2.5.6 3 1.48 3 2.41 0 .69-.49 1.79-2.7 1.79-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c1.95-.37 3.5-1.5 3.5-3.55 0-2.84-2.43-3.81-4.7-4.4z"/>'
};
await runEach('INSERT INTO services (svg_icon, title, description, items, is_large, sort_order) VALUES (?, ?, ?, ?, ?, ?)', [
[svcIcon.demolish, 'Демонтаж нефтегазопроводов, утилизация отходов', 'Выполняем полный цикл работ по демонтажу магистральных и промысловых трубопроводов любого типа и диаметра, а также утилизацию отходов.', '["Нефтепроводы, газопроводы, водоводы — все типы магистральных и промысловых сетей","Полный цикл: от вскрытия и вырезки дефектных участков до вывоза и сдачи металлолома","Работа с трубопроводами любого диаметра в любых климатических условиях","Разделка ж/д транспорта, переработка и утилизация для предприятий"]', 1, 0],
[svcIcon.recult, 'Техническая рекультивация земель', 'Восстановление нарушенных земель после проведения строительных и ремонтных работ.', '["Засыпка траншей, планировка, восстановление плодородного слоя","Работа с нефтезагрязнёнными, засоленными землями","Сдача по актам под контролем экологов"]', 0, 1],
[svcIcon.clear, 'Расчистка территории от мелколесья и ДКР', 'Подготовка полосы отвода: расчистка от древесно-кустарниковой растительности.', '["Валка, корчёвка, дробление пней","Планировка полосы отвода","Мульчеры и кусторезы на гусеничном ходу"]', 0, 2],
[svcIcon.lezh, 'Устройство лежневого настила', 'Обеспечение проходимости для тяжёлой техники по болотам и слабым грунтам.', '["Изготовление секций из бревен и бруса","Укладка перекрытий на слабых грунтах","Обеспечение проходимости для тяжёлой гусеничной техники"]', 0, 3]
]);
await runEach('INSERT INTO work_schemes (svg_icon, title, description, items, sort_order) VALUES (?, ?, ?, ?, ?)', [
[svcIcon.scheme1, 'Схема 1 — с доставкой заказчику', 'Подходит для компаний, планирующих повторное использование труб или их последующую реализацию. Расходный договор для заказчика.', '["Полный цикл работ по демонтажу трубопровода","Резка и маркировка труб в соответствии с требованиями","Транспортировка демонтированных труб на указанные территории хранения","Оформление всей сопроводительной документации (акты приёма-передачи)"]', 0],
[svcIcon.scheme2, 'Схема 2 — вывоз на базы подрядчика', 'Экономически выгодное решение для заказчиков, заинтересованных в минимизации затрат. Доходный договор для заказчика.', '["Полный цикл работ по демонтажу трубопровода","Перевозка и размещение на сертифицированных площадках временного хранения ООО «СТС-АВТО»","Покупка трубы в земле — заказчик получает доход от металлолома","Оформление полного пакета закрывающей документации"]', 1]
]);
await runEach('INSERT INTO process_steps (step_number, title, description, sort_order) VALUES (?, ?, ?, ?)', [
[1, 'Заявка', 'Вы оставляете заявку на сайте, по электронной почте или звоните нам. Наши специалисты оперативно свяжутся с вами для обсуждения деталей проекта, объёма работ и сроков.', 0],
[2, 'Выезд специалиста и оценка', 'Наш инженер выезжает на объект для проведения осмотра, оценки объёма работ, определения необходимых ресурсов и техники. По результатам составляется техническое задание и подписывается договор.', 1],
[3, 'Выполнение работ', 'Мобилизуем технику и персонал на объект. Выполняем демонтаж, утилизацию отходов и рекультивацию в соответствии с проектной документацией. Ежедневные отчёты о ходе работ.', 2],
[4, 'Сдача объекта', 'По завершении всех работ подписывается акт выполненных работ, передаётся полный комплект закрывающей документации. При необходимости — сопровождение сдачи объекта экспертизе.', 3]
]);
await runEach('INSERT INTO equipment (name, brand, image_path, qty, specs, age_badge, sort_order) VALUES (?, ?, ?, ?, ?, ?, ?)', [
['Автокран КАМАЗ КС-55717К-3', 'КАМАЗ', 'ks-45721.webp', '10 единиц', '[{"label":"Грузоподъёмность","value":"25 тонн"},{"label":"Вылет стрелы","value":"до 28 м"},{"label":"Шасси","value":"Полноприводное 6×6"}]', 'Не старше 5 лет', 0],
['Автокран Zoomlion ZTC300', 'Zoomlion', 'zoomlion-ztc300.webp', '2 единицы', '[{"label":"Грузоподъёмность","value":"30 тонн"},{"label":"Вылет стрелы","value":"до 32 м"},{"label":"Стрела","value":"Телескопическая"}]', 'Не старше 5 лет', 1],
['Экскаватор гусеничный Komatsu PC210-10M0', 'Komatsu', 'komatsu-pc210.webp', '20 единиц', '[{"label":"Масса","value":"21 тонна"},{"label":"Объём ковша","value":"1.01.2 м³"},{"label":"Глубина копания","value":"до 6.5 м"}]', 'Не старше 5 лет', 2],
['Экскаватор гусеничный Zoomlion ZE215E', 'Zoomlion', 'zoomlion-ze215e.webp', '2 единицы', '[{"label":"Масса","value":"21.5 тонны"},{"label":"Объём ковша","value":"1.1 м³"},{"label":"Аналог","value":"Komatsu PC210"}]', 'Не старше 5 лет', 3],
['Погрузчик колёсный SDLG LG933L', 'SDLG', 'sdlg-lg933l.webp', '2 единицы', '[{"label":"Грузоподъёмность","value":"3 тонны"},{"label":"Объём ковша","value":"1.7 м³"},{"label":"Тип","value":"Колёсный"}]', 'Не старше 5 лет', 4],
['Соболь 4×4 грузо-пассажирский', 'Соболь', 'sobol-4x4.webp', '13 единиц', '[{"label":"Грузоподъёмность","value":"до 1 т"},{"label":"Привод","value":"Полный 4×4"},{"label":"Назначение","value":"Доставка персонала и запчастей"}]', 'Не старше 5 лет', 5],
['Ломовоз с КМУ (кран-манипулятор)', 'Ломовоз', 'lomovoz-kmu.webp', '3 единицы', '[{"label":"Грузоподъёмность КМУ","value":"до 8 т"},{"label":"Объём платформы","value":"до 20 м³"},{"label":"Назначение","value":"Вывоз металлолома"}]', 'Не старше 5 лет', 6],
['Седельный тягач Камаз 53504-50', 'КамАЗ', 'kamaz-53504.webp', '6 единиц', '[{"label":"Тяговый класс","value":"до 50 т"},{"label":"Привод","value":"Полный привод"},{"label":"Назначение","value":"Перевозка негабарита и тралов"}]', 'Не старше 5 лет', 7],
['Экскаватор-амфибия на понтонной платформе', 'Амфибия', 'amfibia.webp', '4 единицы', '[{"label":"Тип","value":"Гусеничный, плавающий"},{"label":"Работает","value":"На болотах и водных преградах"},{"label":"Особенность","value":"Там, где не видно дна"}]', 'Не старше 5 лет', 8],
['УАЗ Пикап (полный привод)', 'УАЗ', 'uaz-pickup.webp', 'Несколько единиц', '[{"label":"Привод","value":"Полный привод"},{"label":"Назначение","value":"Доставка запчастей на месторождения"}]', 'Не старше 5 лет', 9],
['Тралы тяжеловозы для доставки спецтехники', 'Тралы', 'tral-1.webp', '3 единицы', '[{"label":"Тяговый класс","value":"до 50 т"},{"label":"Назначение","value":"Доставка спецтехники на объекты"}]', 'Не старше 5 лет', 10]
]);
await runEach('INSERT INTO geo_regions (name, sort_order) VALUES (?, ?)', [
['УрФО', 0], ['СФО', 1], ['ПФО', 2], ['СЗФО', 3], ['ДФО', 4], ['ЮФО', 5]
]);
await runEach('INSERT OR IGNORE INTO geo_settings (key, value) VALUES (?, ?)', [
['section_subtitle', 'Работаем во всех федеральных округах Российской Федерации. Особые условия для труднодоступных районов Крайнего Севера и заболоченных территорий.'],
['difficult_title', '🔧 Труднодоступные районы'],
['difficult_desc', 'Мы располагаем специализированной техникой для работы в болотах ХМАО-Югры, ЯНАО, на севере Красноярского края, в Иркутской области. Гусеничная техника и лежневые настилы обеспечивают проходимость даже в самых сложных условиях.'],
['map_image', './img/geo.webp']
]);
const licIcon = '<path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-2 16l-5-5 1.41-1.41L10 14.17l7.59-7.59L18 9l-8 8z"/>';
await runEach('INSERT INTO licenses (svg_icon, title, description, sort_order) VALUES (?, ?, ?, ?)', [
[licIcon, 'СРО — допуск к работам на опасных объектах', 'Свидетельство о допуске к работам на опасных производственных объектах нефтегазового комплекса.', 0],
[licIcon, 'Членство в НОСТРОЙ', 'Действующее членство в Национальном объединении строителей — допуск к строительным работам.', 1],
['<path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 14l-5-5 1.41-1.41L12 14.17l7.59-7.59L21 8l-9 9z"/>', 'Сертификат ISO 9001 (качество)', 'Международный стандарт системы менеджмента качества.', 2],
['<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>', 'Сертификат OHSAS 18001 (охрана труда)', 'Система менеджмента охраны труда и промышленной безопасности.', 3],
['<path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/>', 'Договор ДМС для сотрудников', 'Добровольное медицинское страхование всех сотрудников.', 4],
['<path d="M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zM6 20V4h5v7h7v9H6z"/>', 'Лицензия на заготовку и переработку лома', 'Лицензия на заготовку, хранение и переработку лома черных металлов.', 5]
]);
await runEach('INSERT INTO license_gallery (title, description, image_path, sort_order) VALUES (?, ?, ?, ?)', [
['Лицензия на отходы IIV класса опасности', '№ (66) -6527 - СТО/П от 21 мая 2019 г.', 'license-otxody.webp', 0],
['Лицензия на лом черных и цветных металлов', '№ ЛМ 000092 от 31 октября 2018 г.', 'license-lom.webp', 1]
]);
await runEach('INSERT INTO public_activities (svg_icon, title, description, sort_order) VALUES (?, ?, ?, ?)', [
['<path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>', 'Спонсорство', 'Поддерживаем спортивные, культурные и общественные мероприятия в регионах присутствия. Помогаем развитию местных сообществ.', 0],
['<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/>', 'Благотворительность', 'Оказываем адресную помощь детским домам, ветеранским и общественным организациям. Участвуем в социальных проектах.', 1],
['<path d="M17 8C8 10 5.9 16.2 3 19l-.47.74A7.02 7.02 0 004.5 22.5C7.35 21.83 9.76 19.7 11.85 17.61 14.64 14.79 18.35 11.36 17 8zM10.05 16.81c-.73.73-1.93 1.1-2.94.63-1.03-.48-1.22-1.76-.54-2.67.62-.83 1.84-1.13 2.96-.69.63.25 1.12.69 1.48 1.15l-.96 1.58zM21.19 2.09c-.45-.5-1.15-.66-1.77-.42l-3.02 1.17 3.76 3.76 1.17-3.02c.24-.62.08-1.32-.42-1.77l.28.28z"/>', 'Экология', 'Участвуем в экологических акциях, субботниках и проектах по озеленению. Следим за снижением воздействия на окружающую среду.', 2],
['<path d="M5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82zM12 3L1 9l11 6 9-4.91V17h2V9L12 3z"/>', 'Поддержка образования', 'Сотрудничаем с профильными вузами и колледжами. Организуем практику для студентов, участвуем в ярмарках вакансий.', 3]
]);
await runEach('INSERT INTO activity_gallery (title, description, image_path, sort_order) VALUES (?, ?, ?, ?)', [
['Благодарственное письмо', 'За вклад в развитие региона', 'thanks-1.webp', 0],
['Благодарственное письмо', 'За благотворительную деятельность', 'thanks-2.webp', 1]
]);
await runEach('INSERT INTO partners (name, logo_path, sort_order) VALUES (?, ?, ?)', [
['Газпром', 'газпром.webp', 0], ['Роснефть', 'роснефть.webp', 1],
['Сибур', 'сибур.webp', 2], ['Сургутнефтегаз', 'сургутнефтегаз.webp', 3],
['Транснефть', 'транснефть.webp', 4]
]);
await runEach('INSERT OR IGNORE INTO settings (key, value) VALUES (?, ?)', [
['contact_phone_800', '8 (800) 555-29-31'], ['contact_phone_ekb', '8 (343) 237-25-66'],
['contact_email', 'sts_zakaz@mail.ru'], ['contact_address', 'г. Екатеринбург, ул. Московская, 11, оф. 702'],
['contact_work_hours', 'Пн–Пт: 9:00 18:00|Сб: 10:00 15:00'], ['contact_map_image', './img/secret.webp'],
['footer_text', '© {year} ООО «СТС-Авто». Все права защищены. 16+'],
['form_title', 'Оставить заявку'], ['form_subtitle', 'Заполните форму и мы свяжемся с вами в ближайшее время'],
['section_services_subtitle', 'Полный спектр работ по демонтажу и утилизации трубопроводной инфраструктуры. Работаем на опасных производственных объектах с собственным парком спецтехники.'],
['section_schemes_subtitle', 'Мы разработали гибкие схемы работы, позволяющие выбрать оптимальное решение с учётом ваших целей и бюджета.'],
['section_process_subtitle', 'Прозрачный и отлаженный процесс от первого обращения до сдачи объекта. Каждый этап контролируется инженерами компании.'],
['section_equipment_subtitle', 'Собственный парк из более чем 80 единиц современной спецтехники ведущих мировых производителей. Возраст всей техники — не старше 5 лет.'],
['section_licenses_subtitle', 'Все необходимые допуски и сертификаты для выполнения работ на опасных производственных объектах. Полная прозрачность и соответствие требованиям законодательства РФ.'],
['section_activity_subtitle', 'Компания «СТС-Авто» активно участвует в социальной и общественной жизни регионов присутствия.'],
['section_partners_subtitle', 'Сотрудничаем с ведущими компаниями нефтегазового сектора.'],
['section_contacts_subtitle', 'Оставьте заявку или позвоните — мы оперативно ответим на ваши вопросы и рассчитаем стоимость работ.']
]);
}
function getDb() {
return db;
}
module.exports = { init, getDb };