Spaces:
Runtime error
Runtime error
| -- Enable PostGIS (run once) | |
| CREATE EXTENSION IF NOT EXISTS postgis; | |
| -- Create technicians table | |
| CREATE TABLE IF NOT EXISTS technicians ( | |
| id SERIAL PRIMARY KEY, | |
| name VARCHAR(100) NOT NULL, | |
| qualifications TEXT[] NOT NULL, | |
| location GEOGRAPHY(POINT) NOT NULL, | |
| availability VARCHAR(20) DEFAULT 'available', | |
| rating FLOAT DEFAULT 5.0, | |
| contact VARCHAR(50) NOT NULL | |
| ); | |
| -- Create index for geospatial queries | |
| CREATE INDEX IF NOT EXISTS technicians_location_idx ON technicians USING GIST (location); | |
| -- Insert sample technician | |
| INSERT INTO technicians (name, qualifications, location, availability, rating, contact) | |
| VALUES ( | |
| 'John Doe', | |
| ARRAY['plumbing', 'electrical'], | |
| ST_SetSRID(ST_MakePoint(36.8219, -1.2921), 4326), | |
| 'available', | |
| 4.8, | |
| 'whatsapp:+254123456789' | |
| ); | |
| -- Create users table for session tracking | |
| CREATE TABLE IF NOT EXISTS users ( | |
| number VARCHAR(50) PRIMARY KEY, | |
| last_message TEXT, | |
| state VARCHAR(50), | |
| updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP | |
| ); | |
| -- Create requests table for feedback collection | |
| CREATE TABLE IF NOT EXISTS requests ( | |
| id SERIAL PRIMARY KEY, | |
| user_number VARCHAR(50), | |
| technician_id INT, | |
| service_type VARCHAR(50), | |
| status VARCHAR(20), | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| FOREIGN KEY (technician_id) REFERENCES technicians(id) | |
| ); | |
| -- Check if technicians exist | |
| SELECT * FROM technicians; | |
| -- If empty, insert sample data: | |
| INSERT INTO technicians (name, qualifications, location, contact) | |
| VALUES ( | |
| 'John Doe', | |
| ARRAY['hvac', 'electrical'], | |
| ST_SetSRID(ST_MakePoint(36.8219, -1.2921), 4326), -- Nairobi coords | |
| '+254712345678' | |
| ); | |
| INSERT INTO technicians (name, qualifications, location, contact) VALUES | |
| ('AC Specialist', ARRAY['hvac'], ST_MakePoint(36.81, -1.29), '+254700000001'), | |
| ('Plumber Ltd', ARRAY['plumbing'], ST_MakePoint(36.82, -1.30), '+254700000002'); | |