-- ----------------------------------------------------- -- Table attributeT -- ----------------------------------------------------- alter table attributeT drop sortable; -- ----------------------------------------------------- -- Table sortDirectionsT -- ----------------------------------------------------- drop table if exists sortDirectionsT ; create table if not exists sortDirectionsT ( id int not null, primary key (id)) engine = InnoDB comment = 'this must be check constraints in sortOptionT.sortDirection, but unfortunately...'; -- ----------------------------------------------------- -- Table sortOptionT -- ----------------------------------------------------- drop table if exists sortOptionT ; create table if not exists sortOptionT ( id int unsigned not null auto_increment, sortDirection int not null comment 'should be -1 or 1', attributeId int unsigned not null, sorter int not null default 0, primary key (id), unique index attributeid_sortdirection_uq (sortDirection asc, attributeId asc), index sorter_idx (sorter asc), index fk_sortOptionT_attributeT1_idx (attributeId asc), constraint fk_sortOptionT_sortDirectionsT1 foreign key (sortDirection) references sortDirectionsT (id) on delete no action on update no action, constraint fk_sortOptionT_attributeT1 foreign key (attributeId) references attributeT (id) on delete no action on update no action) engine = InnoDB comment = 'sortOptionT always has a parent attributeT, even if we sort by something special'; -- ----------------------------------------------------- -- Table cacheObjectSortT -- ----------------------------------------------------- drop table if exists cacheObjectSortT ; create table if not exists cacheObjectSortT ( objectId int unsigned not null, sortOptionId int unsigned not null, sorter double not null default 0.0, primary key (objectId, sortOptionId), index sorter_idx (sortOptionId asc, sorter desc), constraint fk_cacheObjectSortT_objectT1 foreign key (objectId) references objectT (id) on delete cascade on update no action, constraint fk_cacheObjectSortT_sortOptionT1 foreign key (sortOptionId) references sortOptionT (id) on delete cascade on update no action) engine = InnoDB; -- ----------------------------------------------------- -- Table sortOptionTL -- ----------------------------------------------------- drop table if exists sortOptionTL ; create table if not exists sortOptionTL ( id int unsigned not null, languageId char(3) not null, name varchar(255) not null, primary key (id, languageId), index fk_sortOptionTL_languageT1_idx (languageId asc), constraint fk_sortOptionTL_sortOptionT1 foreign key (id) references sortOptionT (id) on delete cascade on update no action, constraint fk_sortOptionTL_languageT1 foreign key (languageId) references languageT (id) on delete no action on update no action) engine = InnoDB; -- ----------------------------------------------------- -- Data for table sortDirectionsT -- ----------------------------------------------------- start transaction; insert into sortDirectionsT (id) values (-1), (1); commit; -- ----------------------------------------------------- -- Data for tables sortOptionT and sortOptionTL -- ----------------------------------------------------- delimiter $$ drop function if exists tt_sort_insert$$ create function tt_sort_insert(code varchar(30) binary, sort_direction int, name_ukr varchar(255), name_rus varchar(255), name_eng varchar(255)) returns int unsigned not deterministic modifies sql data begin declare attribute_id, so_id int unsigned; set attribute_id = attribute_GetByCode(code); insert sortOptionT(sortDirection, attributeId, sorter) values (sort_direction, attribute_id, sorter_Get()); set so_id = last_insert_id(); insert sortOptionTL(id, languageId, name) values (so_id, 'ukr', name_ukr), (so_id, 'rus', name_rus), (so_id, 'eng', name_eng); return so_id; end$$ delimiter ; start transaction; select sorter_Set(10, 10); -- ----------------------- select tt_sort_insert('__byrating', 1, 'Звичайний', 'Обычный', 'Ordinary'); -- ----------------------- select tt_sort_insert('price', 1, 'Ціна: від меншої до більшої', 'Цена: от меньшей к большей', 'Price: smaller to larger'); select tt_sort_insert('price', -1, 'Ціна: від більшої до меншої', 'Цена: от большей к меньшей', 'Price: larger to smaller'); -- ----------------------- select tt_sort_insert('pricerent', 1, 'Ціна: від меншої до більшої', 'Цена: от меньшей к большей', 'Price: smaller to larger'); select tt_sort_insert('pricerent', -1, 'Ціна: від більшої до меншої', 'Цена: от большей к меньшей', 'Price: larger to smaller'); -- ----------------------- select tt_sort_insert('pricerentdaily', 1, 'Ціна: від меншої до більшої', 'Цена: от меньшей к большей', 'Price: smaller to larger'); select tt_sort_insert('pricerentdaily', -1, 'Ціна: від більшої до меншої', 'Цена: от большей к меньшей', 'Price: larger to smaller'); -- ----------------------- select tt_sort_insert('area', 1, 'Площа: від меншої до більшої', 'Площадь: от меньшей к большей', 'Area: smaller to larger'); select tt_sort_insert('area', -1, 'Площа: від більшої до меншої', 'Площадь: от большей к меньшей', 'Area: larger to smaller'); commit; drop function if exists tt_sort_insert; /* to be called manually start transaction; select __object_UpdateSortCacheAll(); commit; */