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