hotel_pi/directus/settings-seed.js
2026-04-16 18:19:15 -04:00

77 lines
3.0 KiB
JavaScript

// Example configuration for Directus seed data
// Use this to initialize the settings collection with default values
export const defaultSettings = {
key: 'general',
title: 'Guest',
use_ip_location: false,
manual_location: 'Hotel Location',
idle_timeout_seconds: 300,
plex_enabled: true,
restaurants_enabled: true,
attractions_enabled: true,
brand_color: '#1f2937',
metadata: {
version: '1.0.0',
},
};
/**
* SQL to insert default settings into Directus
* Run this in your database initialization script
*/
export const seedSettingsSql = `
INSERT INTO directus_collections (collection, icon, sort, note)
VALUES ('settings', 'settings', 1000, 'Global kiosk configuration settings')
ON CONFLICT (collection) DO NOTHING;
INSERT INTO directus_fields (collection, field, type, interface, options, required, readonly, hidden, sort, note)
VALUES
('settings', 'id', 'uuid', 'input', '{"hidden":true}', false, true, true, 0, 'Primary Key'),
('settings', 'key', 'string', 'input', '{"options":{"iconRight":"vpn_key"}}', true, false, false, 1, 'Unique setting key'),
('settings', 'title', 'string', 'input', NULL, true, false, false, 2, 'Welcome title'),
('settings', 'use_ip_location', 'boolean', 'boolean', NULL, false, false, false, 3, 'Use IP geolocation'),
('settings', 'manual_location', 'string', 'input', NULL, false, false, false, 4, 'Manual location if IP geolocation disabled'),
('settings', 'idle_timeout_seconds', 'integer', 'input', '{"options":{"iconRight":"schedule"}}', false, false, false, 5, 'Idle timeout in seconds'),
('settings', 'plex_enabled', 'boolean', 'boolean', NULL, false, false, false, 6, 'Enable Plex integration'),
('settings', 'restaurants_enabled', 'boolean', 'boolean', NULL, false, false, false, 7, 'Show restaurants section'),
('settings', 'attractions_enabled', 'boolean', 'boolean', NULL, false, false, false, 8, 'Show attractions section'),
('settings', 'brand_color', 'string', 'input', '{"iconRight":"palette"}', false, false, false, 9, 'Brand color in hex'),
('settings', 'metadata', 'json', 'json', NULL, false, false, false, 10, 'Custom metadata and settings')
ON CONFLICT DO NOTHING;
INSERT INTO directus_settings (key, title, use_ip_location, manual_location, idle_timeout_seconds, plex_enabled, restaurants_enabled, attractions_enabled, brand_color, metadata)
VALUES (
'general',
'Guest',
false,
'Hotel Location',
300,
true,
true,
true,
'#1f2937',
'{}'
)
ON CONFLICT (key) DO UPDATE SET
title = EXCLUDED.title,
use_ip_location = EXCLUDED.use_ip_location,
manual_location = EXCLUDED.manual_location,
idle_timeout_seconds = EXCLUDED.idle_timeout_seconds,
plex_enabled = EXCLUDED.plex_enabled,
restaurants_enabled = EXCLUDED.restaurants_enabled,
attractions_enabled = EXCLUDED.attractions_enabled,
brand_color = EXCLUDED.brand_color;
`;
/**
* Directus REST API payload to create settings
* Use this to programmatically initialize from Node.js
*/
export function createSettingsPayload(overrides = {}) {
return {
...defaultSettings,
...overrides,
};
}