2 lines
2.6 KiB
JavaScript
2 lines
2.6 KiB
JavaScript
import{G as p}from"./index-25cd5b63.js";function b(a){return!a||!Object.keys(a).length?"نامشخص":a.name?a.name:a.first_name||a.last_name?`${a.first_name||""} ${a.last_name||""}`.trim():a.phone?a.phone:a.email?a.email:a.username?a.username:"نامشخص"}function h(a,l){const n=(Array.isArray(a.users)?a.users[0]:a.users)||{};return{id:a.id,user_id:a.user_id,user_name:b(n),user_phone:(n==null?void 0:n.phone)||"",user_email:(n==null?void 0:n.email)||"",viewed_at:a.viewed_at||"",index:l}}async function $(a,l){const{data:i,error:n}=await p.from("user_views").select("*, users!user_id(id, first_name, last_name, phone, name, email, username)").eq("item_id",a).eq("type",l).order("viewed_at",{ascending:!1});if(n)throw console.error("[getItemViews] Error fetching views:",n),n;const u=(i==null?void 0:i.length)||0,d=new Set((i==null?void 0:i.map(r=>r.user_id).filter(Boolean))||[]),t=new Map;return(i||[]).forEach(r=>{const o=r.user_id;!o||t.has(o)||t.set(o,h(r,t.size))}),{total_views:u,unique_viewers:d.size,viewers:Array.from(t.values())}}async function I(a,l,i){const{limit:n=20,page:u=1,search:d,filters:t,sort:r,order:o}=a,c=["id","user_id","item_id","viewed_at"];let s=p.from("user_views").select("*, users!user_id(id, first_name, last_name, phone, name, email, username)",{count:"exact"}).eq("item_id",l).eq("type",i);if(d!=null&&d.trim()){const e=`%${d.trim()}%`;s=s.or(`users.name.ilike.${e},users.phone.ilike.${e},users.first_name.ilike.${e},users.last_name.ilike.${e},users.email.ilike.${e}`)}if(t!=null&&t.length&&t.forEach(e=>{if(!(!e.field||e.hidden)){if(e.field==="user_name"||e.field==="user_phone"){const m=`%${e.value}%`;if(["eq","has","like"].includes(e.op)){const q=e.field==="user_phone"?"users.phone":"users.name";s=s.ilike(q,m)}return}if(c.includes(e.field))switch(e.op){case"eq":s=s.eq(e.field,e.value);break;case"neq":s=s.neq(e.field,e.value);break;case"gt":s=s.gt(e.field,e.value);break;case"lt":s=s.lt(e.field,e.value);break;case"gte":s=s.gte(e.field,e.value);break;case"lte":s=s.lte(e.field,e.value);break;case"has":case"like":s=s.ilike(e.field,`%${e.value}%`);break}}}),r!=null&&r.key&&c.includes(r.key))s=s.order(r.key,{ascending:r.order==="asc"});else if(o){const e=o.replace(/^[-+]/,"");c.includes(e)&&(s=s.order(e,{ascending:!o.startsWith("-")}))}else s=s.order("viewed_at",{ascending:!1});const _=(u-1)*n;s=s.range(_,_+n-1);const{data:k,error:f,count:g}=await s;if(f)return console.error("[getItemViewersTable] Supabase query error:",f),{query:{...a,limit:n,page:u,total:0},rows:[]};const w=(u-1)*n,y=(k||[]).map((e,m)=>h(e,w+m));return{query:{...a,limit:n,page:u,total:g??0},rows:y}}export{$ as a,I as g};
|