bp_wb/migrations/001_initial_schema.sql
mmabdalla c14f186263 Initial project setup: Create directory structure and configuration files
- Created manifest.yaml with Node.js runtime and routes
- Set up package.json with React, TypeScript, Vite, and dependencies
- Created TypeScript and Vite configuration files
- Set up ESLint and Prettier
- Created complete directory structure (frontend, backend, migrations)
- Created initial database schema migration
- Set up Express server with route handlers
- Created frontend entry point files
- Added version.txt with build 0.1.0.001
2025-12-28 14:59:01 +02:00

68 lines
2.4 KiB
SQL

-- BP_WB Initial Database Schema
-- This migration creates all core tables for the Website Builder plugin
-- Page configurations
CREATE TABLE IF NOT EXISTS wb_pages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
app_name VARCHAR(255) NOT NULL,
route_path VARCHAR(500) NOT NULL,
page_config TEXT NOT NULL, -- JSON stored as TEXT (SQLite compatibility)
version INTEGER DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
created_by INTEGER,
UNIQUE(app_name, route_path)
);
-- Page versions (for history/rollback)
CREATE TABLE IF NOT EXISTS wb_page_versions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
page_id INTEGER NOT NULL,
version INTEGER NOT NULL,
page_config TEXT NOT NULL, -- JSON stored as TEXT
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
created_by INTEGER,
FOREIGN KEY (page_id) REFERENCES wb_pages(id) ON DELETE CASCADE
);
-- Templates (starting points)
CREATE TABLE IF NOT EXISTS wb_templates (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(255) NOT NULL,
description TEXT,
category VARCHAR(100),
template_config TEXT NOT NULL, -- JSON stored as TEXT
preview_image VARCHAR(500),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
created_by INTEGER
);
-- Component registry (custom components from plugins)
CREATE TABLE IF NOT EXISTS wb_components (
id INTEGER PRIMARY KEY AUTOINCREMENT,
plugin_name VARCHAR(255) NOT NULL,
component_name VARCHAR(255) NOT NULL,
component_config TEXT NOT NULL, -- JSON stored as TEXT
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE(plugin_name, component_name)
);
-- Asset library
CREATE TABLE IF NOT EXISTS wb_assets (
id INTEGER PRIMARY KEY AUTOINCREMENT,
filename VARCHAR(255) NOT NULL,
file_path VARCHAR(500) NOT NULL,
file_type VARCHAR(50),
file_size INTEGER,
uploaded_by INTEGER,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Indexes for performance
CREATE INDEX IF NOT EXISTS idx_wb_pages_app_route ON wb_pages(app_name, route_path);
CREATE INDEX IF NOT EXISTS idx_wb_pages_created_by ON wb_pages(created_by);
CREATE INDEX IF NOT EXISTS idx_wb_page_versions_page_id ON wb_page_versions(page_id);
CREATE INDEX IF NOT EXISTS idx_wb_templates_category ON wb_templates(category);
CREATE INDEX IF NOT EXISTS idx_wb_components_plugin ON wb_components(plugin_name);
CREATE INDEX IF NOT EXISTS idx_wb_assets_file_type ON wb_assets(file_type);