как в удалить userpoints на определенную дату

15 Aug
Published by alexey in

теги 

drupal, userpoints, modules

Появилась потребность удалить записи Userpoints,которые меньше определенной даты.
Я решил это сделать через sql запрос.
алгоритм действий такой:
1) удаляем записи из {userpoints_txn}, которые меньше определенной даты (можно и другие условия :)). Для вычисления и преобразования дат есть тулза http://www.cy-pr.com/tools/time/

delete `main_userpoints_txn` where `changed`<`2011-06-01`

2) удаляем ВСЕ записи из {userpoints}

TRUNCATE TABLE `main_userpoints`

3) вставляем суммы значений, сгруппированные по uid и tid из оставшихся записей в {userpouints_txn}

insert into `main_userpoints` (`uid`, `points`, `last_update`, `tid`)
SELECT `uid`, sum(`points`), `changed`, `tid` FROM `main_userpoints_txn`
group by `uid`, `tid`