mmap/migrations/014_insert_default_settings.sql
tsuki 6a3ce7e9d3
Some checks are pending
Docker Build and Push / build (push) Waiting to run
refactor
2025-08-14 21:34:27 +08:00

132 lines
5.9 KiB
SQL

-- Rollback: Delete default configuration items
-- Delete all inserted configuration items
DELETE FROM settings WHERE key IN (
-- Site configuration
'site.name',
'site.description',
'site.keywords',
'site.url',
'site.logo',
'site.copyright',
'site.icp',
'site.icp_url',
'site.color_style',
-- User configuration
'user.default_avatar',
'user.default_role',
'user.register_invite_code',
'user.register_email_verification',
'user.open_login',
'user.open_reset_password',
-- Email configuration
'email.smtp_host',
'email.smtp_port',
'email.smtp_user',
'email.smtp_password',
'email.smtp_from',
'email.smtp_from_name',
'email.smtp_from_email',
'email.system_template',
-- Blog configuration
'blog.default_author',
'blog.default_category',
'blog.default_tag',
'blog.open_comment',
-- Logging configuration
'logging.level',
'logging.max_files',
'logging.max_file_size',
-- Cache configuration
'cache.ttl',
'cache.max_size',
-- Feature switches configuration
'switch.open_register',
'switch.open_login',
'switch.open_reset_password',
'switch.open_comment',
'switch.open_like',
'switch.open_share',
'switch.open_view'
);
-- Drop unique index (if exists)
DROP INDEX IF EXISTS idx_settings_key_unique;
-- Insert default configuration items
-- Site configuration
INSERT INTO settings (key, value, value_type, description, category, is_system, is_editable) VALUES
('site.name', 'Mapp', 'string', 'Site name', 'site', true, true),
('site.description', 'A modern application platform', 'string', 'Site description', 'site', true, true),
('site.keywords', 'mapp,application,platform', 'string', 'Site keywords', 'site', true, true),
('site.url', 'http://localhost:3000', 'string', 'Site URL', 'site', true, true),
('site.logo', '/static/logo.png', 'string', 'Site logo path', 'site', true, true),
('site.copyright', '© 2024 Mapp. All rights reserved.', 'string', 'Copyright information', 'site', true, true),
('site.icp', '', 'string', 'ICP registration number', 'site', true, true),
('site.icp_url', '', 'string', 'ICP registration URL', 'site', true, true),
('site.color_style', 'default', 'string', 'Site color scheme', 'site', true, true);
-- User configuration
INSERT INTO settings (key, value, value_type, description, category, is_system, is_editable) VALUES
('user.default_avatar', '/static/default-avatar.png', 'string', 'Default user avatar', 'user', true, true),
('user.default_role', 'User', 'string', 'Default user role', 'user', true, true),
('user.register_invite_code', 'true', 'boolean', 'Require invite code for registration', 'user', true, true),
('user.register_email_verification', 'false', 'boolean', 'Require email verification for registration', 'user', true, true),
('user.open_login', 'true', 'boolean', 'Enable login', 'user', true, true),
('user.open_reset_password', 'true', 'boolean', 'Enable password reset', 'user', true, true);
-- Email configuration
INSERT INTO settings (key, value, value_type, description, category, is_system, is_editable) VALUES
('email.smtp_host', '', 'string', 'SMTP server address', 'email', true, true),
('email.smtp_port', '587', 'number', 'SMTP server port', 'email', true, true),
('email.smtp_user', '', 'string', 'SMTP username', 'email', true, true),
('email.smtp_password', '', 'string', 'SMTP password', 'email', true, true),
('email.smtp_from', '', 'string', 'Sender email', 'email', true, true),
('email.smtp_from_name', 'Mapp System', 'string', 'Sender name', 'email', true, true),
('email.smtp_from_email', '', 'string', 'Sender email address', 'email', true, true),
('email.system_template', 'default', 'string', 'System email template', 'email', true, true);
-- Blog configuration
INSERT INTO settings (key, value, value_type, description, category, is_system, is_editable) VALUES
('blog.default_author', 'System', 'string', 'Default blog author', 'blog', true, true),
('blog.default_category', 'Uncategorized', 'string', 'Default blog category', 'blog', true, true),
('blog.default_tag', 'Default', 'string', 'Default blog tag', 'blog', true, true),
('blog.open_comment', 'true', 'boolean', 'Enable comments', 'blog', true, true);
-- Logging configuration
INSERT INTO settings (key, value, value_type, description, category, is_system, is_editable) VALUES
('logging.level', 'info', 'string', 'Log level', 'logging', true, true),
('logging.max_files', '10', 'number', 'Maximum log files', 'logging', true, true),
('logging.max_file_size', '10485760', 'number', 'Maximum log file size (bytes)', 'logging', true, true);
-- Cache configuration
INSERT INTO settings (key, value, value_type, description, category, is_system, is_editable) VALUES
('cache.ttl', '3600', 'number', 'Cache time to live (seconds)', 'cache', true, true),
('cache.max_size', '1000', 'number', 'Maximum cache entries', 'cache', true, true);
-- Feature switches configuration
INSERT INTO settings (key, value, value_type, description, category, is_system, is_editable) VALUES
('switch.open_register', 'true', 'boolean', 'Enable registration', 'switch', true, true),
('switch.open_login', 'true', 'boolean', 'Enable login', 'switch', true, true),
('switch.open_reset_password', 'true', 'boolean', 'Enable password reset', 'switch', true, true),
('switch.open_comment', 'true', 'boolean', 'Enable comments', 'switch', true, true),
('switch.open_like', 'true', 'boolean', 'Enable likes', 'switch', true, true),
('switch.open_share', 'true', 'boolean', 'Enable sharing', 'switch', true, true),
('switch.open_view', 'true', 'boolean', 'Enable view statistics', 'switch', true, true);
-- 创建唯一索引约束(如果不存在)
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE indexname = 'idx_settings_key_unique'
AND tablename = 'settings'
) THEN
CREATE UNIQUE INDEX idx_settings_key_unique ON settings(key);
END IF;
END $$;