ALTER TABLE "plan_suscripcion" ADD COLUMN "incluye_publicidad" boolean DEFAULT false NOT NULL;--> statement-breakpoint ALTER TABLE "plan_suscripcion" ADD COLUMN "calidad_escucha" text DEFAULT 'media' NOT NULL;--> statement-breakpoint ALTER TABLE "plan_suscripcion" ADD COLUMN "descargas_incluidas" integer DEFAULT 0 NOT NULL;--> statement-breakpoint ALTER TABLE "plan_suscripcion" ADD COLUMN "calidad_descarga" text;--> statement-breakpoint ALTER TABLE "plan_suscripcion" ADD COLUMN "acceso_versiones" boolean DEFAULT false NOT NULL;--> statement-breakpoint ALTER TABLE "plan_suscripcion" ADD CONSTRAINT "plan_suscripcion_calidad_escucha_conocida" CHECK ("plan_suscripcion"."calidad_escucha" in ('media', 'alta'));--> statement-breakpoint ALTER TABLE "plan_suscripcion" ADD CONSTRAINT "plan_suscripcion_calidad_descarga_conocida" CHECK ("plan_suscripcion"."calidad_descarga" is null or "plan_suscripcion"."calidad_descarga" in ('media', 'alta'));--> statement-breakpoint ALTER TABLE "plan_suscripcion" ADD CONSTRAINT "plan_suscripcion_descargas_no_negativas" CHECK ("plan_suscripcion"."descargas_incluidas" >= 0);--> statement-breakpoint ALTER TABLE "plan_suscripcion" ADD CONSTRAINT "plan_suscripcion_calidad_solo_con_descargas" CHECK ("plan_suscripcion"."descargas_incluidas" > 0 or "plan_suscripcion"."calidad_descarga" is null); --> statement-breakpoint INSERT INTO "plan_suscripcion" ( "id", "codigo", "nombre", "nivel", "precio_centimos", "moneda", "periodicidad", "intervalos", "incluye_publicidad", "calidad_escucha", "descargas_incluidas", "calidad_descarga", "acceso_versiones", "prestaciones", "estado" ) VALUES ('09224788-1924-4401-aea2-e2494ebc3802', 'follower', 'Follower', 1, 0, 'eur', 'ano', 1, true, 'media', 0, null, false, '[]'::jsonb, 'disponible'), ('9e6aa2c3-0474-4712-8153-225f6a05af5a', 'friend', 'Friend', 2, 550, 'eur', 'ano', 1, false, 'alta', 30, 'media', false, '[]'::jsonb, 'disponible'), ('2570efc6-a739-40cf-88bd-b006e9654dd0', 'vip', 'VIP', 3, 990, 'eur', 'ano', 1, false, 'alta', 100, null, true, '[]'::jsonb, 'disponible') ON CONFLICT ("codigo") DO UPDATE SET "nombre" = EXCLUDED."nombre", "nivel" = EXCLUDED."nivel", "precio_centimos" = EXCLUDED."precio_centimos", "moneda" = EXCLUDED."moneda", "periodicidad" = EXCLUDED."periodicidad", "intervalos" = EXCLUDED."intervalos", "incluye_publicidad" = EXCLUDED."incluye_publicidad", "calidad_escucha" = EXCLUDED."calidad_escucha", "descargas_incluidas" = EXCLUDED."descargas_incluidas", "calidad_descarga" = EXCLUDED."calidad_descarga", "acceso_versiones" = EXCLUDED."acceso_versiones", "prestaciones" = EXCLUDED."prestaciones", "estado" = EXCLUDED."estado", "actualizado_en" = now();