feat: Add script to create sample projects with detailed information
This commit is contained in:
206
scripts/create-sample-projects.js
Normal file
206
scripts/create-sample-projects.js
Normal file
@@ -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!');
|
||||||
Reference in New Issue
Block a user