2 lines
6.8 KiB
JavaScript
2 lines
6.8 KiB
JavaScript
import{a3 as v,a5 as f}from"./index-a9671513.js";async function j(){const{data:t,error:i}=await f.from("matchs").select("*");if(i)throw i;return t}async function V(t,i){const{data:a,error:c}=await f.from("matchs").update(i).eq("id",t).select();if(c)throw c;return a}async function B(t){const{data:i,error:a}=await f.from("matchs").select("*").eq("id",t).single();if(a)throw a;const{data:c,error:n}=await f.from("questions").select("*").eq("match_id",t);if(n)throw n;return{...i,questions:c||[]}}async function P(t){console.log("addMatchWithQuestions payload:",t);const{data:i,error:a}=await f.from("matchs").insert([t.match]).select().single();if(console.log("Match insert result:",{matchData:i,matchError:a}),a)throw console.error("Match insert error:",a),a;for(const c of t.questions){const{data:n,error:l}=await f.from("questions").insert([{match_id:i.id,question:c.question,options:c.options,correct_answer:c.correct_answer}]).select().single();if(l)throw l;console.log("Question created:",n)}return i}async function R(t,i){const{error:a}=await f.from("matchs").update(i.match).eq("id",t);if(a)throw a;const{data:c}=await f.from("questions").select("id").eq("match_id",t);if(c)for(const n of c)await f.from("questions").delete().eq("id",n.id);for(const n of i.questions){const{data:l,error:o}=await f.from("questions").insert([{match_id:t,question:n.question,options:n.options,correct_answer:n.correct_answer}]).select().single();if(o)throw o;console.log("Question updated:",l)}return{id:t}}async function U(t){await f.from("questions").delete().eq("match_id",t);const{error:i}=await f.from("matchs").delete().eq("id",t);if(i)throw i}async function A(t){const{TableEngineRequest:i}=await v(()=>import("./buildSupabaseQuery-895aec07.js"),["assets/buildSupabaseQuery-895aec07.js","assets/index-a9671513.js","assets/index-6c22dd25.css"]),a={...t};!a.sort&&!a.order&&(a.order="-id");const c=await i(a,"matchs");try{if(Array.isArray(c==null?void 0:c.rows)){const n=a.page||1,l=a.limit||200,o=(n-1)*l,h=c.rows.map((u,g)=>({id:u.id,title:u.title??"",description:u.description??"",created_at:u.created_at??"",index:o+g,...u}));return{...c,rows:h}}}catch(n){console.log("[getMatchTable] normalize error:",n)}return c}async function K(t){var i,a,c,n,l;try{const{data:o,error:h}=await f.from("answers").select("*");if(h)throw h;if(!o||o.length===0)return{rows:[],total:0,query:{...t,total:0}};const u=[...new Set(o.map(e=>e.match_id).filter(Boolean))],{data:g,error:q}=await f.from("matchs").select("*").in("id",u);if(q)throw q;const L=[...new Set(o.map(e=>e.user_id).filter(Boolean))];let b=[],z=new Map;if(L.length>0){const{data:e,error:s}=await f.from("users").select("*").in("id",L);!s&&e?b=e:s&&console.error("[getWinnersTable] Error fetching users:",s)}const W=new Map((g||[]).map(e=>[e.id,e])),m=new Map;b.forEach(e=>{const s=e.id;if(m.set(s,e),m.set(String(s),e),typeof s=="string"){const r=s.toLowerCase().replace(/-/g,"");m.set(r,e),s.includes("-")&&(m.set(s.replace(/-/g,""),e),m.set(s.replace(/-/g,"").toLowerCase(),e))}});let w=o.filter(e=>{const s=W.get(e.match_id);if(!s)return!1;const r=s.minimum_score?Number(s.minimum_score):0;return(e.score?Number(e.score):0)>=r}).map(e=>{const s=W.get(e.match_id)||{};let r={};if(e.user_id){const p=e.user_id,_=String(p),E=_.toLowerCase();if(r=m.get(p)||m.get(_)||{},(!r||Object.keys(r).length===0)&&(r=m.get(E)||{}),(!r||Object.keys(r).length===0)&&_.includes("-")){const S=_.replace(/-/g,"");r=m.get(S)||m.get(S.toLowerCase())||{}}(!r||Object.keys(r).length===0)&&(r=b.find(S=>{const D=String(S.id||"").toLowerCase(),N=E;return D===N||D.replace(/-/g,"")===N.replace(/-/g,"")})||{})}let d="نامشخص";return r&&Object.keys(r).length>0&&(r.name?d=r.name:r.phone?d=r.phone:r.email?d=r.email:r.username&&(d=r.username)),{id:e.id,match_id:e.match_id,user_id:e.user_id,score:e.score,match_title:s.title||"",match_description:s.description||"",user_name:d,user_mobile:(r==null?void 0:r.phone)||"",created_at:e.created_at||""}});if(t.search){const e=t.search.toLowerCase();w=w.filter(s=>(s.match_title||"").toLowerCase().includes(e)||(s.match_description||"").toLowerCase().includes(e)||(s.user_name||"").toLowerCase().includes(e)||(s.user_mobile||"").toLowerCase().includes(e)||String(s.score||"").includes(e))}t.filters&&t.filters.length>0&&(w=w.filter(e=>t.filters.every(s=>{if(!s.field||s.hidden)return!0;const r=e[s.field],d=s.value;if(d==null||d==="")return!0;switch(s.op){case"eq":return String(r)===String(d);case"neq":return String(r)!==String(d);case"gt":return Number(r)>Number(d);case"gte":return Number(r)>=Number(d);case"lt":return Number(r)<Number(d);case"lte":return Number(r)<=Number(d);case"has":case"like":return String(r||"").toLowerCase().includes(String(d).toLowerCase());case"sw":return String(r||"").toLowerCase().startsWith(String(d).toLowerCase());case"ew":return String(r||"").toLowerCase().endsWith(String(d).toLowerCase());default:return!0}})));let y=[...w];if(t.sort||t.order){const e=((i=t.sort)==null?void 0:i.key)||((a=t.order)!=null&&a.startsWith("-")||(c=t.order)!=null&&c.startsWith("+")?t.order.slice(1):t.order)||"created_at",s=((n=t.sort)==null?void 0:n.order)==="asc"||((l=t.order)==null?void 0:l.startsWith("+"));y.sort((r,d)=>{const p=r[e],_=d[e];return p<_?s?-1:1:p>_?s?1:-1:0})}else y.sort((e,s)=>{const r=e.created_at?new Date(e.created_at).getTime():0;return(s.created_at?new Date(s.created_at).getTime():0)-r});const T=t.page||1,C=t.limit||20,M=(T-1)*C,k=M+C;return{rows:y.slice(M,k).map((e,s)=>({...e,index:M+s})),total:w.length,query:{...t,total:w.length}}}catch(o){throw o}}async function F(t){const i=t.map(n=>{const l={match_id:n.match_id,rank:n.rank};return n.user_id!==void 0?l.user_id=n.user_id:n.winner_id!==void 0&&(l.user_id=n.winner_id),l}),{data:a,error:c}=await f.from("winners_match").insert(i).select();if(c)throw c;return a}async function G(t){const{data:i,error:a}=await f.from("winners_match").select("*").eq("match_id",t).order("rank",{ascending:!0});if(a)throw a;if(!i||i.length===0)return[];const c=[...new Set(i.map(o=>o.user_id||o.winner_id).filter(Boolean))];let n=[];if(c.length>0){const{data:o,error:h}=await f.from("users").select("*").in("id",c);!h&&o?n=o:h&&console.error("[getWinnersMatchWithDetails] Error fetching users:",h)}const l=new Map;return n.forEach(o=>{const h=o.id;if(l.set(h,o),l.set(String(h),o),typeof h=="string"){const u=h.toLowerCase().replace(/-/g,"");l.set(u,o),h.includes("-")&&(l.set(h.replace(/-/g,""),o),l.set(h.replace(/-/g,"").toLowerCase(),o))}}),i.map(o=>{const h=o.user_id||o.winner_id,u=l.get(h)||l.get(String(h))||n.find(q=>String(q.id)===String(h))||{};let g="نامشخص";return u&&Object.keys(u).length>0&&(u.name?g=u.name:u.phone?g=u.phone:u.email?g=u.email:u.username&&(g=u.username)),{...o,user_name:g,user_mobile:(u==null?void 0:u.phone)||"",user_email:(u==null?void 0:u.email)||""}})}export{j as a,A as b,P as c,B as d,V as e,U as f,K as g,G as h,F as s,R as u};
|