productos, equivalencias, cross-sell y cantidades
This commit is contained in:
39
db/migrations/20260119100000_reco_rule_items.sql
Normal file
39
db/migrations/20260119100000_reco_rule_items.sql
Normal file
@@ -0,0 +1,39 @@
|
||||
-- migrate:up
|
||||
|
||||
-- Nueva tabla para items de reglas de recomendación con qty/unit
|
||||
create table if not exists reco_rule_items (
|
||||
id bigserial primary key,
|
||||
rule_id bigint not null references product_reco_rules(id) on delete cascade,
|
||||
woo_product_id integer not null,
|
||||
qty_per_person numeric(6,3), -- ej: 0.200 = 200g por persona
|
||||
unit text, -- kg | g | unidad
|
||||
reason text, -- razón opcional (ej: "base del asado")
|
||||
display_order integer not null default 0,
|
||||
unique (rule_id, woo_product_id)
|
||||
);
|
||||
|
||||
create index if not exists reco_rule_items_rule_idx on reco_rule_items(rule_id);
|
||||
|
||||
-- Agregar tipo de regla y evento trigger a product_reco_rules
|
||||
alter table product_reco_rules
|
||||
add column if not exists rule_type text not null default 'crosssell',
|
||||
add column if not exists trigger_event text;
|
||||
|
||||
-- Índice para búsqueda por tipo y evento
|
||||
create index if not exists product_reco_rules_type_event_idx
|
||||
on product_reco_rules(tenant_id, rule_type, trigger_event)
|
||||
where active = true;
|
||||
|
||||
-- Migrar datos existentes: copiar recommended_product_ids a reco_rule_items
|
||||
insert into reco_rule_items (rule_id, woo_product_id, display_order)
|
||||
select r.id, unnest(r.recommended_product_ids), row_number() over (partition by r.id)
|
||||
from product_reco_rules r
|
||||
where array_length(r.recommended_product_ids, 1) > 0
|
||||
on conflict (rule_id, woo_product_id) do nothing;
|
||||
|
||||
-- migrate:down
|
||||
drop index if exists product_reco_rules_type_event_idx;
|
||||
alter table product_reco_rules
|
||||
drop column if exists rule_type,
|
||||
drop column if exists trigger_event;
|
||||
drop table if exists reco_rule_items;
|
||||
Reference in New Issue
Block a user