| CREATE TABLE users ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| name VARCHAR(255) NOT NULL, | |
| email VARCHAR(255) UNIQUE NOT NULL, | |
| password_hash VARCHAR(255), | |
| phone VARCHAR(50) DEFAULT '', | |
| avatar VARCHAR(500) DEFAULT '', | |
| address TEXT DEFAULT '', | |
| role VARCHAR(20) NOT NULL DEFAULT 'user' CHECK (role IN ('user', 'worker')), | |
| google_id VARCHAR(255) UNIQUE, | |
| is_verified BOOLEAN NOT NULL DEFAULT false, | |
| push_token VARCHAR(500), | |
| expo_push_token VARCHAR(500), | |
| dark_mode BOOLEAN NOT NULL DEFAULT false, | |
| location GEOGRAPHY(Point, 4326), | |
| created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), | |
| updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() | |
| ); | |
| CREATE INDEX idx_users_email ON users (email); | |
| CREATE INDEX idx_users_google_id ON users (google_id); | |
| CREATE INDEX idx_users_location ON users USING GIST (location); | |