185 lines
6.7 KiB
PL/PgSQL
185 lines
6.7 KiB
PL/PgSQL
-- =============================================================================
|
|
-- SEED 013 — Subscriptions + Determined Commitments
|
|
-- =============================================================================
|
|
-- Execute APÓS: seed_010 (plans), seed_011 (features), seed_012 (plan_features)
|
|
-- E APÓS: seed_001, seed_002, seed_003 (usuários e tenants)
|
|
--
|
|
-- Cria subscriptions para todos os usuários de teste e chama
|
|
-- seed_determined_commitments() para tenants que ainda não têm.
|
|
--
|
|
-- Mapeamento:
|
|
-- paciente@ (user_id) → patient_free
|
|
-- terapeuta@ (user_id) → therapist_free
|
|
-- clinica1@ (tenant_id) → clinic_free (coworking)
|
|
-- clinica2@ (tenant_id) → clinic_free (recepção)
|
|
-- clinica3@ (tenant_id) → clinic_free (full)
|
|
-- supervisor@ (user_id) → supervisor_free
|
|
-- editor@ (user_id) → therapist_free (acesso via platform_roles)
|
|
-- therapist2@ (user_id) → therapist_free
|
|
-- therapist3@ (user_id) → therapist_free
|
|
-- secretary@ → sem plano próprio (usa plano da Clínica 2)
|
|
-- saas@ → saas_admin (sem plano)
|
|
-- =============================================================================
|
|
|
|
BEGIN;
|
|
|
|
-- Limpa subscriptions de seed anteriores
|
|
DELETE FROM public.subscriptions WHERE source = 'seed';
|
|
|
|
-- ============================================================
|
|
-- 1. Subscriptions — user_id scope (therapist, patient, supervisor)
|
|
-- ============================================================
|
|
|
|
-- Paciente → patient_free
|
|
INSERT INTO public.subscriptions (
|
|
user_id, plan_id, plan_key, status, "interval",
|
|
current_period_start, current_period_end,
|
|
source, started_at, activated_at
|
|
)
|
|
SELECT
|
|
'aaaaaaaa-0001-0001-0001-000000000001',
|
|
p.id, p.key, 'active', 'month',
|
|
now(), now() + interval '1 year',
|
|
'seed', now(), now()
|
|
FROM public.plans p WHERE p.key = 'patient_free';
|
|
|
|
-- Terapeuta → therapist_free
|
|
INSERT INTO public.subscriptions (
|
|
user_id, plan_id, plan_key, status, "interval",
|
|
current_period_start, current_period_end,
|
|
source, started_at, activated_at
|
|
)
|
|
SELECT
|
|
'aaaaaaaa-0002-0002-0002-000000000002',
|
|
p.id, p.key, 'active', 'month',
|
|
now(), now() + interval '1 year',
|
|
'seed', now(), now()
|
|
FROM public.plans p WHERE p.key = 'therapist_free';
|
|
|
|
-- Supervisor → supervisor_free
|
|
INSERT INTO public.subscriptions (
|
|
user_id, plan_id, plan_key, status, "interval",
|
|
current_period_start, current_period_end,
|
|
source, started_at, activated_at
|
|
)
|
|
SELECT
|
|
'aaaaaaaa-0007-0007-0007-000000000007',
|
|
p.id, p.key, 'active', 'month',
|
|
now(), now() + interval '1 year',
|
|
'seed', now(), now()
|
|
FROM public.plans p WHERE p.key = 'supervisor_free';
|
|
|
|
-- Editor → therapist_free (acesso editor vem de platform_roles)
|
|
INSERT INTO public.subscriptions (
|
|
user_id, plan_id, plan_key, status, "interval",
|
|
current_period_start, current_period_end,
|
|
source, started_at, activated_at
|
|
)
|
|
SELECT
|
|
'aaaaaaaa-0008-0008-0008-000000000008',
|
|
p.id, p.key, 'active', 'month',
|
|
now(), now() + interval '1 year',
|
|
'seed', now(), now()
|
|
FROM public.plans p WHERE p.key = 'therapist_free';
|
|
|
|
-- Terapeuta 2 → therapist_free
|
|
INSERT INTO public.subscriptions (
|
|
user_id, plan_id, plan_key, status, "interval",
|
|
current_period_start, current_period_end,
|
|
source, started_at, activated_at
|
|
)
|
|
SELECT
|
|
'aaaaaaaa-0009-0009-0009-000000000009',
|
|
p.id, p.key, 'active', 'month',
|
|
now(), now() + interval '1 year',
|
|
'seed', now(), now()
|
|
FROM public.plans p WHERE p.key = 'therapist_free';
|
|
|
|
-- Terapeuta 3 → therapist_free
|
|
INSERT INTO public.subscriptions (
|
|
user_id, plan_id, plan_key, status, "interval",
|
|
current_period_start, current_period_end,
|
|
source, started_at, activated_at
|
|
)
|
|
SELECT
|
|
'aaaaaaaa-0010-0010-0010-000000000010',
|
|
p.id, p.key, 'active', 'month',
|
|
now(), now() + interval '1 year',
|
|
'seed', now(), now()
|
|
FROM public.plans p WHERE p.key = 'therapist_free';
|
|
|
|
|
|
-- ============================================================
|
|
-- 2. Subscriptions — tenant_id scope (clinic)
|
|
-- ============================================================
|
|
|
|
-- Clínica 1 (Espaço Psi / Coworking) → clinic_free
|
|
INSERT INTO public.subscriptions (
|
|
tenant_id, plan_id, plan_key, status, "interval",
|
|
current_period_start, current_period_end,
|
|
source, started_at, activated_at
|
|
)
|
|
SELECT
|
|
'bbbbbbbb-0003-0003-0003-000000000003',
|
|
p.id, p.key, 'active', 'month',
|
|
now(), now() + interval '1 year',
|
|
'seed', now(), now()
|
|
FROM public.plans p WHERE p.key = 'clinic_free';
|
|
|
|
-- Clínica 2 (Mente sã / Recepção) → clinic_free
|
|
INSERT INTO public.subscriptions (
|
|
tenant_id, plan_id, plan_key, status, "interval",
|
|
current_period_start, current_period_end,
|
|
source, started_at, activated_at
|
|
)
|
|
SELECT
|
|
'bbbbbbbb-0004-0004-0004-000000000004',
|
|
p.id, p.key, 'active', 'month',
|
|
now(), now() + interval '1 year',
|
|
'seed', now(), now()
|
|
FROM public.plans p WHERE p.key = 'clinic_free';
|
|
|
|
-- Clínica 3 (Bem Estar / Full) → clinic_free
|
|
INSERT INTO public.subscriptions (
|
|
tenant_id, plan_id, plan_key, status, "interval",
|
|
current_period_start, current_period_end,
|
|
source, started_at, activated_at
|
|
)
|
|
SELECT
|
|
'bbbbbbbb-0005-0005-0005-000000000005',
|
|
p.id, p.key, 'active', 'month',
|
|
now(), now() + interval '1 year',
|
|
'seed', now(), now()
|
|
FROM public.plans p WHERE p.key = 'clinic_free';
|
|
|
|
|
|
-- ============================================================
|
|
-- 3. Determined Commitments (idempotente por design da função)
|
|
-- ============================================================
|
|
-- Chama para todos os tenants. A função usa ON CONFLICT internamente.
|
|
|
|
DO $$ BEGIN PERFORM public.seed_determined_commitments('bbbbbbbb-0002-0002-0002-000000000002'); END $$; -- Terapeuta
|
|
DO $$ BEGIN PERFORM public.seed_determined_commitments('bbbbbbbb-0003-0003-0003-000000000003'); END $$; -- Clínica 1
|
|
DO $$ BEGIN PERFORM public.seed_determined_commitments('bbbbbbbb-0004-0004-0004-000000000004'); END $$; -- Clínica 2
|
|
DO $$ BEGIN PERFORM public.seed_determined_commitments('bbbbbbbb-0005-0005-0005-000000000005'); END $$; -- Clínica 3
|
|
DO $$ BEGIN PERFORM public.seed_determined_commitments('bbbbbbbb-0009-0009-0009-000000000009'); END $$; -- Terapeuta 2
|
|
DO $$ BEGIN PERFORM public.seed_determined_commitments('bbbbbbbb-0010-0010-0010-000000000010'); END $$; -- Terapeuta 3
|
|
|
|
|
|
-- ============================================================
|
|
-- 4. Confirma
|
|
-- ============================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
v_count integer;
|
|
BEGIN
|
|
SELECT count(*) INTO v_count FROM public.subscriptions WHERE source = 'seed';
|
|
RAISE NOTICE 'seed_013_subscriptions: % subscriptions ativas criadas.', v_count;
|
|
SELECT count(*) INTO v_count FROM public.determined_commitments WHERE is_native = true;
|
|
RAISE NOTICE 'seed_013_subscriptions: % determined_commitments nativos existentes.', v_count;
|
|
END;
|
|
$$;
|
|
|
|
COMMIT;
|