Selaa lähdekoodia

bug #10 fixed: minimal SQL scripting is added

damien 11 vuotta sitten
vanhempi
commit
daa5940fa0

+ 53 - 0
doc/database/pod-create-database-and-user.sh Näytä tiedosto

@@ -0,0 +1,53 @@
1
+#!/bin/bash
2
+POD_DB_USER='pod_master'
3
+POD_DB_USER_PASSWORD='pod_master_password'
4
+POD_DB_NAME='pod'
5
+
6
+# DB_HOST='127.0.0.1'
7
+# DB_PORT='5432'
8
+
9
+BUILD_DB_SQL="
10
+CREATE USER ${POD_DB_USER} WITH PASSWORD '${POD_DB_USER_PASSWORD}';
11
+CREATE DATABASE ${POD_DB_NAME};
12
+GRANT ALL PRIVILEGES ON DATABASE ${POD_DB_NAME} to ${POD_DB_USER};
13
+"
14
+
15
+if [ `whoami` != 'postgres' ]; then
16
+  echo "This script is intended to be executed as postgres user."
17
+  exit 1
18
+fi
19
+
20
+echo "About to create a new database and user:"
21
+echo "- database: ${POD_DB_NAME}"
22
+echo "- user:     ${POD_DB_USER}"
23
+echo "- password: xxxxxx"
24
+echo
25
+echo "Sleeping 10 seconds."
26
+echo "- stop process by CTRL+C if in doubt."
27
+echo "..."
28
+sleep 10
29
+
30
+echo ${BUILD_DB_SQL} | psql
31
+#  -h ${DB_HOST} -p ${DB_PORT}
32
+
33
+
34
+# IF AN ERROR OCCURS, YOU CAn SIMPLY RESET YOUR POSTGRES SERVER 
35
+# WITH THE FOLLOWING SQL COMMANDS (EXECUTED AS postgres USER):
36
+#
37
+# DROP DATABASE pod
38
+# DROP OWNED BY pod_master;
39
+# DROP USER pod_master;
40
+#
41
+# or more faster: 
42
+#
43
+# psql -c "DROP DATABASE pod;"
44
+# psql -c "DROP OWNED BY pod_master;"
45
+# psql -c "DROP USER pod_master;"
46
+
47
+echo
48
+echo "You can now init schema and data by running the following commands:"
49
+echo
50
+echo "psql -h 127.0.0.1 -U ${POD_DB_USER} -W ${POD_DB_NAME} < pod-schema-2013.11.15-15.54.45.sql"
51
+echo "psql -h 127.0.0.1 -U ${POD_DB_USER} -W ${POD_DB_NAME} < pod-init-data-2013.11.15-15.54.45.sql"
52
+echo 
53
+echo "note that you'll be asked for the password"

+ 11 - 0
doc/database/pod-init-data-2013.11.15-15.54.45.sql Näytä tiedosto

@@ -0,0 +1,11 @@
1
+--
2
+-- PostgreSQL database dump
3
+--
4
+
5
+SET statement_timeout = 0;
6
+SET client_encoding = 'UTF8';
7
+SET standard_conforming_strings = on;
8
+SET check_function_bodies = false;
9
+SET client_min_messages = warning;
10
+
11
+INSERT INTO pod_group(group_id, group_name, display_name, created) VALUES ('1', 'user', 'Users', NOW());

+ 275 - 0
doc/database/pod-schema-2013.11.15-15.54.45.sql Näytä tiedosto

