Techi-Pro2.0 / schema.sql
Groo12's picture
Add application file
7cc0170
-- 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');