2 lines
11 KiB
JavaScript
2 lines
11 KiB
JavaScript
import{X as l,_ as I}from"./index-f631c110.js";const w="*, product_attributes(*, attributes(*)), variants(*, variant_attribute_values(*))",R=new Set(["description","price","sku","is_active","code","title","title_fa","brand_id","collection_id","body","original_image","is_show","display_price","count_order","count_fav","count_view","count","seo_title","meta","min_price","max_price","type","files","owner_id","discount","discount_type","box_size","sell_type","weight","product_type","rial_fee","percent_fee","auto_calculate","is_exist","post_shipping_cost"]);function N(t){var e;return(((e=t.variants)==null?void 0:e.length)??0)>0||t.type==="variant"}function b(t,e){const i=t.price!=null?Number(t.price):0;return i>0?i:Number(e??0)}function P(t,e,i){const r=t.discount!=null?Number(t.discount):0;if(r>0)return{discount:r,discount_type:t.discount_type??"percent"};const s=e!=null?Number(e):0;return s>0?{discount:s,discount_type:i??"percent"}:{discount:null,discount_type:null}}function E(t,e,i,r){const s=t.map(a=>b(a,r)),n=s.length?Math.min(...s):0,o=s.length?Math.max(...s):0;if((e??0)>0){const a=t.map(c=>m(b(c,r),e,i??"percent")),u=t.map(c=>{const _=b(c,r),p=P(c,e,i);return m(_,p.discount,p.discount_type)});return{price:n,display_price:a.length?Math.min(...a):n,min_price:u.length?Math.min(...u):n,max_price:u.length?Math.max(...u):o,discount:e??null,discount_type:i??"percent"}}return{price:n,display_price:n,min_price:n,max_price:o,discount:null,discount_type:null}}function S(t){const e=N(t),i=new Set(["count","display_price","min_price","max_price","price"]),r={};for(const[s,n]of Object.entries(t))!R.has(s)||n===void 0||e&&i.has(s)||(r[s]=n);if(r.type=e?"variant":"simple",e){const s=t.variants??[],n=t.discount!=null?Number(t.discount):null,o=t.discount?t.discount_type??"percent":null,d=t.price!=null?Number(t.price):null,a=E(s,n,o,d),u=s.map(c=>Number(c.stock??0));r.price=a.price,r.discount=a.discount,r.discount_type=a.discount_type,r.count=u.reduce((c,_)=>c+_,0),r.display_price=a.display_price,r.min_price=a.min_price,r.max_price=a.max_price,r.is_exist=u.length?u.some(c=>c>0):t.is_exist??!0}else{const s=Number(t.price??0),n=t.discount!=null?Number(t.discount):null,o=t.discount_type??"percent";r.price=s,r.display_price=m(s,n,o),r.min_price=r.display_price,r.max_price=r.display_price}return r}function m(t,e,i){const r=Number(t??0),s=Number(e??0);return s?i==="percent"?Math.max(0,Math.round(r*(100-s)/100)):Math.max(0,r-s):r}function k(t){if(t==null||t==="")return null;const e=Number(t);return Number.isFinite(e)?e:null}function L(t=[]){return[...t].sort((e,i)=>{const r=e.sort_order??Number(e.id??0),s=i.sort_order??Number(i.id??0);return r!==s?r-s:Number(e.id??0)-Number(i.id??0)})}function O(t){const e=((t==null?void 0:t.variant_attribute_values)??[]).map(i=>{var r;return i.attribute_value_id??((r=i.attribute_values)==null?void 0:r.id)}).filter(i=>i!=null);return{id:k(t.id),sku:t.sku??"",price:t.price??0,box_price:t.box_price??t.price??0,stock:t.stock??0,discount:t.discount??void 0,discount_type:t.discount_type??"percent",is_default:t.is_default??!1,sort_order:t.sort_order??null,attribute_values:e,attribute_values_name:[]}}function A(t){const e=new Map;for(const i of t){if(i.attribute_id==null)continue;const r=(i.attribute_values??[]).filter(n=>n!=null),s=e.get(i.attribute_id);if(!s){e.set(i.attribute_id,{id:i.id,attribute_id:i.attribute_id,use_in_product_page:i.use_in_product_page??!0,use_in_variant:i.use_in_variant??!1,attribute_values:[...r]});continue}s.attribute_values=[...new Set([...s.attribute_values??[],...r])],s.use_in_variant=s.use_in_variant||i.use_in_variant,s.use_in_product_page=s.use_in_product_page||i.use_in_product_page}return[...e.values()]}function z(t){const e=(t==null?void 0:t.variants)??[];return e.length>0||(t==null?void 0:t.type)==="variant"?e.reduce((i,r)=>i+Number(r.stock??0),0):Number((t==null?void 0:t.count)??0)}function v(t){var r;if(!t)return t;const e=(((r=t.variants)==null?void 0:r.length)??0)>0||t.type==="variant",i={...t,type:e?"variant":"simple",product_attributes:A(t.product_attributes??[]),variants:L((t.variants??[]).map(O))};return i.count=z(i),i.is_exist=i.count>0,i}async function C(){const{data:t,error:e}=await l.from("attribute_values").select("id, attribute_id");if(e)throw e;return new Map((t??[]).map(i=>[i.id,i.attribute_id]))}async function F(t=[]){const{data:e,error:i}=await l.from("attributes").select("id, name");if(i)throw i;const r=new Map((e??[]).map(n=>[String(n.name).trim().toLowerCase(),n.id])),s=[];for(const n of t){if(n.attribute_id!=null){s.push(n);continue}const o=(n.attribute_name??"").trim();if(!o)continue;const d=o.toLowerCase();let a=r.get(d);if(a==null){const{data:u,error:c}=await l.from("attributes").insert({name:o}).select("id").single();if(c)throw c;a=u.id,r.set(d,a)}s.push({...n,attribute_id:a,is_new:!1})}return s}async function q(t,e){const{data:i,error:r}=await l.from("attribute_values").select("id, value").eq("attribute_id",t);if(r)throw r;const s=new Map((i??[]).map(o=>[o.value,o.id])),n=[];for(const o of e){if(o==null||o==="")continue;if(typeof o=="number"){n.push(o);continue}const d=String(o).trim();if(!d)continue;const a=s.get(d);if(a!=null){n.push(a);continue}const{data:u,error:c}=await l.from("attribute_values").insert({attribute_id:t,value:d}).select("id").single();if(c)throw c;s.set(d,u.id),n.push(u.id)}return[...new Set(n)]}async function U(t=[]){const e=[];for(const i of t){if(i.attribute_id==null){e.push(i);continue}const r=await q(i.attribute_id,i.attribute_values??[]);e.push({...i,attribute_values:r})}return e}async function B(t=[],e=[]){const i=[];for(const r of t){const s=[];for(const n of r.attribute_values??[]){if(n==null||n==="")continue;if(typeof n=="number"){s.push(n);continue}const o=String(n).trim();if(!o)continue;const d=e.find(u=>(u.attribute_values??[]).some(c=>c===n||c===o));if(!(d!=null&&d.attribute_id))continue;const a=await q(d.attribute_id,[o]);s.push(...a)}i.push({...r,attribute_values:[...new Set(s)]})}return i}async function G(t,e=[],i=[]){const{error:r}=await l.from("product_attributes").delete().eq("product_id",t);if(r)throw r;const s=await C(),o=A(e).filter(a=>a.attribute_id!=null).map(a=>{let u=(a.attribute_values??[]).filter(c=>c!=null);if(a.use_in_variant){const c=new Set;i.forEach(_=>{(_.attribute_values??[]).forEach(p=>{const f=typeof p=="number"?p:p==null?void 0:p.id;f!=null&&s.get(f)===a.attribute_id&&c.add(f)})}),u=[...new Set([...u,...c])]}return{product_id:t,attribute_id:a.attribute_id,use_in_product_page:a.use_in_product_page??!0,use_in_variant:a.use_in_variant??!1,attribute_values:u}});if(!o.length)return;const{error:d}=await l.from("product_attributes").insert(o);if(d)throw d}function j(t,e,i,r,s,n){const o=b(e,n),d=Number(e.stock??0),a=e.discount!=null?Number(e.discount):null,u=e.discount_type??"percent",c=P(e,r,s),_=m(o,c.discount,c.discount_type);return{product_id:t,sku:e.sku??"",price:o,stock:d,discount:a,discount_type:a?u:null,is_default:e.is_default??!1,sort_order:i,display_price:_,is_exist:d>0,auto_calculate:!1,weight:0}}async function V(t,e){const{error:i}=await l.from("variant_attribute_values").delete().eq("variant_id",t);if(i)throw i;const r=(e.attribute_values??[]).map(n=>typeof n=="number"?n:n==null?void 0:n.id).filter(n=>n!=null);if(!r.length)return;const{error:s}=await l.from("variant_attribute_values").insert(r.map(n=>({variant_id:t,attribute_value_id:n})));if(s)throw s}async function X(t,e=[],i,r,s){const{data:n,error:o}=await l.from("variants").select("id").eq("product_id",t);if(o)throw o;const d=new Set((n??[]).map(c=>Number(c.id))),a=new Set;for(const[c,_]of e.entries()){const p=j(t,_,c,i,r,s),f=k(_.id);if(f!=null&&d.has(f)){const{error:x}=await l.from("variants").update(p).eq("id",f);if(x)throw x;a.add(f),await V(f,_);continue}const{data:T,error:g}=await l.from("variants").insert(p).select("id").single();if(g)throw g;const y=Number(T.id);a.add(y),await V(y,_)}const u=[...d].filter(c=>!a.has(c));if(u.length){const{error:c}=await l.from("variant_attribute_values").delete().in("variant_id",u);if(c)throw c;const{error:_}=await l.from("variants").delete().in("id",u);if(_)throw _}}async function M(t,e){const i=N(e),r=await F(e.product_attributes??[]),s=await U(r),n=await B(e.variants??[],r),o=e.discount!=null?Number(e.discount):null,d=e.discount?e.discount_type??"percent":null,a=e.price!=null?Number(e.price):null;if(await G(t,s,n),i)await X(t,n,o,d,a);else{const{data:_}=await l.from("variants").select("id").eq("product_id",t),p=(_??[]).map(f=>f.id);p.length&&(await l.from("variant_attribute_values").delete().in("variant_id",p),await l.from("variants").delete().eq("product_id",t))}const u={type:i?"variant":"simple"};if(i){const _=E(n??[],o,d,a),p=(n??[]).map(f=>Number(f.stock??0));u.price=_.price,u.display_price=_.display_price,u.min_price=_.min_price,u.max_price=_.max_price,u.discount=_.discount,u.discount_type=_.discount_type,p.length&&(u.count=p.reduce((f,h)=>f+h,0),u.is_exist=p.some(f=>f>0))}else{const _=Number(e.price??0),p=e.discount!=null?Number(e.discount):null,f=e.discount_type??"percent";u.display_price=m(_,p,f),u.min_price=u.display_price,u.max_price=u.display_price}const{error:c}=await l.from("products").update(u).eq("id",t);if(c)throw c}async function H(){const{data:t,error:e}=await l.from("products").select(w);if(e)throw e;return(t??[]).map(v)}async function D(t){const{data:e,error:i}=await l.from("products").select(w).eq("id",t).single();if(i)throw i;return v(e)}async function J(t){const e=S(t),{data:i,error:r}=await l.from("products").insert([e]).select("id").single();if(r)throw r;return await M(i.id,t),D(i.id)}async function K(t,e){const i=S(e),{error:r}=await l.from("products").update(i).eq("id",t);if(r)throw r;return await M(String(t),e),D(t)}async function Q(t){const e=String(t),{data:i,error:r}=await l.from("variants").select("id").eq("product_id",e);if(r)throw r;const s=(i??[]).map(o=>o.id);if(s.length){const{error:o}=await l.from("variant_attribute_values").delete().in("variant_id",s);if(o)throw o}await l.from("variants").delete().eq("product_id",e),await l.from("product_attributes").delete().eq("product_id",e);const{error:n}=await l.from("products").delete().eq("id",t);if(n)throw n}async function W(t){const{TableEngineShopRequest:e}=await I(()=>import("./buildSupabaseQuery-69f12a61.js"),["assets/buildSupabaseQuery-69f12a61.js","assets/index-f631c110.js","assets/index-457f5e42.css","assets/supabaseTableQuery-be932edd.js"]),i={...t,select:[w]};!i.sort&&!i.order&&(i.order="-id");const r=await e(i,"products");try{if(Array.isArray(r==null?void 0:r.rows)){const s=r.rows.map(n=>v({id:n.id,created_at:n.created_at??"",updated_at:n.updated_at??"",...n}));return{...r,rows:s}}}catch(s){console.log("[getProductsTable] normalize error:",s)}return r}export{J as a,D as b,H as c,Q as d,W as g,K as u};
|