69 lines
No EOL
2.8 KiB
SQL
69 lines
No EOL
2.8 KiB
SQL
-- Create system_settings table for storing application configuration
|
|
CREATE TABLE IF NOT EXISTS system_settings (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
key VARCHAR(255) NOT NULL UNIQUE,
|
|
value TEXT,
|
|
category VARCHAR(100) NOT NULL,
|
|
super_req BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Create index on key for faster lookups
|
|
CREATE INDEX IF NOT EXISTS idx_system_settings_key ON system_settings(key);
|
|
|
|
-- Create index on category for filtering
|
|
CREATE INDEX IF NOT EXISTS idx_system_settings_category ON system_settings(category);
|
|
|
|
|
|
-- Insert default settings
|
|
INSERT INTO system_settings (key, value, category)
|
|
VALUES
|
|
-- SMTP Settings
|
|
('smtp_host', NULL, 'email', TRUE),
|
|
('smtp_port', NULL, 'email', TRUE),
|
|
('smtp_user', NULL, 'email', TRUE),
|
|
('smtp_password', NULL, 'email', TRUE),
|
|
('smtp_from_email', NULL, 'email', TRUE),
|
|
('smtp_from_name', NULL, 'email', FALSE),
|
|
|
|
-- Site Settings
|
|
('site_domain', NULL, 'site', TRUE),
|
|
('site_api_domain', NULL, 'site', TRUE),
|
|
('site_protocol', NULL, 'site', TRUE),
|
|
('site_environment', NULL, 'site', TRUE),
|
|
('site_deployment', NULL, 'site', TRUE),
|
|
('site_redis_host', NULL, 'site', TRUE),
|
|
('site_redis_tls', NULL, 'site', TRUE),
|
|
('site_aws_region', NULL, 'site', TRUE),
|
|
('site_aws_s3_bucket', NULL, 'site', TRUE),
|
|
('site_cdn_domain', NULL, 'site', TRUE),
|
|
('site_aws_queue_url', NULL, 'site', TRUE),
|
|
('site_read_host', NULL, 'site', TRUE),
|
|
('site_db_max_connections', NULL, 'site', TRUE),
|
|
('site_session_secret', NULL, 'site', TRUE),
|
|
('site_redis_port', NULL, 'site', TRUE),
|
|
('site_redis_password', NULL, 'site', TRUE),
|
|
|
|
-- Payment Settings
|
|
('currency', 'CAD', 'payment', FALSE),
|
|
('tax_rate', '0', 'payment', FALSE),
|
|
|
|
-- Shipping Settings
|
|
('shipping_flat_rate', '10.00', 'shipping', FALSE),
|
|
('shipping_free_threshold', '50.00', 'shipping', FALSE),
|
|
('shipping_enabled', 'true', 'shipping', FALSE),
|
|
('easypost_api_key', NULL, 'shipping', TRUE),
|
|
('easypost_enabled', 'false', 'shipping', FALSE),
|
|
('shipping_origin_street', '123 Main St', 'shipping', FALSE),
|
|
('shipping_origin_city', 'Vancouver', 'shipping', FALSE),
|
|
('shipping_origin_state', 'BC', 'shipping', FALSE),
|
|
('shipping_origin_zip', 'V6K 1V6', 'shipping', FALSE),
|
|
('shipping_origin_country', 'CA', 'shipping', FALSE),
|
|
('shipping_default_package_length', '15', 'shipping', FALSE),
|
|
('shipping_default_package_width', '12', 'shipping', FALSE),
|
|
('shipping_default_package_height', '10', 'shipping', FALSE),
|
|
('shipping_default_package_unit', 'cm', 'shipping', FALSE),
|
|
('shipping_default_package_weight_unit', 'g', 'shipping', FALSE),
|
|
('shipping_carriers_allowed', 'USPS,UPS,FedEx,DHL,Canada Post,Purolator', 'shipping', FALSE)
|
|
ON CONFLICT (key) DO NOTHING; |