@@ -0,0 +1,275 @@
1
+--
2
+-- PostgreSQL database dump
3
+--
4
+
5
+SET statement_timeout = 0;
6
+SET client_encoding = 'UTF8';
7
+SET standard_conforming_strings = on;
8
+SET check_function_bodies = false;
9
+SET client_min_messages = warning;
10
+
11
+CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
12
+COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
13
+
14
+
15
+SET search_path = public, pg_catalog;
16
+
17
+CREATE FUNCTION set_created_at() RETURNS trigger
18
+    LANGUAGE plpgsql
19
+    AS $$
20
+BEGIN
21
+    NEW.created_at = CURRENT_TIMESTAMP;
22
+    NEW.updated_at = CURRENT_TIMESTAMP;
23
+    RETURN NEW;
24
+END;
25
+$$;
26
+
27
+
28
+ALTER FUNCTION public.set_created_at() OWNER TO pod_master;
29
+
30
+CREATE FUNCTION set_updated_at() RETURNS trigger
31
+    LANGUAGE plpgsql
32
+    AS $$
33
+BEGIN
34
+    NEW.updated_at = CURRENT_TIMESTAMP;
35
+    RETURN NEW;
36
+END;
37
+$$;
38
+
39
+
40
+ALTER FUNCTION public.set_updated_at() OWNER TO pod_master;
41
+
42
+SET default_tablespace = '';
43
+
44
+SET default_with_oids = false;
45
+
46
+CREATE TABLE migrate_version (
47
+    version_num character varying(32) NOT NULL
48
+);
49
+
50
+ALTER TABLE public.migrate_version OWNER TO pod_master;
51
+
52
+CREATE TABLE pod_node_status (
53
+    status_type character varying(16) NOT NULL,
54
+    status_id character varying(16) NOT NULL,
55
+    status_label character varying(256),
56
+    hexa_color_foreground character(7),
57
+    hexa_color_background character(7)
58
+);
59
+
60
+ALTER TABLE public.pod_node_status OWNER TO pod_master;
61
+
62
+CREATE TABLE pod_nodes (
63
+    node_id integer NOT NULL,
64
+    parent_id integer,
65
+    node_order integer DEFAULT 1,
66
+    node_type character varying(16) DEFAULT 'data'::character varying NOT NULL,
67
+    created_at timestamp without time zone,
68
+    updated_at timestamp without time zone,
69
+    data_label character varying(1024),
70
+    data_content text DEFAULT ''::text NOT NULL,
71
+    data_datetime timestamp without time zone,
72
+    node_status character varying(16) DEFAULT 'new'::character varying,
73
+    data_reminder_datetime timestamp without time zone,
74
+    data_file_name character varying(255),
75
+    data_file_content bytea,
76
+    data_file_mime_type character varying(255),
77
+    parent_tree_path character varying(255),
78
+    node_depth integer DEFAULT 0 NOT NULL,
79
+    owner_id integer
80
+);
81
+
82
+
83
+ALTER TABLE public.pod_nodes OWNER TO pod_master;
84
+
85
+CREATE SEQUENCE pod_nodes__node_id__sequence
86
+    START WITH 1
87
+    INCREMENT BY 1
88
+    NO MINVALUE
89
+    NO MAXVALUE
90
+    CACHE 1;
91
+
92
+
93
+ALTER TABLE public.pod_nodes__node_id__sequence OWNER TO pod_master;
94
+
95
+ALTER SEQUENCE pod_nodes__node_id__sequence OWNED BY pod_nodes.node_id;
96
+
97
+
98
+CREATE TABLE pod_group (
99
+    group_id integer NOT NULL,
100
+    group_name character varying(16) NOT NULL,
101
+    display_name character varying(255),
102
+    created timestamp without time zone
103
+);
104
+
105
+
106
+ALTER TABLE public.pod_group OWNER TO pod_master;
107
+
108
+CREATE SEQUENCE pod_group_group_id_seq
109
+    START WITH 1
110
+    INCREMENT BY 1
111
+    NO MINVALUE
112
+    NO MAXVALUE
113
+    CACHE 1;
114
+
115
+
116
+ALTER TABLE public.pod_group_group_id_seq OWNER TO pod_master;
117
+
118
+ALTER SEQUENCE pod_group_group_id_seq OWNED BY pod_group.group_id;
119
+
120
+
121
+CREATE TABLE pod_group_permission (
122
+    group_id integer NOT NULL,
123
+    permission_id integer NOT NULL
124
+);
125
+
126
+
127
+ALTER TABLE public.pod_group_permission OWNER TO pod_master;
128
+
129
+CREATE TABLE pod_permission (
130
+    permission_id integer NOT NULL,
131
+    permission_name character varying(63) NOT NULL,
132
+    description character varying(255)
133
+);
134
+
135
+
136
+ALTER TABLE public.pod_permission OWNER TO pod_master;
137
+
138
+CREATE SEQUENCE pod_permission_permission_id_seq
139
+    START WITH 1
140
+    INCREMENT BY 1
141
+    NO MINVALUE
142
+    NO MAXVALUE
143
+    CACHE 1;
144
+
145
+
146
+ALTER TABLE public.pod_permission_permission_id_seq OWNER TO pod_master;
147
+
148
+ALTER SEQUENCE pod_permission_permission_id_seq OWNED BY pod_permission.permission_id;
149
+
150
+
151
+CREATE TABLE pod_user (
152
+    user_id integer NOT NULL,
153
+    email_address character varying(255) NOT NULL,
154
+    display_name character varying(255),
155
+    password character varying(128),
156
+    created timestamp without time zone
157
+);
158
+
159
+
160
+ALTER TABLE public.pod_user OWNER TO pod_master;
161
+
162
+CREATE TABLE pod_user_group (
163
+    user_id integer NOT NULL,
164
+    group_id integer NOT NULL
165
+);
166
+
167
+
168
+ALTER TABLE public.pod_user_group OWNER TO pod_master;
169
+
170
+CREATE SEQUENCE pod_user_user_id_seq
171
+    START WITH 1
172
+    INCREMENT BY 1
173
+    NO MINVALUE
174
+    NO MAXVALUE
175
+    CACHE 1;
176
+
177
+
178
+ALTER TABLE public.pod_user_user_id_seq OWNER TO pod_master;
179
+
180
+ALTER SEQUENCE pod_user_user_id_seq OWNED BY pod_user.user_id;
181
+
182
+
183
+ALTER TABLE ONLY pod_nodes ALTER COLUMN node_id SET DEFAULT nextval('pod_nodes__node_id__sequence'::regclass);
184
+
185
+ALTER TABLE ONLY pod_group ALTER COLUMN group_id SET DEFAULT nextval('pod_group_group_id_seq'::regclass);
186
+
187
+
188
+ALTER TABLE ONLY pod_permission ALTER COLUMN permission_id SET DEFAULT nextval('pod_permission_permission_id_seq'::regclass);
189
+
190
+
191
+ALTER TABLE ONLY pod_user ALTER COLUMN user_id SET DEFAULT nextval('pod_user_user_id_seq'::regclass);
192
+
193
+ALTER TABLE ONLY pod_node_status
194
+    ADD CONSTRAINT pod_node_status__pk PRIMARY KEY (status_id);
195
+
196
+ALTER TABLE ONLY pod_nodes
197
+    ADD CONSTRAINT pod_nodes_pk PRIMARY KEY (node_id);
198
+
199
+
200
+ALTER TABLE ONLY pod_group
201
+    ADD CONSTRAINT pod_group_group_name_key UNIQUE (group_name);
202
+
203
+
204
+ALTER TABLE ONLY pod_group_permission
205
+    ADD CONSTRAINT pod_group_permission_pkey PRIMARY KEY (group_id, permission_id);
206
+
207
+
208
+ALTER TABLE ONLY pod_group
209
+    ADD CONSTRAINT pod_group_pkey PRIMARY KEY (group_id);
210
+
211
+
212
+ALTER TABLE ONLY pod_permission
213
+    ADD CONSTRAINT pod_permission_permission_name_key UNIQUE (permission_name);
214
+
215
+
216
+ALTER TABLE ONLY pod_permission
217
+    ADD CONSTRAINT pod_permission_pkey PRIMARY KEY (permission_id);
218
+
219
+
220
+ALTER TABLE ONLY pod_user
221
+    ADD CONSTRAINT pod_user_email_address_key UNIQUE (email_address);
222
+
223
+
224
+ALTER TABLE ONLY pod_user_group
225
+    ADD CONSTRAINT pod_user_group_pkey PRIMARY KEY (user_id, group_id);
226
+
227
+
228
+ALTER TABLE ONLY pod_user
229
+    ADD CONSTRAINT pod_user_pkey PRIMARY KEY (user_id);
230
+
231
+
232
+CREATE INDEX fki_pod_nodes__owner_id_fk ON pod_nodes USING btree (owner_id);
233
+
234
+
235
+CREATE INDEX fki_pod_nodes__parent_id_fk ON pod_nodes USING btree (parent_id);
236
+
237
+
238
+CREATE INDEX idx_pod_nodes__parent_tree_path ON pod_nodes USING btree (parent_tree_path);
239
+
240
+
241
+CREATE TRIGGER pod_nodes__on_insert_set_created_at BEFORE INSERT ON pod_nodes FOR EACH ROW EXECUTE PROCEDURE set_created_at();
242
+
243
+
244
+CREATE TRIGGER pod_nodes__on_update_set_updated_at BEFORE UPDATE ON pod_nodes FOR EACH ROW EXECUTE PROCEDURE set_updated_at();
245
+
246
+
247
+ALTER TABLE ONLY pod_nodes
248
+    ADD CONSTRAINT pod_nodes__owner_id_fk FOREIGN KEY (owner_id) REFERENCES pod_user(user_id);
249
+
250
+
251
+ALTER TABLE ONLY pod_nodes
252
+    ADD CONSTRAINT pod_nodes__parent_id_fk FOREIGN KEY (parent_id) REFERENCES pod_nodes(node_id);
253
+
254
+
255
+ALTER TABLE ONLY pod_group_permission
256
+    ADD CONSTRAINT pod_group_permission_group_id_fkey FOREIGN KEY (group_id) REFERENCES pod_group(group_id) ON UPDATE CASCADE ON DELETE CASCADE;
257
+
258
+
259
+ALTER TABLE ONLY pod_group_permission
260
+    ADD CONSTRAINT pod_group_permission_permission_id_fkey FOREIGN KEY (permission_id) REFERENCES pod_permission(permission_id) ON UPDATE CASCADE ON DELETE CASCADE;
261
+
262
+
263
+ALTER TABLE ONLY pod_user_group
264
+    ADD CONSTRAINT pod_user_group_group_id_fkey FOREIGN KEY (group_id) REFERENCES pod_group(group_id) ON UPDATE CASCADE ON DELETE CASCADE;
265
+
266
+
267
+ALTER TABLE ONLY pod_user_group
268
+    ADD CONSTRAINT pod_user_group_user_id_fkey FOREIGN KEY (user_id) REFERENCES pod_user(user_id) ON UPDATE CASCADE ON DELETE CASCADE;
269
+
270
+
271
+REVOKE ALL ON SCHEMA public FROM PUBLIC;
272
+REVOKE ALL ON SCHEMA public FROM postgres;
273
+GRANT ALL ON SCHEMA public TO postgres;
274
+GRANT ALL ON SCHEMA public TO PUBLIC;
275
+