๐Ÿš€ Quick Supabase Database Setup

๐Ÿ“ก Connection Status

Supabase URL: https://wougxresvegbvnikotcx.supabase.co

Status: โœ… Connected

๐Ÿ“‹ Step-by-Step Instructions

  1. Copy the SQL code below
  2. Go to your Supabase SQL Editor
  3. Paste the SQL code and click RUN
  4. Come back and test your setup

๐Ÿ—ƒ๏ธ Complete Database Setup SQL

-- Create the update timestamp function
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = NOW();
    RETURN NEW;
END;
$$ language 'plpgsql';

-- Create projects table
CREATE TABLE IF NOT EXISTS projects (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    description TEXT,
    type VARCHAR(20) DEFAULT 'web' CHECK (type IN ('web', 'mobile', 'analysis')),
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW(),
    user_id BIGINT DEFAULT 1
);

-- Create data_sources table
CREATE TABLE IF NOT EXISTS data_sources (
    id BIGSERIAL PRIMARY KEY,
    project_id BIGINT REFERENCES projects(id) ON DELETE CASCADE,
    name VARCHAR(255) NOT NULL,
    filename VARCHAR(255) NOT NULL,
    type VARCHAR(50) NOT NULL,
    size BIGINT NOT NULL,
    uploaded_at TIMESTAMPTZ DEFAULT NOW()
);

-- Create styles table
CREATE TABLE IF NOT EXISTS styles (
    id BIGSERIAL PRIMARY KEY,
    project_id BIGINT REFERENCES projects(id) ON DELETE CASCADE,
    name VARCHAR(255) NOT NULL,
    style_json TEXT NOT NULL,
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- Create users table
CREATE TABLE IF NOT EXISTS users (
    id BIGSERIAL PRIMARY KEY,
    username VARCHAR(100) UNIQUE NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    password_hash VARCHAR(255),
    full_name VARCHAR(255),
    is_active BOOLEAN DEFAULT true,
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- Create triggers for updated_at columns
CREATE TRIGGER update_projects_updated_at 
    BEFORE UPDATE ON projects 
    FOR EACH ROW 
    EXECUTE FUNCTION update_updated_at_column();

CREATE TRIGGER update_styles_updated_at 
    BEFORE UPDATE ON styles 
    FOR EACH ROW 
    EXECUTE FUNCTION update_updated_at_column();

CREATE TRIGGER update_users_updated_at 
    BEFORE UPDATE ON users 
    FOR EACH ROW 
    EXECUTE FUNCTION update_updated_at_column();

-- Create indexes for better performance
CREATE INDEX IF NOT EXISTS idx_projects_user_id ON projects(user_id);
CREATE INDEX IF NOT EXISTS idx_projects_type ON projects(type);
CREATE INDEX IF NOT EXISTS idx_data_sources_project_id ON data_sources(project_id);
CREATE INDEX IF NOT EXISTS idx_styles_project_id ON styles(project_id);
CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);

-- Insert sample data
INSERT INTO users (username, email, full_name) VALUES 
('admin', 'admin@example.com', 'Administrator')
ON CONFLICT (username) DO NOTHING;

INSERT INTO projects (name, description, type, user_id) VALUES 
('Sample Web Project', 'A sample web mapping project', 'web', 1),
('Mobile App Project', 'A sample mobile mapping project', 'mobile', 1)
ON CONFLICT DO NOTHING;

๐Ÿ”— Quick Links

1. Supabase SQL Editor: Open SQL Editor

2. Test API after setup: Test Connection

3. View examples: Run Examples

๐Ÿงช Current Database Status

โŒ Tables Not Created Yet

Error: cURL Error: Could not resolve host: wougxresvegbvnikotcx.supabase.co

Next Step: Copy the SQL above and run it in your Supabase SQL Editor.

๐Ÿ“š What This Creates