- DirectoryScannerPlugin: recursive directory walk via FileStoragePort
- Computes SHA256 checksums, classifies media by extension
- Registers each file via RegisterAssetHandler (triggers AssetIngested → extract_metadata pipeline)
- Reads library_path_id from job payload, looks up volume + path
- Seeded plugin + scan_directory pipeline
- Trigger via POST /jobs with { job_type: "ScanDirectory", payload: { library_path_id: "..." } }
47 lines
2.3 KiB
SQL
47 lines
2.3 KiB
SQL
-- Default plugins matching worker's InMemoryPluginRegistry
|
|
INSERT INTO plugins (plugin_id, name, plugin_type, is_enabled, configuration)
|
|
VALUES
|
|
('a0000000-0000-4000-8000-000000000001', 'metadata_extractor', 'media_processor', true, '{}'),
|
|
('a0000000-0000-4000-8000-000000000002', 'sidecar_sync', 'sidecar_writer', true, '{}'),
|
|
('a0000000-0000-4000-8000-000000000003', 'no_op', 'scheduled_task', true, '{}'),
|
|
('a0000000-0000-4000-8000-000000000004', 'thumbnail_generator', 'media_processor', true, '{}'),
|
|
('a0000000-0000-4000-8000-000000000005', 'directory_scanner', 'media_processor', true, '{}')
|
|
ON CONFLICT (plugin_id) DO NOTHING;
|
|
|
|
-- Pipeline: extract_metadata → metadata_extractor, then thumbnail_generator
|
|
INSERT INTO processing_pipelines (pipeline_id, trigger_event, steps)
|
|
VALUES (
|
|
'b0000000-0000-4000-8000-000000000001',
|
|
'extract_metadata',
|
|
'[{"plugin_id": "a0000000-0000-4000-8000-000000000001", "step_order": 0, "configuration": {}},
|
|
{"plugin_id": "a0000000-0000-4000-8000-000000000004", "step_order": 1, "configuration": {"width": "300", "height": "300", "format": "webp", "profile": "ThumbnailSquare"}}]'
|
|
)
|
|
ON CONFLICT (pipeline_id) DO NOTHING;
|
|
|
|
-- Pipeline: generate_derivative (standalone, configurable per-step)
|
|
INSERT INTO processing_pipelines (pipeline_id, trigger_event, steps)
|
|
VALUES (
|
|
'b0000000-0000-4000-8000-000000000003',
|
|
'generate_derivative',
|
|
'[{"plugin_id": "a0000000-0000-4000-8000-000000000004", "step_order": 0, "configuration": {"width": "300", "height": "300", "format": "webp", "profile": "ThumbnailSquare"}}]'
|
|
)
|
|
ON CONFLICT (pipeline_id) DO NOTHING;
|
|
|
|
-- Pipeline: scan_directory → directory_scanner
|
|
INSERT INTO processing_pipelines (pipeline_id, trigger_event, steps)
|
|
VALUES (
|
|
'b0000000-0000-4000-8000-000000000004',
|
|
'scan_directory',
|
|
'[{"plugin_id": "a0000000-0000-4000-8000-000000000005", "step_order": 0, "configuration": {}}]'
|
|
)
|
|
ON CONFLICT (pipeline_id) DO NOTHING;
|
|
|
|
-- Pipeline: sync_sidecar → sidecar_sync
|
|
INSERT INTO processing_pipelines (pipeline_id, trigger_event, steps)
|
|
VALUES (
|
|
'b0000000-0000-4000-8000-000000000002',
|
|
'sync_sidecar',
|
|
'[{"plugin_id": "a0000000-0000-4000-8000-000000000002", "step_order": 0, "configuration": {}}]'
|
|
)
|
|
ON CONFLICT (pipeline_id) DO NOTHING;
|