Databaskonfiguration

Kristinephone - Supabase Setup

Setup-instruktioner

Följ dessa steg för att initiera databasen:

Steg 1: Skapa Tabeller

Gå till Supabase SQL Editor, klistra in denna SQL och klicka Run:

-- Create Products table
CREATE TABLE IF NOT EXISTS products (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  category TEXT NOT NULL,
  price DECIMAL(10, 2) NOT NULL,
  description TEXT,
  image_url TEXT,
  stock_quantity INTEGER DEFAULT 0,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Create Orders table
CREATE TABLE IF NOT EXISTS orders (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  product_id UUID NOT NULL REFERENCES products(id) ON DELETE CASCADE,
  customer_name TEXT NOT NULL,
  customer_email TEXT NOT NULL,
  customer_phone TEXT NOT NULL,
  quantity INTEGER NOT NULL,
  total_price DECIMAL(10, 2) NOT NULL,
  status TEXT DEFAULT 'pending',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Create Contact Requests table
CREATE TABLE IF NOT EXISTS contact_requests (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  email TEXT NOT NULL,
  phone TEXT,
  message TEXT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Create Repair Requests table
CREATE TABLE IF NOT EXISTS repair_requests (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  email TEXT NOT NULL,
  phone TEXT NOT NULL,
  device_type TEXT NOT NULL,
  description TEXT NOT NULL,
  status TEXT DEFAULT 'pending',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Create Admin Users table
CREATE TABLE IF NOT EXISTS admin_users (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  email TEXT UNIQUE NOT NULL,
  password_hash TEXT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Enable Row Level Security
ALTER TABLE products ENABLE ROW LEVEL SECURITY;
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
ALTER TABLE contact_requests ENABLE ROW LEVEL SECURITY;
ALTER TABLE repair_requests ENABLE ROW LEVEL SECURITY;
ALTER TABLE admin_users ENABLE ROW LEVEL SECURITY;

-- RLS Policies for Products (public read, admin write)
CREATE POLICY "products_select_public" ON products FOR SELECT USING (true);
CREATE POLICY "products_insert_admin" ON products FOR INSERT WITH CHECK (true);
CREATE POLICY "products_update_admin" ON products FOR UPDATE USING (true);
CREATE POLICY "products_delete_admin" ON products FOR DELETE USING (true);

-- RLS Policies for Orders (public insert, admin read)
CREATE POLICY "orders_insert_public" ON orders FOR INSERT WITH CHECK (true);
CREATE POLICY "orders_select_admin" ON orders FOR SELECT USING (true);

-- RLS Policies for Contact Requests
CREATE POLICY "contact_requests_insert_public" ON contact_requests FOR INSERT WITH CHECK (true);
CREATE POLICY "contact_requests_select_admin" ON contact_requests FOR SELECT USING (true);

-- RLS Policies for Repair Requests
CREATE POLICY "repair_requests_insert_public" ON repair_requests FOR INSERT WITH CHECK (true);
CREATE POLICY "repair_requests_select_admin" ON repair_requests FOR SELECT USING (true);

-- RLS Policies for Admin Users
CREATE POLICY "admin_users_select_self" ON admin_users FOR SELECT USING (true);

Steg 2: Lägg Till Produkter

Efter Steg 1, klistra in denna SQL i samma SQL Editor och klicka Run:

-- Seed initial products for Kristinephone
INSERT INTO products (name, description, price, category, image_url, stock_quantity) VALUES
('iPhone 15 Pro Max', 'Senaste iPhone-modellen med titanramdesign, A17 Pro-chip och fantastisk kamera', 14995.00, 'Telefon', '/iphone-15-pro.png', 5),
('Samsung Galaxy S24 Ultra', 'Flaggskeppet från Samsung med S Pen, kraftfull prestanda och enastående skärm', 13995.00, 'Telefon', '/samsung-galaxy-s24.png', 3),
('MacBook Air M3', 'Ultratunna laptopen med Apple M3-chip, perfekt för arbete och studier', 15995.00, 'Dator', '/macbook-air-m3.jpg', 2),
('iPad Pro 12.9"', 'Professionell surfplatta med M2-chip och fantastisk Liquid Retina XDR-skärm', 12995.00, 'Surfplatta', '/ipad-pro.png', 4),
('iPhone 13', 'Pålitlig iPhone med utmärkt kamera och prestanda', 7995.00, 'Telefon', '/iphone-15-pro.png', 8),
('Samsung Galaxy Tab S9', 'Premium Android-surfplatta med AMOLED-skärm och S Pen', 6995.00, 'Surfplatta', '/samsung-galaxy-s24.png', 3),
('AirPods Pro 2', 'Trådlösa hörlurar med brusreducering och fantastiskt ljud', 2795.00, 'Tillbehör', '/placeholder.svg', 10),
('Dell XPS 15', 'Kraftfull Windows-laptop för krävande arbete', 18995.00, 'Dator', '/placeholder.svg', 2);

Steg 3: Verifiera Initialisering

Klicka knappen nedan för att verifiera att databasen är initialiserad: