| rev | 
   line source | 
| 
jbe@360
 | 
     1 BEGIN;
 | 
| 
jbe@360
 | 
     2 
 | 
| 
jbe@360
 | 
     3 CREATE OR REPLACE VIEW "liquid_feedback_version" AS
 | 
| 
jbe@360
 | 
     4   SELECT * FROM (VALUES ('2.2.1', 2, 2, 1))
 | 
| 
jbe@360
 | 
     5   AS "subquery"("string", "major", "minor", "revision");
 | 
| 
jbe@360
 | 
     6 
 | 
| 
jbe@360
 | 
     7 ALTER TABLE "initiative" ADD COLUMN "final_suggestion_order_calculated" BOOLEAN NOT NULL DEFAULT FALSE;
 | 
| 
jbe@360
 | 
     8 COMMENT ON COLUMN "initiative"."final_suggestion_order_calculated" IS 'Set to TRUE, when "proportional_order" of suggestions has been calculated the last time';
 | 
| 
jbe@360
 | 
     9 
 | 
| 
jbe@360
 | 
    10 ALTER TABLE "suggestion" ADD COLUMN "proportional_order" INT4;
 | 
| 
jbe@378
 | 
    11 COMMENT ON COLUMN "suggestion"."proportional_order" IS 'To be used for sorting suggestions within an initiative; NULL values sort last; updated by "lf_update_suggestion_order"';
 | 
| 
jbe@360
 | 
    12 
 | 
| 
jbe@360
 | 
    13 CREATE VIEW "initiative_suggestion_order_calculation" AS
 | 
| 
jbe@360
 | 
    14   SELECT
 | 
| 
jbe@360
 | 
    15     "initiative"."id" AS "initiative_id",
 | 
| 
jbe@360
 | 
    16     ("issue"."closed" NOTNULL OR "issue"."fully_frozen" NOTNULL) AS "final"
 | 
| 
jbe@360
 | 
    17   FROM "initiative" JOIN "issue"
 | 
| 
jbe@360
 | 
    18   ON "initiative"."issue_id" = "issue"."id"
 | 
| 
jbe@360
 | 
    19   WHERE ("issue"."closed" ISNULL AND "issue"."fully_frozen" ISNULL)
 | 
| 
jbe@360
 | 
    20   OR ("initiative"."final_suggestion_order_calculated" = FALSE);
 | 
| 
jbe@360
 | 
    21 COMMENT ON VIEW "initiative_suggestion_order_calculation" IS 'Initiatives, where the "proportional_order" of its suggestions has to be calculated';
 | 
| 
jbe@360
 | 
    22 COMMENT ON COLUMN "initiative_suggestion_order_calculation"."final" IS 'Set to TRUE, if the issue is fully frozen or closed, and the calculation has to be done only once for one last time';
 | 
| 
jbe@360
 | 
    23 
 | 
| 
jbe@360
 | 
    24 CREATE VIEW "individual_suggestion_ranking" AS
 | 
| 
jbe@360
 | 
    25   SELECT
 | 
| 
jbe@360
 | 
    26     "opinion"."initiative_id",
 | 
| 
jbe@360
 | 
    27     "opinion"."member_id",
 | 
| 
jbe@360
 | 
    28     "direct_interest_snapshot"."weight",
 | 
| 
jbe@360
 | 
    29     CASE WHEN
 | 
| 
jbe@360
 | 
    30       ("opinion"."degree" = 2 AND "opinion"."fulfilled" = FALSE) OR
 | 
| 
jbe@360
 | 
    31       ("opinion"."degree" = -2 AND "opinion"."fulfilled" = TRUE)
 | 
| 
jbe@360
 | 
    32     THEN 1 ELSE
 | 
| 
jbe@360
 | 
    33       CASE WHEN
 | 
| 
jbe@360
 | 
    34         ("opinion"."degree" = 1 AND "opinion"."fulfilled" = FALSE) OR
 | 
| 
jbe@360
 | 
    35         ("opinion"."degree" = -1 AND "opinion"."fulfilled" = TRUE)
 | 
| 
jbe@360
 | 
    36       THEN 2 ELSE
 | 
| 
jbe@360
 | 
    37         CASE WHEN
 | 
| 
jbe@360
 | 
    38           ("opinion"."degree" = 2 AND "opinion"."fulfilled" = TRUE) OR
 | 
| 
jbe@360
 | 
    39           ("opinion"."degree" = -2 AND "opinion"."fulfilled" = FALSE)
 | 
| 
jbe@360
 | 
    40         THEN 3 ELSE 4 END
 | 
| 
jbe@360
 | 
    41       END
 | 
| 
jbe@360
 | 
    42     END AS "preference",
 | 
| 
jbe@360
 | 
    43     "opinion"."suggestion_id"
 | 
| 
jbe@360
 | 
    44   FROM "opinion"
 | 
| 
jbe@360
 | 
    45   JOIN "initiative" ON "initiative"."id" = "opinion"."initiative_id"
 | 
| 
jbe@360
 | 
    46   JOIN "issue" ON "issue"."id" = "initiative"."issue_id"
 | 
| 
jbe@360
 | 
    47   JOIN "direct_interest_snapshot"
 | 
| 
jbe@360
 | 
    48     ON  "direct_interest_snapshot"."issue_id" = "issue"."id"
 | 
| 
jbe@360
 | 
    49     AND "direct_interest_snapshot"."event" = "issue"."latest_snapshot_event"
 | 
| 
jbe@360
 | 
    50     AND "direct_interest_snapshot"."member_id" = "opinion"."member_id";
 | 
| 
jbe@360
 | 
    51 COMMENT ON VIEW "individual_suggestion_ranking" IS 'Helper view for "lf_update_suggestion_order" to allow a proportional ordering of suggestions within an initiative';
 | 
| 
jbe@360
 | 
    52 
 | 
| 
jbe@360
 | 
    53 COMMIT;
 |