From a7de4e1fec9e6300d379712bf2f0f74d3618ff5f Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 25 Jan 2015 22:59:29 +0100 Subject: [PATCH] fixes the installation and uninstallation SQL scripts --- web/Models/StaticPage.master | 76 ++++++ web/Views/Admin/Created.aspx | 8 + web/Views/Admin/InitDb.aspx | 37 +++ web/instdbws.sql | 470 ++++++++++++++++++----------------- web/uninstdbws.sql | 23 +- 5 files changed, 381 insertions(+), 233 deletions(-) create mode 100644 web/Models/StaticPage.master create mode 100644 web/Views/Admin/Created.aspx create mode 100644 web/Views/Admin/InitDb.aspx diff --git a/web/Models/StaticPage.master b/web/Models/StaticPage.master new file mode 100644 index 00000000..1ce0c8bf --- /dev/null +++ b/web/Models/StaticPage.master @@ -0,0 +1,76 @@ +<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> + + + + + + <% ViewState["orgtitle"] = T.GetString(Page.Title); %> + <% Page.Title = ViewState["orgtitle"] + " - " + YavscHelpers.SiteName; %> + + + + + + + + + + +
+ +

<%=ViewState["orgtitle"]%> - +"><%= YavscHelpers.SiteName %> +

+
+ +<% if (ViewData["Error"]!=null) { %> +
+<%= Html.Encode(ViewData["Error"]) %> +
+<% } %> +<% if (ViewData["Message"]!=null) { %> +
+<%= Html.Encode(ViewData["Message"]) %> +
+<% } %> + +
+
+ + + + + +
+ + + + + diff --git a/web/Views/Admin/Created.aspx b/web/Views/Admin/Created.aspx new file mode 100644 index 00000000..375fc051 --- /dev/null +++ b/web/Views/Admin/Created.aspx @@ -0,0 +1,8 @@ +<%@ Page Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %> + +

<%=Html.Encode(ViewData["BackupName"])%> Restauration

+

Error message

<%= Html.Encode(Model.Error) %>
+

Message

<%= Html.Encode(Model.Message) %>
+

Exit Code

