2 lines
1.8 KiB
JavaScript
2 lines
1.8 KiB
JavaScript
import{a4 as h}from"./index-706ae190.js";async function y(r,o){const{limit:s,filters:n,page:d,sort:c,order:l,select:k,search:u}=r;let e=h.from(o);if(k&&k.length>0?e=e.select(k.join(","),{count:"exact"}):e=e.select("*",{count:"exact"}),u&&u.trim()){const i=`%${u}%`;switch(o){case"storys":e=e.or(`title.ilike.${i},sub_title.ilike.${i}`);break;case"challenge":e=e.or(`title.ilike.${i},description.ilike.${i}`);break;case"matchs":e=e.or(`title.ilike.${i},description.ilike.${i}`);break;case"competition":e=e.or(`title.ilike.${i},description.ilike.${i}`);break;case"users":e=e.or(`name.ilike.${i},email.ilike.${i},phone.ilike.${i}`);break;case"videos":e=e.or(`title.ilike.${i},description.ilike.${i}`);break;case"customers":e=e.or(`name.ilike.${i},email.ilike.${i},phone.ilike.${i}`);break;default:e=e.or(`title.ilike.${i},name.ilike.${i},description.ilike.${i}`)}}if(n&&Array.isArray(n)&&n.forEach(i=>{const{field:t,op:$,value:a,hidden:g}=i;if(!g)switch($){case"eq":e=e.eq(t,a);break;case"neq":e=e.neq(t,a);break;case"gt":e=e.gt(t,a);break;case"lt":e=e.lt(t,a);break;case"gte":e=e.gte(t,a);break;case"lte":e=e.lte(t,a);break;case"has":e=e.ilike(t,`%${a}%`);break;case"like":e=e.like(t,`%${a}%`);break;default:console.warn(`Unsupported operation: ${$}`)}}),s&&d){const i=(d-1)*s,t=i+s-1;e=e.range(i,t)}if(c&&c.key){const i=c.order==="asc";e=e.order(c.key,{ascending:i})}else if(l){const i=!l.startsWith("-"),t=l.replace(/^[-+]/,"");e=e.order(t,{ascending:i})}const{data:b,error:p,count:m}=await e;return p?(console.error("Supabase query error:",p),null):{data:b,count:m}}async function q(r,o="users"){const s=await y(r,o);return s?{query:{...r,limit:r.limit||10,page:r.page||1,total:s.count},rows:s.data}:{query:{...r,limit:r.limit||10,page:r.page||1,total:0},rows:[]}}export{q as TableEngineRequest,y as buildSupabaseQuery};
|