File indexing completed on 2024-04-21 06:00:37

0001 -- 1 alter table project add column 
0002 SET SQL_SAFE_UPDATES = 0;
0003 ALTER TABLE `project`
0004     ADD COLUMN `major_updated_at` timestamp DEFAULT now() AFTER `changed_at`;
0005 UPDATE `project`
0006 SET `major_updated_at` = IFNULL(`changed_at`, `created_at`);
0007 
0008 -- 2 create trigger  
0009 
0010 DELIMITER $$
0011 DROP TRIGGER IF EXISTS `trg_project_major_updated_at`$$
0012 USE `root`$$
0013 CREATE DEFINER ='root' TRIGGER `trg_project_major_updated_at`
0014     BEFORE UPDATE
0015     ON `project`
0016     FOR EACH ROW
0017 BEGIN
0018     IF `NEW`.`changed_at` <> `OLD`.`changed_at` AND DATEDIFF(`NEW`.`changed_at`, `OLD`.`major_updated_at`) > 7 THEN
0019         SET `NEW`.`major_updated_at` = `NEW`.`changed_at`;
0020     END IF;
0021 END$$
0022 DELIMITER ;
0023 
0024 
0025 -- 3 alter generate_stat_projects procedure
0026 
0027 DELIMITER $$
0028 DROP PROCEDURE IF EXISTS `generate_stat_project`$$
0029 CREATE PROCEDURE `generate_stat_project`()
0030 BEGIN
0031     DROP TABLE IF EXISTS `tmp_reported_projects`;
0032     CREATE TEMPORARY TABLE `tmp_reported_projects`
0033     (
0034         PRIMARY KEY `primary` (`project_id`)
0035     )
0036     AS
0037     SELECT `reports_project`.`project_id`        AS `project_id`,
0038            COUNT(`reports_project`.`project_id`) AS `amount_reports`,
0039            MAX(`reports_project`.`created_at`)   AS `latest_report`
0040     FROM `reports_project`
0041     WHERE (`reports_project`.`is_deleted` = 0 AND `reports_project`.`report_type` = 0)
0042     GROUP BY `reports_project`.`project_id`;
0043 
0044     DROP TABLE IF EXISTS `tmp_project_package_types`;
0045     CREATE TEMPORARY TABLE `tmp_project_package_types`
0046     (
0047         PRIMARY KEY `primary` (`project_id`)
0048     )
0049         ENGINE MyISAM
0050     AS
0051     SELECT `tag_object`.`tag_parent_object_id`          AS `project_id`,
0052            GROUP_CONCAT(DISTINCT `tag_object`.`tag_id`) AS `package_type_id_list`,
0053            GROUP_CONCAT(DISTINCT `tag`.`tag_fullname`)  AS `package_name_list`
0054     FROM `tag_object`
0055              JOIN
0056          `tag` ON `tag_object`.`tag_id` = `tag`.`tag_id`
0057              JOIN
0058          `ppload`.`ppload_files` `files` ON `files`.`id` = `tag_object`.`tag_object_id`
0059     WHERE `tag_object`.`tag_group_id` = 8
0060       AND `tag_object`.`is_deleted` = 0
0061       AND `files`.`active` = 1
0062     GROUP BY `tag_object`.`tag_parent_object_id`;
0063 
0064     DROP TABLE IF EXISTS `tmp_project_tags`;
0065     CREATE TEMPORARY TABLE `tmp_project_tags`
0066     (
0067         PRIMARY KEY `primary` (`tag_project_id`)
0068     )
0069         ENGINE MyISAM
0070     AS
0071     SELECT GROUP_CONCAT(`tag_name`) AS `tag_names`,
0072            GROUP_CONCAT(`tag_id`)   AS `tag_ids`,
0073            `tag_project_id`
0074     FROM (
0075              SELECT DISTINCT `tag`.`tag_name`,
0076                              `tag`.`tag_id`,
0077                              `tgo`.`tag_object_id` AS `tag_project_id`
0078              FROM `tag_object` AS `tgo`
0079                       JOIN `tag` ON `tag`.`tag_id` = `tgo`.`tag_id`
0080              WHERE `tag_type_id` = 1 #project
0081                AND `tgo`.`is_deleted` = 0
0082              UNION ALL
0083              SELECT DISTINCT `tag`.`tag_name`,
0084                              `tag`.`tag_ID`,
0085                              `tgo`.`tag_parent_object_id` AS `tag_project_id`
0086              FROM `tag_object` AS `tgo`
0087                       JOIN `tag` ON `tag`.`tag_id` = `tgo`.`tag_id`
0088                       JOIN `ppload`.`ppload_files` `files` ON `files`.`id` = `tgo`.`tag_object_id`
0089              WHERE `tag_type_id` = 3 #file
0090                AND `files`.`active` = 1
0091                AND `tgo`.`is_deleted` = 0
0092          ) `A`
0093     GROUP BY `tag_project_id`
0094     ORDER BY `tag_project_id`;
0095 
0096     DROP TABLE IF EXISTS `tmp_stat_projects`;
0097     CREATE TABLE `tmp_stat_projects`
0098     (
0099         PRIMARY KEY `primary` (`project_id`),
0100         INDEX `idx_ppload` (`ppload_collection_id`),
0101         INDEX `idx_cat` (`project_category_id`),
0102         INDEX `idx_member` (`member_id`),
0103         INDEX `idx_source_url` (`source_url`(50))
0104     )
0105         ENGINE MyISAM
0106     AS
0107     SELECT `project`.`project_id`                                             AS `project_id`,
0108            `project`.`member_id`                                              AS `member_id`,
0109            `project`.`content_type`                                           AS `content_type`,
0110            `project`.`project_category_id`                                    AS `project_category_id`,
0111            `project`.`hive_category_id`                                       AS `hive_category_id`,
0112            `project`.`status`                                                 AS `status`,
0113            `project`.`uuid`                                                   AS `uuid`,
0114            `project`.`pid`                                                    AS `pid`,
0115            `project`.`type_id`                                                AS `type_id`,
0116            `project`.`title`                                                  AS `title`,
0117            `project`.`description`                                            AS `description`,
0118            `project`.`version`                                                AS `version`,
0119            `project`.`project_license_id`                                     AS `project_license_id`,
0120            `project`.`image_big`                                              AS `image_big`,
0121            `project`.`image_small`                                            AS `image_small`,
0122            `project`.`start_date`                                             AS `start_date`,
0123            `project`.`content_url`                                            AS `content_url`,
0124            `project`.`created_at`                                             AS `created_at`,
0125            `project`.`changed_at`                                             AS `changed_at`,
0126            `project`.`major_updated_at`                                       AS `major_updated_at`,
0127            `project`.`deleted_at`                                             AS `deleted_at`,
0128            `project`.`creator_id`                                             AS `creator_id`,
0129            `project`.`facebook_code`                                          AS `facebook_code`,
0130            `project`.`source_url`                                             AS `source_url`,
0131            `project`.`twitter_code`                                           AS `twitter_code`,
0132            `project`.`google_code`                                            AS `google_code`,
0133            `project`.`link_1`                                                 AS `link_1`,
0134            `project`.`embed_code`                                             AS `embed_code`,
0135            CAST(`project`.`ppload_collection_id` AS UNSIGNED)                 AS `ppload_collection_id`,
0136            `project`.`validated`                                              AS `validated`,
0137            `project`.`validated_at`                                           AS `validated_at`,
0138            `project`.`featured`                                               AS `featured`,
0139            `project`.`ghns_excluded`                                          AS `ghns_excluded`,
0140            `project`.`amount`                                                 AS `amount`,
0141            `project`.`amount_period`                                          AS `amount_period`,
0142            `project`.`claimable`                                              AS `claimable`,
0143            `project`.`claimed_by_member`                                      AS `claimed_by_member`,
0144            `project`.`count_likes`                                            AS `count_likes`,
0145            `project`.`count_dislikes`                                         AS `count_dislikes`,
0146            `project`.`count_comments`                                         AS `count_comments`,
0147            `project`.`count_downloads_hive`                                   AS `count_downloads_hive`,
0148            `project`.`source_id`                                              AS `source_id`,
0149            `project`.`source_pk`                                              AS `source_pk`,
0150            `project`.`source_type`                                            AS `source_type`,
0151            `project`.`validated`                                              AS `project_validated`,
0152            `project`.`uuid`                                                   AS `project_uuid`,
0153            `project`.`status`                                                 AS `project_status`,
0154            `project`.`created_at`                                             AS `project_created_at`,
0155            `project`.`changed_at`                                             AS `project_changed_at`,
0156            laplace_score(`project`.`count_likes`, `project`.`count_dislikes`) AS `laplace_score`,
0157            `member`.`type`                                                    AS `member_type`,
0158            `member`.`member_id`                                               AS `project_member_id`,
0159            `member`.`username`                                                AS `username`,
0160            `member`.`profile_image_url`                                       AS `profile_image_url`,
0161            `member`.`city`                                                    AS `city`,
0162            `member`.`country`                                                 AS `country`,
0163            `member`.`created_at`                                              AS `member_created_at`,
0164            `member`.`paypal_mail`                                             AS `paypal_mail`,
0165            `project_category`.`title`                                         AS `cat_title`,
0166            `project_category`.`xdg_type`                                      AS `cat_xdg_type`,
0167            `project_category`.`name_legacy`                                   AS `cat_name_legacy`,
0168            `project_category`.`show_description`                              AS `cat_show_description`,
0169            `stat_plings`.`amount_received`                                    AS `amount_received`,
0170            `stat_plings`.`count_plings`                                       AS `count_plings`,
0171            `stat_plings`.`count_plingers`                                     AS `count_plingers`,
0172            `stat_plings`.`latest_pling`                                       AS `latest_pling`,
0173            `trp`.`amount_reports`                                             AS `amount_reports`,
0174            `tppt`.`package_type_id_list`                                      AS `package_types`,
0175            `tppt`.`package_name_list`                                         AS `package_names`,
0176            `t`.`tag_names`                                                    AS `tags`,
0177            `t`.`tag_ids`                                                      AS `tag_ids`,
0178            `sdqy`.`amount`                                                    AS `count_downloads_quarter`,
0179            `project_license`.`title`                                          AS `project_license_title`
0180     FROM `project`
0181              JOIN `member` ON `member`.`member_id` = `project`.`member_id`
0182              JOIN `project_category` ON `project`.`project_category_id` = `project_category`.`project_category_id`
0183              LEFT JOIN `stat_plings` ON `stat_plings`.`project_id` = `project`.`project_id`
0184              LEFT JOIN `tmp_reported_projects` AS `trp` ON `trp`.`project_id` = `project`.`project_id`
0185              LEFT JOIN `tmp_project_package_types` AS `tppt` ON `tppt`.`project_id` = `project`.`project_id`
0186              LEFT JOIN `tmp_project_tags` AS `t` ON `t`.`tag_project_id` = `project`.`project_id`
0187              LEFT JOIN `stat_downloads_quarter_year` AS `sdqy` ON `sdqy`.`project_id` = `project`.`project_id`
0188              LEFT JOIN `project_license` ON `project_license`.`project_license_id` = `project`.`project_license_id`
0189     WHERE `member`.`is_deleted` = 0
0190       AND `member`.`is_active` = 1
0191       AND `project`.`type_id` = 1
0192       AND `project`.`status` = 100
0193       AND `project_category`.`is_active` = 1;
0194 
0195     RENAME TABLE `stat_projects` TO `old_stat_projects`, `tmp_stat_projects` TO `stat_projects`;
0196 
0197     DROP TABLE IF EXISTS `old_stat_projects`;
0198 END$$
0199 DELIMITER ;
0200