camera-database/schema/08-seed-data.sql

160 lines
8.6 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ==========================================
-- CLUB DAGUERRE CAMERA DATABASE
-- Part 8: Seed Data
-- ==========================================
-- ==========================================
-- CONTENT SOURCES
-- ==========================================
INSERT INTO content_sources (source_name, source_type, rights_status, legal_notes, verified_by, verified_date) VALUES
('Club Daguerre - Photo Antiquaria', 'internal', 'owned', 'Club owns publication and digitization rights', 'Walter Jekat', CURRENT_DATE),
('Club Daguerre aktuell', 'internal', 'owned', 'Club publication, full rights', 'Walter Jekat', CURRENT_DATE),
('Harald Goergens Collection', 'licensed', 'owned', 'Harald grants perpetual license for his photos/data to Club Daguerre', 'Walter Jekat', CURRENT_DATE),
('Steimer Database - Images', 'uncertain', 'questionable', 'Source unknown. DO NOT publish without clearance. Internal research only.', NULL, NULL),
('Steimer Database - Text', 'uncertain', 'questionable', 'Text from various publications. Rights status unknown. Use metadata only.', NULL, NULL),
('User Contributed', 'licensed', 'licensed', 'Users grant CC-BY-SA license on upload', 'System', CURRENT_DATE),
('Pre-1923 Public Domain', 'public_domain', 'public_domain', 'Works published before 1923 are public domain', 'Walter Jekat', CURRENT_DATE),
('Manufacturer Marketing', 'public_domain', 'fair_use', 'Brochures, ads, price lists - marketing materials (fair use)', 'Walter Jekat', CURRENT_DATE);
-- ==========================================
-- CORE TERMINOLOGY CONCEPTS
-- ==========================================
-- Body Types
INSERT INTO concepts (concept_code, category, sort_order) VALUES
('BODY_TYPE_LB', 'body_type', 1),
('BODY_TYPE_FG', 'body_type', 2),
('BODY_TYPE_KL', 'body_type', 3),
('BODY_TYPE_SP', 'body_type', 4),
('BODY_TYPE_RK', 'body_type', 5),
('BODY_TYPE_BO', 'body_type', 6),
('BODY_TYPE_TU', 'body_type', 7),
('BODY_TYPE_MG', 'body_type', 8);
-- Body Type Terms
INSERT INTO concept_terms (concept_id, language_code, term, term_type) VALUES
-- Laufboden (Lb)
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_LB'), 'de', 'Laufbodenkamera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_LB'), 'de', 'Lb', 'abbreviation'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_LB'), 'de', 'Laufboden', 'synonym'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_LB'), 'en', 'Strut folder camera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_LB'), 'en', 'SF', 'abbreviation'),
-- Festgehäuse (Fg)
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_FG'), 'de', 'Festgehäuse', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_FG'), 'de', 'Fg', 'abbreviation'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_FG'), 'en', 'Rigid body camera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_FG'), 'en', 'Rigid', 'synonym'),
-- Klappkamera (Kl)
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_KL'), 'de', 'Klappkamera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_KL'), 'de', 'Kl', 'abbreviation'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_KL'), 'en', 'Folding camera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_KL'), 'en', 'Folder', 'synonym'),
-- Spiegelreflex (Sp)
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_SP'), 'de', 'Spiegelreflexkamera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_SP'), 'de', 'Sp', 'abbreviation'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_SP'), 'de', 'Spiegelreflex', 'synonym'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_SP'), 'en', 'Single-lens reflex', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_SP'), 'en', 'SLR', 'abbreviation'),
-- Reflexkamera (Rk)
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_RK'), 'de', 'Reflexkamera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_RK'), 'de', 'Rk', 'abbreviation'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_RK'), 'en', 'Twin-lens reflex', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_RK'), 'en', 'TLR', 'abbreviation'),
-- Boxkamera (Bo)
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_BO'), 'de', 'Boxkamera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_BO'), 'de', 'Bo', 'abbreviation'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_BO'), 'de', 'Box', 'synonym'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_BO'), 'en', 'Box camera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_BO'), 'en', 'Box', 'abbreviation'),
-- Tubus (Tu)
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_TU'), 'de', 'Tubuskamera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_TU'), 'de', 'Tu', 'abbreviation'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_TU'), 'en', 'Tube camera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_TU'), 'en', 'Tube', 'abbreviation'),
-- Magazine (Mg)
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_MG'), 'de', 'Magazinkamera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_MG'), 'de', 'Mg', 'abbreviation'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_MG'), 'en', 'Magazine camera', 'primary'),
((SELECT id FROM concepts WHERE concept_code = 'BODY_TYPE_MG'), 'en', 'Mag', 'abbreviation');
-- ==========================================
-- COMMON FILM FORMATS
-- ==========================================
INSERT INTO formats (format_code, width_mm, height_mm, format_type, description_de, description_en, sort_order) VALUES
('9x12 Pl', 90, 120, 'plate', 'Glasplatte 9×12 cm', 'Glass plate 9×12 cm', 10),
('13x18 Pl', 130, 180, 'plate', 'Glasplatte 13×18 cm', 'Glass plate 13×18 cm', 20),
('6x9 RF', 60, 90, 'rollfilm', 'Rollfilm 6×9 cm', 'Rollfilm 6×9 cm', 30),
('6x6 RF', 60, 60, 'rollfilm', 'Rollfilm 6×6 cm', 'Rollfilm 6×6 cm', 40),
('24x36 KB', 24, 36, '35mm', 'Kleinbild 24×36 mm', '35mm film', 50);
-- ==========================================
-- SAMPLE LENSES
-- ==========================================
INSERT INTO lenses (name, manufacturer, focal_length_mm, max_aperture, lens_type, notes) VALUES
('Tessar', 'Zeiss', 50, 3.5, 'prime', 'Classic 4-element lens'),
('Tessar', 'Zeiss', 105, 4.5, 'prime', 'Medium telephoto version'),
('Xenar', 'Schneider', 50, 2.8, 'prime', 'High-speed Tessar type'),
('Anastigmat', 'Various', NULL, NULL, 'prime', 'Generic designation for corrected lenses');
-- ==========================================
-- SAMPLE SHUTTERS
-- ==========================================
INSERT INTO shutters (name, manufacturer, shutter_type, speed_range, notes) VALUES
('Compur', 'Deckel', 'leaf', '1-1/300s, B', 'Most common leaf shutter'),
('Prontor', 'Gauthier', 'leaf', '1-1/300s, B', 'Alternative to Compur'),
('Ibsor', 'Deckel', 'leaf', '1-1/100s, B', 'Budget version of Compur');
-- ==========================================
-- SYSTEM CONFIGURATION
-- ==========================================
INSERT INTO system_config (key, value, description, updated_by, updated_at) VALUES
('schema_version', '1.0', 'Current database schema version', 'Installation', NOW()),
('last_import', NULL, 'Timestamp of last Goergens data import', NULL, NULL),
('research_password_changed', NULL, 'Date of last research password change', NULL, NULL);
-- ==========================================
-- ANALYSIS REPORT
-- ==========================================
DO $$
DECLARE
table_count INT;
index_count INT;
view_count INT;
function_count INT;
BEGIN
SELECT COUNT(*) INTO table_count
FROM information_schema.tables
WHERE table_schema = 'public' AND table_type = 'BASE TABLE';
SELECT COUNT(*) INTO index_count
FROM pg_indexes
WHERE schemaname = 'public';
SELECT COUNT(*) INTO view_count
FROM information_schema.views
WHERE table_schema = 'public';
SELECT COUNT(*) INTO function_count
FROM pg_proc
WHERE pronamespace = 'public'::regnamespace;
RAISE NOTICE '===========================================';
RAISE NOTICE 'CLUB DAGUERRE CAMERA DATABASE';
RAISE NOTICE 'Schema Installation Complete';
RAISE NOTICE '===========================================';
RAISE NOTICE 'Tables created: %', table_count;
RAISE NOTICE 'Indexes created: %', index_count;
RAISE NOTICE 'Views created: %', view_count;
RAISE NOTICE 'Functions created: %', function_count;
RAISE NOTICE '===========================================';
RAISE NOTICE 'Ready for Goergens data import';
RAISE NOTICE '===========================================';
END $$;