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