1import{$ as i,T as o,V as u,s as n,b5 as c}from"./index-C__lnp80.js";const d=()=>i({queryKey:["user-campaigns"],queryFn:async()=>{const{data:e,error:a}=await n.from("ad_campaigns").select("*, darks(name, slug)").order("created_at",{ascending:!1});if(a)throw a;return e}}),p=e=>i({queryKey:["active-campaigns",e],queryFn:async()=>{let a=n.from("ad_campaigns").select("*").eq("status","active").lte("start_date",new Date().toISOString());a=a.is("dark_id",null);const{data:r,error:s}=await a;if(s)throw s;return r}}),l=()=>{const e=o();return u({mutationFn:async a=>{const{data:{user:r}}=await n.auth.getUser();if(!r)throw new Error("No autenticado");const{data:s,error:t}=await n.from("ad_campaigns").insert([{...a,advertiser_id:r.id}]).select().single();if(t)throw t;return s},onSuccess:()=>{e.invalidateQueries({queryKey:["user-campaigns"]}),c.success("Campaña creada exitosamente")},onError:a=>{c.error("Error al crear campaña: "+a.message)}})},g=()=>{const e=o();return u({mutationFn:async({id:a,...r})=>{const{data:s,error:t}=await n.from("ad_campaigns").update(r).eq("id",a).select().single();if(t)throw t;return s},onSuccess:()=>{e.invalidateQueries({queryKey:["user-campaigns"]}),c.success("Campaña actualizada")},onError:a=>{c.error("Error al actualizar campaña: "+a.message)}})},y=e=>i({queryKey:["campaign-metrics",e],queryFn:async()=>{const{data:a,error:r}=await n.from("ad_campaigns").select("impressions_count, clicks_count, spent, budget").eq("id",e).single();if(r)throw r;const s=a.impressions_count>0?a.clicks_count/a.impressions_count*100:0,t=a.clicks_count>0?a.spent/a.clicks_count:0;return{...a,ctr:s,cpc:t}}});export{d as a,l as b,g as c,y as d,p as u};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.