Files
route-commerce/supabase/migrations/.archived/XXX_roadmap_tables.sql
T
Nora 0ac4beaaa8 fix: react-doctor errors → 0 errors, 1649 warnings (46/100)
- Add requireAuth() to admin-permissions.ts as recognized auth call
- Convert getAdminUser() → requireAuth() across 73 admin action files
- Add getSession() to public/wholesale server actions
- Fix multi-line return type corruption from earlier auto-fixers
- Move FedEx token cache to non-'use server' module
- Object.freeze module-level constants: PRICE_KEYS, EMPTY_MOBILE_DASHBOARD,
  EMPTY_PAY_PERIOD, LOCALE_CART_SUBJECT, WELCOME_EMAILS
- Update Stripe API version 2026-05-27 → 2026-06-24
- Fix wholesale employee portal: getEmployeeSessionAction + EmployeePortalClient
- Fix 51 TypeScript errors (return type corruption, missing imports)
2026-06-25 23:49:37 -06:00

70 lines
3.4 KiB
SQL

-- Roadmap Tables for Feature Requests and Voting
-- Migration for Route Commerce
CREATE TABLE IF NOT EXISTS roadmap_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title TEXT NOT NULL,
description TEXT,
status TEXT DEFAULT 'planned' CHECK (status IN ('planned', 'in_progress', 'shipped')),
category TEXT,
upvotes INTEGER DEFAULT 0,
created_by TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS roadmap_votes (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
item_id UUID REFERENCES roadmap_items(id) ON DELETE CASCADE,
visitor_id TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(item_id, visitor_id)
);
-- Indexes
CREATE INDEX IF NOT EXISTS idx_roadmap_status ON roadmap_items(status);
CREATE INDEX IF NOT EXISTS idx_roadmap_category ON roadmap_items(category);
CREATE INDEX IF NOT EXISTS idx_roadmap_upvotes ON roadmap_items(upvotes DESC);
CREATE INDEX IF NOT EXISTS idx_roadmap_votes_item ON roadmap_votes(item_id);
-- Grant permissions
GRANT SELECT ON roadmap_items TO anon;
GRANT SELECT, INSERT ON roadmap_votes TO anon;
GRANT ALL ON roadmap_items TO authenticated;
GRANT ALL ON roadmap_votes TO authenticated;
GRANT ALL ON roadmap_items TO service_role;
GRANT ALL ON roadmap_votes TO service_role;
-- Seed some initial items
INSERT INTO roadmap_items (title, description, status, category, upvotes) VALUES
('Mobile App (iOS & Android)', 'Native apps for field workers and delivery drivers', 'in_progress', 'Mobile', 234),
('SMS Campaigns', 'Text message marketing and notifications', 'planned', 'Communication', 98),
('Route Optimization', 'AI-powered route planning for deliveries', 'planned', 'Logistics', 167),
('Customer Loyalty Program', 'Points, rewards, and referral tracking', 'planned', 'Marketing', 112),
('POS Integration (Clover, Toast)', 'Additional POS system integrations', 'planned', 'Integrations', 76)
ON CONFLICT DO NOTHING;
-- ============================================================
-- RLS for roadmap_items (added by scripts/fix-archived-rls.js)
-- Columns: id, title, description, status, category, upvotes, created_by, created_at, updated_at
-- ============================================================
-- RLS: roadmap_items is public-read; deny writes by default
ALTER TABLE roadmap_items ENABLE ROW LEVEL SECURITY;
ALTER TABLE roadmap_items FORCE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS public_read ON roadmap_items;
CREATE POLICY public_read ON roadmap_items FOR SELECT USING (true);
DROP POLICY IF EXISTS deny_write ON roadmap_items;
CREATE POLICY deny_write ON roadmap_items FOR INSERT WITH CHECK (false);
DROP POLICY IF EXISTS deny_update ON roadmap_items;
CREATE POLICY deny_update ON roadmap_items FOR UPDATE USING (false) WITH CHECK (false);
DROP POLICY IF EXISTS deny_delete ON roadmap_items;
CREATE POLICY deny_delete ON roadmap_items FOR DELETE USING (false);
-- ============================================================
-- RLS for roadmap_votes (added by scripts/fix-archived-rls.js)
-- Columns: id, item_id, visitor_id, created_at, visitor_id
-- ============================================================
ALTER TABLE roadmap_votes ENABLE ROW LEVEL SECURITY;
ALTER TABLE roadmap_votes FORCE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS deny_all ON roadmap_votes;
CREATE POLICY deny_all ON roadmap_votes FOR ALL USING (false) WITH CHECK (false);