nordabiz/database/migrations/024_add_benefits_tables.sql
Maciej Pienczyn 5fd5140763
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
feat: Add member benefits module with WisprFlow affiliate
- Add Benefit and BenefitClick models for tracking affiliate offers
- Create /korzysci blueprint with admin-only access (test mode)
- Add admin panel at /admin/benefits for managing offers
- Include WisprFlow as first benefit with branded link ref.wisprflow.ai/norda
- Add QR code support for printed materials
- Track clicks with user attribution and analytics

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 22:26:44 +01:00

99 lines
2.9 KiB
SQL

-- Migration: Add benefits tables for member affiliate offers
-- Date: 2026-02-02
-- Author: Claude
-- Create benefits table
CREATE TABLE IF NOT EXISTS benefits (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
slug VARCHAR(100) UNIQUE NOT NULL,
short_description VARCHAR(200),
description TEXT,
category VARCHAR(50),
regular_price VARCHAR(50),
member_price VARCHAR(50),
discount_description VARCHAR(100),
affiliate_url VARCHAR(500),
product_url VARCHAR(500),
logo_url VARCHAR(500),
promo_code VARCHAR(50),
promo_code_instructions TEXT,
commission_rate VARCHAR(50),
commission_duration VARCHAR(50),
partner_platform VARCHAR(100),
partner_since DATE,
is_featured BOOLEAN DEFAULT FALSE,
is_active BOOLEAN DEFAULT TRUE,
display_order INTEGER DEFAULT 0,
click_count INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create benefit_clicks table for tracking
CREATE TABLE IF NOT EXISTS benefit_clicks (
id SERIAL PRIMARY KEY,
benefit_id INTEGER NOT NULL REFERENCES benefits(id) ON DELETE CASCADE,
user_id INTEGER REFERENCES users(id) ON DELETE SET NULL,
clicked_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ip_address VARCHAR(45),
user_agent VARCHAR(500)
);
-- Create index for benefit_clicks
CREATE INDEX IF NOT EXISTS idx_benefit_clicks_benefit_id ON benefit_clicks(benefit_id);
CREATE INDEX IF NOT EXISTS idx_benefit_clicks_clicked_at ON benefit_clicks(clicked_at);
-- Grant permissions
GRANT ALL ON TABLE benefits TO nordabiz_app;
GRANT ALL ON TABLE benefit_clicks TO nordabiz_app;
GRANT USAGE, SELECT ON SEQUENCE benefits_id_seq TO nordabiz_app;
GRANT USAGE, SELECT ON SEQUENCE benefit_clicks_id_seq TO nordabiz_app;
-- Insert WisprFlow as first benefit
INSERT INTO benefits (
name,
slug,
short_description,
description,
category,
regular_price,
member_price,
affiliate_url,
product_url,
commission_rate,
commission_duration,
partner_platform,
partner_since,
is_featured,
is_active,
display_order
) VALUES (
'WisprFlow',
'wispr-flow',
'AI do transkrypcji i notatek ze spotkań. Oszczędź czas na notowaniu.',
'WisprFlow to narzędzie AI, które automatycznie transkrybuje Twoje spotkania i tworzy inteligentne notatki. Idealne dla przedsiębiorców, którzy chcą skupić się na rozmowie zamiast na pisaniu notatek.
Funkcje:
- Automatyczna transkrypcja w czasie rzeczywistym
- Inteligentne podsumowania spotkań
- Wyciąganie kluczowych punktów i zadań
- Integracja z kalendarzem
- Wsparcie dla języka polskiego',
'productivity',
'$10/mies',
'$8.50/mies (plan roczny)',
'https://ref.wisprflow.ai/norda',
'https://wisprflow.ai',
'25%',
'12 miesięcy',
'Dub Partners',
'2026-02-02',
TRUE,
TRUE,
1
) ON CONFLICT (slug) DO NOTHING;
-- Verification
SELECT id, name, slug, is_active FROM benefits;