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