29 lines
1 KiB
SQL
29 lines
1 KiB
SQL
-- Step 1: Recreate search_cache table based on new robust spec
|
|
DROP TABLE IF EXISTS search_cache;
|
|
|
|
CREATE TABLE search_cache (
|
|
query_key TEXT PRIMARY KEY, -- sha256(kind + "|" + query_norm)
|
|
query_raw TEXT NOT NULL,
|
|
query_norm TEXT NOT NULL,
|
|
kind TEXT NOT NULL CHECK (kind IN ('products', 'opportunities')),
|
|
results JSONB DEFAULT '[]'::jsonb,
|
|
sources JSONB DEFAULT '[]'::jsonb,
|
|
fetched_at TIMESTAMPTZ DEFAULT NOW(),
|
|
expires_at TIMESTAMPTZ NOT NULL
|
|
);
|
|
|
|
-- Indexes for performance
|
|
CREATE INDEX idx_search_cache_query_norm ON search_cache(query_norm);
|
|
CREATE INDEX idx_search_cache_expires_at ON search_cache(expires_at);
|
|
|
|
-- RLS Policy (Open for backend/service role, read-only for anon if needed, but mainly managed by function)
|
|
ALTER TABLE search_cache ENABLE ROW LEVEL SECURITY;
|
|
|
|
CREATE POLICY "Enable read/write for service role" ON search_cache
|
|
USING (true)
|
|
WITH CHECK (true);
|
|
|
|
CREATE POLICY "Enable read for authenticated users" ON search_cache
|
|
FOR SELECT
|
|
TO authenticated
|
|
USING (true);
|