Files
machartaa_admin_dist/dist/assets/products-56ee4e5a.js
T
2026-06-16 18:30:01 +03:30

2 lines
6.9 KiB
JavaScript

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