<%= Html.Encode(Model.ExitCode) %>
+ +
diff --git a/web/Views/Admin/InitDb.aspx b/web/Views/Admin/InitDb.aspx new file mode 100644 index 00000000..d5be1462 --- /dev/null +++ b/web/Views/Admin/InitDb.aspx @@ -0,0 +1,37 @@ +<%@ Page Title="Restore" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %> + +<%= Html.ValidationSummary("Restore a database backup") %> +<% using (Html.BeginForm("Restore","Admin")) { %> + +<% string [] bcfiles = (string[]) ViewData["Backups"]; %> + + +<%= Html.CheckBox("dataOnly")%> + +<%= Html.LabelFor(model => model.Host) %>: +<%= Html.TextBox( "Host" ) %> +<%= Html.ValidationMessage("Host", "*") %>
+<%= Html.LabelFor(model => model.Port) %>: +<%= Html.TextBox( "Port" ) %> +<%= Html.ValidationMessage("Port", "*") %>
+<%= Html.LabelFor(model => model.Dbname) %>: +<%= Html.TextBox( "Dbname" ) %> +<%= Html.ValidationMessage("Dbname", "*") %>
+<%= Html.LabelFor(model => model.Dbuser) %>: +<%= Html.TextBox( "Dbuser" ) %> +<%= Html.ValidationMessage("Dbuser", "*") %>
+<%= Html.LabelFor(model => model.Password) %>: +<%= Html.Password( "Password" ) %> +<%= Html.ValidationMessage("Password", "*") %>
+ + +<% } %> +
diff --git a/web/instdbws.sql b/web/instdbws.sql index dddcf5de..8d0e51f6 100644 --- a/web/instdbws.sql +++ b/web/instdbws.sql @@ -1,20 +1,159 @@ + + -- Table: users -CREATE TABLE blfiles +-- DROP TABLE users; + +CREATE TABLE users ( - _id bigint NOT NULL DEFAULT nextval('bltags__id_seq'::regclass), -- Identifier - name character varying(2048), -- File Name, relative to the user home directory, must not begin with a slash. - blid bigint, -- Blog entry identifier (foreign key) - CONSTRAINT bltags_pkey PRIMARY KEY (_id), - CONSTRAINT bltags_blid_fkey FOREIGN KEY (blid) - REFERENCES blog (_id) MATCH SIMPLE + pkid character varying NOT NULL, + username character varying(255) NOT NULL, + applicationname character varying(255) NOT NULL, + email character varying(128) NOT NULL, + comment character varying(255), + passw character varying(128) NOT NULL, + passwordquestion character varying(255), + passwordanswer character varying(255), + isapproved boolean, + lastactivitydate timestamp with time zone, + lastlogindate timestamp with time zone, + lastpasswordchangeddate timestamp with time zone, + creationdate timestamp with time zone, + islockedout boolean, + lastlockedoutdate timestamp with time zone, + failedpasswordattemptcount integer, + failedpasswordattemptwindowstart timestamp with time zone, + failedpasswordanswerattemptcount integer, + failedpasswordanswerattemptwindowstart timestamp with time zone, + CONSTRAINT users_pkey PRIMARY KEY (pkid), + CONSTRAINT uniquelogin UNIQUE (applicationname, email), + CONSTRAINT uniquemail UNIQUE (applicationname, username) +) +WITH ( + OIDS=FALSE +); + +-- Table: roles + +-- DROP TABLE roles; + +CREATE TABLE roles +( + rolename character varying(255) NOT NULL, + applicationname character varying(255) NOT NULL, + comment character varying(255) NOT NULL, + CONSTRAINT roles_pkey PRIMARY KEY (rolename, applicationname) +) +WITH ( + OIDS=FALSE +); + +COMMENT ON TABLE roles + IS 'Web application roles'; + + -- Table: usersroles + +-- DROP TABLE usersroles; + +CREATE TABLE usersroles +( + applicationname character varying(255) NOT NULL, + rolename character varying(255) NOT NULL, + username character varying(255) NOT NULL, + CONSTRAINT attrroles_pkey PRIMARY KEY (applicationname, rolename, username), + CONSTRAINT usersroles_fk_role FOREIGN KEY (applicationname, rolename) + REFERENCES roles (applicationname, rolename) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT usersroles_fk_user FOREIGN KEY (applicationname, username) + REFERENCES users (applicationname, username) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE ) WITH ( OIDS=FALSE ); -COMMENT ON COLUMN blfiles._id IS 'Identifier'; -COMMENT ON COLUMN blfiles.name IS 'File Name, relative to the user home directory, must not begin with a slash.'; -COMMENT ON COLUMN blfiles.blid IS 'Blog entry identifier (foreign key)'; + +-- DROP TABLE profiles; + +CREATE TABLE profiles +( + uniqueid bigserial NOT NULL, + username character varying(255) NOT NULL, + applicationname character varying(255) NOT NULL, + isanonymous boolean, + lastactivitydate timestamp with time zone, + lastupdateddate timestamp with time zone, + CONSTRAINT profiles_pkey PRIMARY KEY (uniqueid), + CONSTRAINT fk_profileusers FOREIGN KEY (username, applicationname) + REFERENCES users (username, applicationname) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE, + CONSTRAINT pkprofiles UNIQUE (username, applicationname) +) +WITH ( + OIDS=FALSE + ); + + -- Table: profiledata + +-- DROP TABLE profiledata; + +CREATE TABLE profiledata +( + uniqueid integer, + zipcode character varying(10), + cityandstate character varying(255), + blogtitle character varying(255), -- Blog Title + address character varying(2048), -- Postal address + country character varying(100), + website character varying(256), + blogvisible boolean, + hasavatar boolean, -- True when user has specified an image for avatar + name character varying(1024), + phone character varying(15), + mobile character varying(15), + accountnumber character varying(15), -- Numero de compte + bankedkey integer, -- clé RIB + bankcode character varying(5), -- Code banque + wicketcode character varying(5), + iban character varying(33), + bic character varying(15), + gtoken character varying(512), + grefreshtoken character varying(512), -- Google refresh token + gtokentype character varying(256), -- Google access token type + gcalid character varying(255), + gtokenexpir timestamp with time zone, -- Google access token expiration date + avatar character varying(512), -- url for an avatar + gcalapi boolean NOT NULL DEFAULT false, -- true when user authorized to use its Google calendar + CONSTRAINT fkprofiles2 FOREIGN KEY (uniqueid) + REFERENCES profiles (uniqueid) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE +) +WITH ( + OIDS=FALSE +); + +COMMENT ON COLUMN profiledata.blogtitle IS 'Blog Title'; +COMMENT ON COLUMN profiledata.address IS 'Postal address'; +COMMENT ON COLUMN profiledata.hasavatar IS 'True when user has specified an image for avatar'; +COMMENT ON COLUMN profiledata.accountnumber IS 'Numero de compte'; +COMMENT ON COLUMN profiledata.bankedkey IS 'clé RIB'; +COMMENT ON COLUMN profiledata.bankcode IS 'Code banque'; +COMMENT ON COLUMN profiledata.gtoken IS 'Google authentification token'; +COMMENT ON COLUMN profiledata.gcalid IS 'Google calendar identifier'; +COMMENT ON COLUMN profiledata.gtokentype IS 'Google access token type'; +COMMENT ON COLUMN profiledata.grefreshtoken IS 'Google refresh token'; +COMMENT ON COLUMN profiledata.gtokenexpir IS 'Google access token expiration date'; +COMMENT ON COLUMN profiledata.avatar IS 'url for an avatar'; + + -- Index: fki_fkprofiles2 + +-- DROP INDEX fki_fkprofiles2; + +CREATE INDEX fki_fkprofiles2 + ON profiledata + USING btree + (uniqueid); + + -- Table: profiles + -- Table: blog @@ -39,6 +178,24 @@ WITH ( OIDS=FALSE ); + -- Table: blfiles +CREATE TABLE blfiles +( + _id bigserial NOT NULL, -- Identifier + name character varying(2048), -- File Name, relative to the user home directory, must not begin with a slash. + blid bigint, -- Blog entry identifier (foreign key) + CONSTRAINT bltags_pkey PRIMARY KEY (_id), + CONSTRAINT bltags_blid_fkey FOREIGN KEY (blid) + REFERENCES blog (_id) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE +) +WITH ( + OIDS=FALSE +); +COMMENT ON COLUMN blfiles._id IS 'Identifier'; +COMMENT ON COLUMN blfiles.name IS 'File Name, relative to the user home directory, must not begin with a slash.'; +COMMENT ON COLUMN blfiles.blid IS 'Blog entry identifier (foreign key)'; + -- Table: commandes -- DROP TABLE commandes; @@ -166,29 +323,7 @@ WITH ( OIDS=FALSE ); - -- Table: histowritting --- DROP TABLE histowritting; - -CREATE TABLE histowritting -( - datechange timestamp with time zone NOT NULL DEFAULT now(), - status integer, - wrtid bigint NOT NULL, - username character varying(255), - applicationname character varying, - _id bigserial NOT NULL, - CONSTRAINT histowritting_pkey PRIMARY KEY (_id), - CONSTRAINT histowritting_username_fkey FOREIGN KEY (username, applicationname) - REFERENCES users (username, applicationname) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION, - CONSTRAINT histowritting_wrtid_fkey FOREIGN KEY (wrtid) - REFERENCES writtings (_id) MATCH SIMPLE - ON UPDATE CASCADE ON DELETE CASCADE -) -WITH ( - OIDS=FALSE -); -- Table: hr @@ -225,88 +360,6 @@ COMMENT ON COLUMN product."Description" IS 'Product description'; - -- Table: profiledata - --- DROP TABLE profiledata; - -CREATE TABLE profiledata -( - uniqueid integer, - zipcode character varying(10), - cityandstate character varying(255), - blogtitle character varying(255), -- Blog Title - address character varying(2048), -- Postal address - country character varying(100), - website character varying(256), - blogvisible boolean, - hasavatar boolean, -- True when user has specified an image for avatar - name character varying(1024), - phone character varying(15), - mobile character varying(15), - accountnumber character varying(15), -- Numero de compte - bankedkey integer, -- clé RIB - bankcode character varying(5), -- Code banque - wicketcode character varying(5), - iban character varying(33), - bic character varying(15), - gtoken character varying(512), - grefreshtoken character varying(512), -- Google refresh token - gtokentype character varying(256), -- Google access token type - gcalid character varying(255), - gtokenexpir timestamp with time zone, -- Google access token expiration date - avatar character varying(512), -- url for an avatar - gcalapi boolean NOT NULL DEFAULT false, -- true when user authorized to use its Google calendar - CONSTRAINT fkprofiles2 FOREIGN KEY (uniqueid) - REFERENCES profiles (uniqueid) MATCH SIMPLE - ON UPDATE CASCADE ON DELETE CASCADE -) -WITH ( - OIDS=FALSE -); - -COMMENT ON COLUMN profiledata.blogtitle IS 'Blog Title'; -COMMENT ON COLUMN profiledata.address IS 'Postal address'; -COMMENT ON COLUMN profiledata.hasavatar IS 'True when user has specified an image for avatar'; -COMMENT ON COLUMN profiledata.accountnumber IS 'Numero de compte'; -COMMENT ON COLUMN profiledata.bankedkey IS 'clé RIB'; -COMMENT ON COLUMN profiledata.bankcode IS 'Code banque'; -COMMENT ON COLUMN profiledata.gtoken IS 'Google authentification token'; -COMMENT ON COLUMN profiledata.gcalid IS 'Google calendar identifier'; -COMMENT ON COLUMN profiledata.gtokentype IS 'Google access token type'; -COMMENT ON COLUMN profiledata.grefreshtoken IS 'Google refresh token'; -COMMENT ON COLUMN profiledata.gtokenexpir IS 'Google access token expiration date'; -COMMENT ON COLUMN profiledata.avatar IS 'url for an avatar'; - - -- Index: fki_fkprofiles2 - --- DROP INDEX fki_fkprofiles2; - -CREATE INDEX fki_fkprofiles2 - ON profiledata - USING btree - (uniqueid); - - -- Table: profiles - --- DROP TABLE profiles; - -CREATE TABLE profiles -( - uniqueid bigserial NOT NULL, - username character varying(255) NOT NULL, - applicationname character varying(255) NOT NULL, - isanonymous boolean, - lastactivitydate timestamp with time zone, - lastupdateddate timestamp with time zone, - CONSTRAINT profiles_pkey PRIMARY KEY (uniqueid), - CONSTRAINT fk_profileusers FOREIGN KEY (username, applicationname) - REFERENCES users (username, applicationname) MATCH SIMPLE - ON UPDATE CASCADE ON DELETE CASCADE, - CONSTRAINT pkprofiles UNIQUE (username, applicationname) -) -WITH ( - OIDS=FALSE - ); -- Table: projet @@ -338,24 +391,7 @@ CREATE INDEX fki_pk_project_manager USING btree (managerid COLLATE pg_catalog."default", "ApplicationName" COLLATE pg_catalog."default"); - -- Table: roles - --- DROP TABLE roles; - -CREATE TABLE roles -( - rolename character varying(255) NOT NULL, - applicationname character varying(255) NOT NULL, - comment character varying(255) NOT NULL, - CONSTRAINT roles_pkey PRIMARY KEY (rolename, applicationname) -) -WITH ( - OIDS=FALSE -); - -COMMENT ON TABLE roles - IS 'Web application roles'; - + -- Table: stocksymbols -- DROP TABLE stocksymbols; @@ -412,6 +448,29 @@ WITH ( OIDS=FALSE ); + + -- Table: tasks + +-- DROP TABLE tasks; + +CREATE TABLE tasks +( + id bigserial NOT NULL, + name character varying NOT NULL, + start date NOT NULL, + endd date NOT NULL, + tdesc text NOT NULL, + prid bigint NOT NULL, + CONSTRAINT tasks_pk_new PRIMARY KEY (id), + CONSTRAINT tasks_fk_new FOREIGN KEY (prid) + REFERENCES projet (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +) +WITH ( + OIDS=FALSE +); + + -- Table: taskdeps -- DROP TABLE taskdeps; @@ -457,105 +516,6 @@ CREATE INDEX fki_pk_foreign_task - -- Table: tasks - --- DROP TABLE tasks; - -CREATE TABLE tasks -( - id bigserial NOT NULL, - name character varying NOT NULL, - start date NOT NULL, - endd date NOT NULL, - tdesc text NOT NULL, - prid bigint NOT NULL, - CONSTRAINT tasks_pk_new PRIMARY KEY (id), - CONSTRAINT tasks_fk_new FOREIGN KEY (prid) - REFERENCES projet (id) MATCH SIMPLE - ON UPDATE NO ACTION ON DELETE NO ACTION -) -WITH ( - OIDS=FALSE -); - - -- Table: users - --- DROP TABLE users; - -CREATE TABLE users -( - pkid character varying NOT NULL, - username character varying(255) NOT NULL, - applicationname character varying(255) NOT NULL, - email character varying(128) NOT NULL, - comment character varying(255), - passw character varying(128) NOT NULL, - passwordquestion character varying(255), - passwordanswer character varying(255), - isapproved boolean, - lastactivitydate timestamp with time zone, - lastlogindate timestamp with time zone, - lastpasswordchangeddate timestamp with time zone, - creationdate timestamp with time zone, - islockedout boolean, - lastlockedoutdate timestamp with time zone, - failedpasswordattemptcount integer, - failedpasswordattemptwindowstart timestamp with time zone, - failedpasswordanswerattemptcount integer, - failedpasswordanswerattemptwindowstart timestamp with time zone, - CONSTRAINT users_pkey PRIMARY KEY (pkid), - CONSTRAINT uniquelogin UNIQUE (applicationname, email), - CONSTRAINT uniquemail UNIQUE (applicationname, username) -) -WITH ( - OIDS=FALSE -); - - -- Table: usersroles - --- DROP TABLE usersroles; - -CREATE TABLE usersroles -( - applicationname character varying(255) NOT NULL, - rolename character varying(255) NOT NULL, - username character varying(255) NOT NULL, - CONSTRAINT attrroles_pkey PRIMARY KEY (applicationname, rolename, username), - CONSTRAINT usersroles_fk_role FOREIGN KEY (applicationname, rolename) - REFERENCES roles (applicationname, rolename) MATCH SIMPLE - ON UPDATE CASCADE ON DELETE CASCADE, - CONSTRAINT usersroles_fk_user FOREIGN KEY (applicationname, username) - REFERENCES users (applicationname, username) MATCH SIMPLE - ON UPDATE CASCADE ON DELETE CASCADE -) -WITH ( - OIDS=FALSE -); - - -- Table: wrfiles - --- DROP TABLE wrfiles; - -CREATE TABLE wrfiles -( - _id bigint NOT NULL DEFAULT nextval('wrtags__id_seq'::regclass), -- Identifier - name character varying(2048), -- File Name, relative to the user home directory, must not begin with a slash. - wrid bigint, -- Writting identifier (foreign key) - CONSTRAINT wrtags_pkey PRIMARY KEY (_id), - CONSTRAINT wrtags_wrid_fkey FOREIGN KEY (wrid) - REFERENCES writtings (_id) MATCH SIMPLE - ON UPDATE CASCADE ON DELETE CASCADE -) -WITH ( - OIDS=FALSE -); - -COMMENT ON COLUMN wrfiles._id IS 'Identifier'; -COMMENT ON COLUMN wrfiles.name IS 'File Name, relative to the user home directory, must not begin with a slash.'; -COMMENT ON COLUMN wrfiles.wrid IS 'Writting identifier (foreign key)'; - - - -- Table: writtings -- DROP TABLE writtings; @@ -585,6 +545,8 @@ COMMENT ON COLUMN writtings.productid IS 'Product reference ... may be a key in COMMENT ON COLUMN writtings.ucost IS 'en euro.?'; + + -- Table: wrtags -- DROP TABLE wrtags; @@ -615,3 +577,49 @@ CREATE INDEX fki_cstwrtagsref (tagid); + -- Table: wrfiles + +-- DROP TABLE wrfiles; + +CREATE TABLE wrfiles +( + _id bigserial NOT NULL , -- Identifier + name character varying(2048), -- File Name, relative to the user home directory, must not begin with a slash. + wrid bigint, -- Writting identifier (foreign key) + CONSTRAINT wrtags_pkey PRIMARY KEY (_id), + CONSTRAINT wrtags_wrid_fkey FOREIGN KEY (wrid) + REFERENCES writtings (_id) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE +) +WITH ( + OIDS=FALSE +); + +COMMENT ON COLUMN wrfiles._id IS 'Identifier'; +COMMENT ON COLUMN wrfiles.name IS 'File Name, relative to the user home directory, must not begin with a slash.'; +COMMENT ON COLUMN wrfiles.wrid IS 'Writting identifier (foreign key)'; + + + -- Table: histowritting + +-- DROP TABLE histowritting; + +CREATE TABLE histowritting +( + datechange timestamp with time zone NOT NULL DEFAULT now(), + status integer, + wrtid bigint NOT NULL, + username character varying(255), + applicationname character varying, + _id bigserial NOT NULL, + CONSTRAINT histowritting_pkey PRIMARY KEY (_id), + CONSTRAINT histowritting_username_fkey FOREIGN KEY (username, applicationname) + REFERENCES users (username, applicationname) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT histowritting_wrtid_fkey FOREIGN KEY (wrtid) + REFERENCES writtings (_id) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE +) +WITH ( + OIDS=FALSE +); \ No newline at end of file diff --git a/web/uninstdbws.sql b/web/uninstdbws.sql index 29482b18..443e8754 100644 --- a/web/uninstdbws.sql +++ b/web/uninstdbws.sql @@ -1,5 +1,24 @@ - + +DROP TABLE commandes; +DROP TABLE hr; +DROP TABLE blfiles; DROP table usersroles CASCADE; drop table roles CASCADE; Drop table users CASCADE; - + DROP TABLE profiles CASCADE; +DROP TABLE product CASCADE; +DROP TABLE stocksymbols CASCADE; +DROP TABLE tag CASCADE; +DROP TABLE blog CASCADE; +DROP TABLE writtings CASCADE; +DROP TABLE tasks CASCADE; +DROP TABLE estimate CASCADE; +DROP TABLE histoestim CASCADE; +DROP TABLE histowritting CASCADE; +DROP TABLE projet CASCADE; +DROP TABLE tagged CASCADE; +DROP TABLE profiledata CASCADE; +DROP TABLE wrtags CASCADE; +DROP TABLE taskdeps CASCADE; +DROP TABLE wrfiles CASCADE; +DROP TABLE comment CASCADE; \ No newline at end of file