⚡ 初始提交 - FutureOSS v1.0 插件化运行时框架
一切皆为插件的开发者工具运行时框架
🧩 核心特性:
- 插件热插拔 (importlib 动态加载)
- 依赖自动解析 (拓扑排序 + 循环检测)
- 企业级稳定 (熔断/降级/重试/隔离)
- 事件驱动 (发布/订阅事件总线)
- 完整配置 (YAML 配置 + 热重载)
This commit is contained in:
104
website/community/schema.sql
Normal file
104
website/community/schema.sql
Normal file
@@ -0,0 +1,104 @@
|
||||
-- OSS Community 数据库结构
|
||||
CREATE DATABASE IF NOT EXISTS oss_community CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE oss_community;
|
||||
|
||||
-- 用户表
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
email VARCHAR(100) NOT NULL UNIQUE,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
avatar VARCHAR(255) DEFAULT '',
|
||||
bio TEXT,
|
||||
role ENUM('admin', 'moderator', 'member') DEFAULT 'member',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 分类表
|
||||
CREATE TABLE IF NOT EXISTS categories (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
slug VARCHAR(100) NOT NULL UNIQUE,
|
||||
description TEXT,
|
||||
icon VARCHAR(50) DEFAULT 'folder',
|
||||
sort_order INT DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 帖子表
|
||||
CREATE TABLE IF NOT EXISTS posts (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
category_id INT NOT NULL,
|
||||
title VARCHAR(200) NOT NULL,
|
||||
slug VARCHAR(200) NOT NULL UNIQUE,
|
||||
content TEXT NOT NULL,
|
||||
views INT DEFAULT 0,
|
||||
likes INT DEFAULT 0,
|
||||
is_pinned TINYINT(1) DEFAULT 0,
|
||||
is_locked TINYINT(1) DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE CASCADE,
|
||||
FULLTEXT(title, content)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 回复表
|
||||
CREATE TABLE IF NOT EXISTS replies (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
post_id INT NOT NULL,
|
||||
user_id INT NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
likes INT DEFAULT 0,
|
||||
is_solution TINYINT(1) DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 点赞表
|
||||
CREATE TABLE IF NOT EXISTS likes (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
post_id INT DEFAULT NULL,
|
||||
reply_id INT DEFAULT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY unique_like (user_id, post_id, reply_id),
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (reply_id) REFERENCES replies(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 标签表
|
||||
CREATE TABLE IF NOT EXISTS tags (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50) NOT NULL UNIQUE,
|
||||
slug VARCHAR(50) NOT NULL UNIQUE,
|
||||
color VARCHAR(7) DEFAULT '#06b6d4'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 帖子标签关联表
|
||||
CREATE TABLE IF NOT EXISTS post_tags (
|
||||
post_id INT NOT NULL,
|
||||
tag_id INT NOT NULL,
|
||||
PRIMARY KEY (post_id, tag_id),
|
||||
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 初始数据
|
||||
INSERT IGNORE INTO categories (name, slug, description, icon, sort_order) VALUES
|
||||
('公告', 'announcements', '官方公告和重要通知', 'megaphone', 1),
|
||||
('问答', 'q-a', '提问与解答,互助交流', 'question', 2),
|
||||
('讨论', 'discussions', '技术讨论与想法分享', 'chat', 3),
|
||||
('插件市场', 'plugins', '插件展示与推荐', 'puzzle', 4),
|
||||
('反馈', 'feedback', 'Bug 反馈与功能建议', 'bug', 5);
|
||||
|
||||
INSERT IGNORE INTO tags (name, slug, color) VALUES
|
||||
('Go', 'go', '#00add8'),
|
||||
('插件', 'plugin', '#8b5cf6'),
|
||||
('安装', 'install', '#22c55e'),
|
||||
('配置', 'config', '#3b82f6'),
|
||||
('求助', 'help', '#f59e0b');
|
||||
Reference in New Issue
Block a user