-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathPresentingPerl-Schema-2.0-PostgreSQL.sql
100 lines (87 loc) · 2.44 KB
/
PresentingPerl-Schema-2.0-PostgreSQL.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
--
-- Created by SQL::Translator::Producer::PostgreSQL
-- Created on Sat Mar 24 17:18:30 2012
--
--
-- Table: announcements
--
DROP TABLE "announcements" CASCADE;
CREATE TABLE "announcements" (
"id" serial NOT NULL,
"made_at" timestamp NOT NULL,
"bucket_slug" text,
PRIMARY KEY ("id")
);
CREATE INDEX "announcements_idx_bucket_slug" on "announcements" ("bucket_slug");
--
-- Table: buckets
--
DROP TABLE "buckets" CASCADE;
CREATE TABLE "buckets" (
"slug" text NOT NULL,
"name" text NOT NULL,
PRIMARY KEY ("slug")
);
--
-- Table: roles
--
DROP TABLE "roles" CASCADE;
CREATE TABLE "roles" (
"id" serial NOT NULL,
"role" text,
PRIMARY KEY ("id")
);
--
-- Table: user_role
--
DROP TABLE "user_role" CASCADE;
CREATE TABLE "user_role" (
"user_id" integer NOT NULL,
"role_id" integer NOT NULL,
PRIMARY KEY ("user_id", "role_id")
);
CREATE INDEX "user_role_idx_role_id" on "user_role" ("role_id");
CREATE INDEX "user_role_idx_user_id" on "user_role" ("user_id");
--
-- Table: users
--
DROP TABLE "users" CASCADE;
CREATE TABLE "users" (
"id" serial NOT NULL,
"username" text,
"password" character varying(255),
"email_address" text,
"first_name" text,
"last_name" text,
"active" integer,
PRIMARY KEY ("id")
);
--
-- Table: videos
--
DROP TABLE "videos" CASCADE;
CREATE TABLE "videos" (
"slug" text NOT NULL,
"bucket_slug" text NOT NULL,
"name" text NOT NULL,
"author" text NOT NULL,
"details" text DEFAULT '' NOT NULL,
"external_embed_link" text DEFAULT '',
"announcement_id" integer NOT NULL,
PRIMARY KEY ("slug", "bucket_slug")
);
CREATE INDEX "videos_idx_announcement_id_bucket_slug" on "videos" ("announcement_id", "bucket_slug");
CREATE INDEX "videos_idx_bucket_slug" on "videos" ("bucket_slug");
--
-- Foreign Key Definitions
--
ALTER TABLE "announcements" ADD FOREIGN KEY ("bucket_slug")
REFERENCES "buckets" ("slug") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;
ALTER TABLE "user_role" ADD FOREIGN KEY ("role_id")
REFERENCES "roles" ("id") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;
ALTER TABLE "user_role" ADD FOREIGN KEY ("user_id")
REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;
ALTER TABLE "videos" ADD FOREIGN KEY ("announcement_id", "bucket_slug")
REFERENCES "announcements" ("id", "bucket_slug") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;
ALTER TABLE "videos" ADD FOREIGN KEY ("bucket_slug")
REFERENCES "buckets" ("slug") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;