# HG changeset patch # User jbe # Date 1307199050 -7200 # Node ID 32887495ca570a9bbb27a198a5fabf8d55306e77 # Parent 374cca7355afe0cfe47bf494868220fa42e86cb6 Wiki formatting for member statements and suggestions diff -r 374cca7355af -r 32887495ca57 core.sql --- a/core.sql Sat Jun 04 12:09:02 2011 +0200 +++ b/core.sql Sat Jun 04 16:50:50 2011 +0200 @@ -115,6 +115,7 @@ "profession" TEXT, "external_memberships" TEXT, "external_posts" TEXT, + "formatting_engine" TEXT, "statement" TEXT, "text_search_data" TSVECTOR ); CREATE INDEX "member_active_idx" ON "member" ("active"); @@ -150,6 +151,7 @@ COMMENT ON COLUMN "member"."email" IS 'Published email address of the member; not used for system notifications'; COMMENT ON COLUMN "member"."external_memberships" IS 'Other organizations the member is involved in'; COMMENT ON COLUMN "member"."external_posts" IS 'Posts (offices) outside the organization'; +COMMENT ON COLUMN "member"."formatting_engine" IS 'Allows different formatting engines (i.e. wiki formats) to be used for "member"."statement"'; COMMENT ON COLUMN "member"."statement" IS 'Freely chosen text of the member for his homepage within the system'; @@ -167,6 +169,15 @@ COMMENT ON COLUMN "member_history"."until" IS 'Timestamp until the data was valid'; +CREATE TABLE "rendered_member_statement" ( + PRIMARY KEY ("member_id", "format"), + "member_id" INT8 REFERENCES "member" ("id") ON DELETE CASCADE ON UPDATE CASCADE, + "format" TEXT, + "content" TEXT NOT NULL ); + +COMMENT ON TABLE "rendered_member_statement" IS 'This table may be used by frontends to cache "rendered" member statements (e.g. HTML output generated from wiki text)'; + + CREATE TABLE "invite_code" ( "id" SERIAL8 PRIMARY KEY, "code" TEXT NOT NULL UNIQUE, @@ -673,7 +684,8 @@ "created" TIMESTAMPTZ NOT NULL DEFAULT now(), "author_id" INT4 NOT NULL REFERENCES "member" ("id") ON DELETE RESTRICT ON UPDATE CASCADE, "name" TEXT NOT NULL, - "description" TEXT NOT NULL DEFAULT '', + "formatting_engine" TEXT, + "content" TEXT NOT NULL DEFAULT '', "text_search_data" TSVECTOR, "minus2_unfulfilled_count" INT4, "minus2_fulfilled_count" INT4, @@ -690,7 +702,7 @@ BEFORE INSERT OR UPDATE ON "suggestion" FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger('text_search_data', 'pg_catalog.simple', - "name", "description"); + "name", "content"); COMMENT ON TABLE "suggestion" IS 'Suggestions to initiators, to change the current draft; must not be deleted explicitly, as they vanish automatically if the last opinion is deleted'; @@ -704,6 +716,15 @@ COMMENT ON COLUMN "suggestion"."plus2_fulfilled_count" IS 'Calculated from table "direct_supporter_snapshot", not requiring informed supporters'; +CREATE TABLE "rendered_suggestion" ( + PRIMARY KEY ("suggestion_id", "format"), + "suggestion_id" INT8 REFERENCES "suggestion" ("id") ON DELETE CASCADE ON UPDATE CASCADE, + "format" TEXT, + "content" TEXT NOT NULL ); + +COMMENT ON TABLE "rendered_suggestion" IS 'This table may be used by frontends to cache "rendered" drafts (e.g. HTML output generated from wiki text)'; + + CREATE TABLE "suggestion_setting" ( PRIMARY KEY ("member_id", "key", "suggestion_id"), "member_id" INT4 REFERENCES "member" ("id") ON DELETE CASCADE ON UPDATE CASCADE, diff -r 374cca7355af -r 32887495ca57 demo.sql --- a/demo.sql Sat Jun 04 12:09:02 2011 +0200 +++ b/demo.sql Sat Jun 04 16:50:50 2011 +0200 @@ -185,7 +185,7 @@ (20, 4, 4), (20, 5, 5); -INSERT INTO "suggestion" ("initiative_id", "author_id", "name", "description") VALUES +INSERT INTO "suggestion" ("initiative_id", "author_id", "name", "content") VALUES (1, 19, 'Suggestion #1', 'Lorem ipsum...'); -- id 1 INSERT INTO "opinion" ("member_id", "suggestion_id", "degree", "fulfilled") VALUES (14, 1, 2, FALSE);