-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_analytics_tables.sql
More file actions
57 lines (47 loc) · 1.94 KB
/
Copy pathsetup_analytics_tables.sql
File metadata and controls
57 lines (47 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
-- ============================================
-- SETUP ANALYTICS TABLES
-- ============================================
-- 1. Create document_access_sessions table
CREATE TABLE IF NOT EXISTS document_access_sessions (
session_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
document_id UUID REFERENCES documents(id) ON DELETE CASCADE,
started_at TIMESTAMPTZ DEFAULT NOW(),
user_agent TEXT,
ip_address TEXT,
geolocation JSONB
);
-- 2. Create document_view_tracking table
CREATE TABLE IF NOT EXISTS document_view_tracking (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
session_id UUID REFERENCES document_access_sessions(session_id) ON DELETE CASCADE,
document_id UUID REFERENCES documents(id) ON DELETE CASCADE,
view_timestamp TIMESTAMPTZ DEFAULT NOW(),
page_number INTEGER DEFAULT 1,
duration_seconds INTEGER DEFAULT 0,
ip_address TEXT
);
-- 3. Enable RLS
ALTER TABLE document_access_sessions ENABLE ROW LEVEL SECURITY;
ALTER TABLE document_view_tracking ENABLE ROW LEVEL SECURITY;
-- 4. Create Policies (Allow Public Insert/Select for Analytics)
-- document_access_sessions policies
CREATE POLICY "Public can insert sessions"
ON document_access_sessions FOR INSERT
WITH CHECK (true);
CREATE POLICY "Public can select sessions"
ON document_access_sessions FOR SELECT
USING (true);
-- document_view_tracking policies
CREATE POLICY "Public can insert tracking"
ON document_view_tracking FOR INSERT
WITH CHECK (true);
CREATE POLICY "Public can update tracking"
ON document_view_tracking FOR UPDATE
USING (true);
CREATE POLICY "Public can select tracking"
ON document_view_tracking FOR SELECT
USING (true);
-- 5. Create Indexes for Performance
CREATE INDEX IF NOT EXISTS idx_analytics_doc_id ON document_access_sessions(document_id);
CREATE INDEX IF NOT EXISTS idx_tracking_doc_id ON document_view_tracking(document_id);
CREATE INDEX IF NOT EXISTS idx_tracking_session_id ON document_view_tracking(session_id);