diff --git a/scripts/create-sample-projects.js b/scripts/create-sample-projects.js new file mode 100644 index 0000000..46d3728 --- /dev/null +++ b/scripts/create-sample-projects.js @@ -0,0 +1,206 @@ +import db from '../src/lib/db.js'; +import initializeDatabase from '../src/lib/init-db.js'; + +// Initialize the database +initializeDatabase(); + +// Sample projects data +const sampleProjects = [ + { + contract_id: 1, + project_name: 'Residential Complex Alpha', + address: 'ul. Główna 123', + plot: 'Plot 45/6', + district: 'Śródmieście', + unit: 'Unit A', + city: 'Warszawa', + investment_number: 'INV-2025-001', + finish_date: '2025-06-30', + wp: 'WP-001', + contact: 'Jan Kowalski, tel. 123-456-789', + notes: 'Modern residential building with 50 apartments', + coordinates: '52.2297,21.0122', + project_type: 'design+construction', + project_status: 'registered' + }, + { + contract_id: 1, + project_name: 'Office Building Beta', + address: 'al. Jerozolimskie 50', + plot: 'Plot 12/8', + district: 'Mokotów', + unit: 'Unit B', + city: 'Warszawa', + investment_number: 'INV-2025-002', + finish_date: '2025-09-15', + wp: 'WP-002', + contact: 'Anna Nowak, tel. 987-654-321', + notes: 'Commercial office space, 10 floors', + coordinates: '52.2215,21.0071', + project_type: 'construction', + project_status: 'in_progress_design' + }, + { + contract_id: 2, + project_name: 'Shopping Mall Gamma', + address: 'pl. Centralny 1', + plot: 'Plot 78/3', + district: 'Centrum', + unit: 'Unit C', + city: 'Kraków', + investment_number: 'INV-2025-003', + finish_date: '2025-12-20', + wp: 'WP-003', + contact: 'Piotr Wiśniewski, tel. 555-123-456', + notes: 'Large shopping center with parking', + coordinates: '50.0647,19.9450', + project_type: 'design+construction', + project_status: 'in_progress_construction' + }, + { + contract_id: 2, + project_name: 'Industrial Warehouse Delta', + address: 'ul. Przemysłowa 100', + plot: 'Plot 200/15', + district: 'Przemysłowa', + unit: 'Unit D', + city: 'Łódź', + investment_number: 'INV-2025-004', + finish_date: '2025-08-10', + wp: 'WP-004', + contact: 'Maria Lewandowska, tel. 444-789-012', + notes: 'Logistics warehouse facility', + coordinates: '51.7592,19.4600', + project_type: 'design', + project_status: 'fulfilled' + }, + { + contract_id: 1, + project_name: 'Hotel Complex Epsilon', + address: 'ul. Morska 25', + plot: 'Plot 5/2', + district: 'Nadmorze', + unit: 'Unit E', + city: 'Gdańsk', + investment_number: 'INV-2025-005', + finish_date: '2025-11-05', + wp: 'WP-005', + contact: 'Tomasz Malinowski, tel. 333-456-789', + notes: 'Luxury hotel with conference facilities', + coordinates: '54.3520,18.6466', + project_type: 'design+construction', + project_status: 'registered' + }, + { + contract_id: 2, + project_name: 'School Complex Zeta', + address: 'ul. Edukacyjna 15', + plot: 'Plot 30/4', + district: 'Edukacyjny', + unit: 'Unit F', + city: 'Poznań', + investment_number: 'INV-2025-006', + finish_date: '2025-07-20', + wp: 'WP-006', + contact: 'Ewa Dombrowska, tel. 222-333-444', + notes: 'Modern educational facility with sports complex', + coordinates: '52.4064,16.9252', + project_type: 'design', + project_status: 'in_progress_design' + }, + { + contract_id: 1, + project_name: 'Medical Center Eta', + address: 'al. Zdrowia 8', + plot: 'Plot 67/9', + district: 'Medyczny', + unit: 'Unit G', + city: 'Wrocław', + investment_number: 'INV-2025-007', + finish_date: '2025-10-30', + wp: 'WP-007', + contact: 'Dr. Marek Szymankowski, tel. 111-222-333', + notes: 'Specialized medical center with emergency department', + coordinates: '51.1079,17.0385', + project_type: 'construction', + project_status: 'in_progress_construction' + }, + { + contract_id: 2, + project_name: 'Sports Stadium Theta', + address: 'ul. Sportowa 50', + plot: 'Plot 150/20', + district: 'Sportowy', + unit: 'Unit H', + city: 'Szczecin', + investment_number: 'INV-2025-008', + finish_date: '2025-05-15', + wp: 'WP-008', + contact: 'Katarzyna Wojcik, tel. 999-888-777', + notes: 'Multi-purpose sports stadium with seating for 20,000', + coordinates: '53.4289,14.5530', + project_type: 'design+construction', + project_status: 'fulfilled' + }, + { + contract_id: 1, + project_name: 'Library Complex Iota', + address: 'pl. Wiedzy 3', + plot: 'Plot 25/7', + district: 'Kulturalny', + unit: 'Unit I', + city: 'Lublin', + investment_number: 'INV-2025-009', + finish_date: '2025-08-25', + wp: 'WP-009', + contact: 'Prof. Andrzej Kowalewski, tel. 777-666-555', + notes: 'Modern library with digital archives and community spaces', + coordinates: '51.2465,22.5684', + project_type: 'design', + project_status: 'registered' + } +]; + +console.log('Creating sample test projects...\n'); + +sampleProjects.forEach((projectData, index) => { + try { + // Generate project number based on contract + const contractInfo = db.prepare('SELECT contract_number FROM contracts WHERE contract_id = ?').get(projectData.contract_id); + const existingProjects = db.prepare('SELECT COUNT(*) as count FROM projects WHERE contract_id = ?').get(projectData.contract_id); + const sequentialNumber = existingProjects.count + 1; + const projectNumber = `${sequentialNumber}/${contractInfo.contract_number}`; + + const result = db.prepare(` + INSERT INTO projects ( + contract_id, project_name, project_number, address, plot, district, unit, city, + investment_number, finish_date, wp, contact, notes, coordinates, + project_type, project_status, created_at, updated_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) + `).run( + projectData.contract_id, + projectData.project_name, + projectNumber, + projectData.address, + projectData.plot, + projectData.district, + projectData.unit, + projectData.city, + projectData.investment_number, + projectData.finish_date, + projectData.wp, + projectData.contact, + projectData.notes, + projectData.coordinates, + projectData.project_type, + projectData.project_status + ); + + console.log(`✓ Created project: ${projectData.project_name} (ID: ${result.lastInsertRowid}, Number: ${projectNumber})`); + + } catch (error) { + console.error(`✗ Error creating project ${projectData.project_name}:`, error.message); + } +}); + +console.log('\nSample test projects created successfully!');