Files
backPRO/migrations/001_initial.sql
Jacek Pyziak b653cea252 Add installer functionality for WordPress with FTP and database configuration
- Create SQL migration for prompt templates used in article and image generation.
- Add migration to change publish interval from days to hours in the sites table.
- Implement InstallerController to handle installation requests and validation.
- Develop FtpService for FTP connections and file uploads.
- Create InstallerService to manage the WordPress installation process, including downloading, extracting, and configuring WordPress.
- Add index view for the installer with form inputs for FTP, database, and WordPress admin settings.
- Implement progress tracking for the installation process with AJAX polling.
2026-02-16 21:55:24 +01:00

84 lines
3.1 KiB
SQL

-- BackPRO - Initial database migration
-- Baza danych musi być już utworzona w panelu hostingu
-- Users table
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Sites (WordPress instances)
CREATE TABLE IF NOT EXISTS sites (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
url VARCHAR(255) NOT NULL,
api_user VARCHAR(100) NOT NULL,
api_token VARCHAR(255) NOT NULL,
publish_interval_hours INT NOT NULL DEFAULT 24,
last_published_at DATETIME NULL,
is_active TINYINT(1) NOT NULL DEFAULT 1,
is_multisite TINYINT(1) NOT NULL DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Topics (assigned to sites)
CREATE TABLE IF NOT EXISTS topics (
id INT AUTO_INCREMENT PRIMARY KEY,
site_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
description TEXT NULL,
wp_category_id INT NULL,
article_count INT NOT NULL DEFAULT 0,
is_active TINYINT(1) NOT NULL DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (site_id) REFERENCES sites(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Articles (generated and published)
CREATE TABLE IF NOT EXISTS articles (
id INT AUTO_INCREMENT PRIMARY KEY,
site_id INT NOT NULL,
topic_id INT NOT NULL,
title VARCHAR(500) NOT NULL,
content TEXT NOT NULL,
wp_post_id INT NULL,
image_url VARCHAR(500) NULL,
status ENUM('generated', 'published', 'failed') NOT NULL DEFAULT 'generated',
ai_model VARCHAR(50) NULL,
prompt_used TEXT NULL,
error_message TEXT NULL,
published_at DATETIME NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (site_id) REFERENCES sites(id) ON DELETE CASCADE,
FOREIGN KEY (topic_id) REFERENCES topics(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Settings (key-value store)
CREATE TABLE IF NOT EXISTS settings (
id INT AUTO_INCREMENT PRIMARY KEY,
`key` VARCHAR(100) NOT NULL UNIQUE,
value TEXT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Indexes
CREATE INDEX idx_topics_site_id ON topics(site_id);
CREATE INDEX idx_articles_site_id ON articles(site_id);
CREATE INDEX idx_articles_topic_id ON articles(topic_id);
CREATE INDEX idx_articles_status ON articles(status);
CREATE INDEX idx_sites_is_active ON sites(is_active);
CREATE INDEX idx_sites_last_published ON sites(last_published_at);
-- Default admin user - hasło ustawiasz przez skrypt install.php
-- LUB ręcznie wstaw hash bcrypt:
-- INSERT INTO users (username, password_hash) VALUES ('admin', '$2y$10$...');
-- Default settings
INSERT INTO settings (`key`, value) VALUES
('openai_model', 'gpt-4o'),
('image_provider', 'freepik'),
('article_min_words', '800'),
('article_max_words', '1200')
ON DUPLICATE KEY UPDATE value = value;