-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdbfoodfy_updated.sql
132 lines (104 loc) · 3.34 KB
/
dbfoodfy_updated.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
DROP DATABASE IF EXISTS dbfoodfy
CREATE DATABASE dbfoodfy
CREATE TABLE "recipes" (
"id" SERIAL PRIMARY KEY,
"user_id" int,
"title" text NOT NULL,
"information" text,
"chef_id" int NOT NULL,
--"steps" text[] NOT NULL,
--"ingredients" text[] NOT NULL,
"created_at" timestamp NOT NULL DEFAULT (now()),
"updated_at" timestamp DEFAULT (now())
);
CREATE TABLE "recipe_files" (
"id" SERIAL PRIMARY KEY,
"recipe_id" int NOT NULL,
"file_id" int NOT NULL
);
CREATE TABLE "files" (
"id" SERIAL PRIMARY KEY,
"name" text,
"path" text NOT NULL
);
CREATE TABLE "chefs" (
"id" SERIAL PRIMARY KEY,
"name" text NOT NULL,
"file_id" int NOT NULL,
"created_at" timestamp NOT NULL DEFAULT (now()),
"updated_at" timestamp DEFAULT (now())
);
CREATE TABLE "users" (
"id" SERIAL PRIMARY KEY,
"name" text NOT NULL,
"email" text UNIQUE NOT NULL,
"password" text NOT NULL,
"reset_token" text,
"reset_token_expires" text,
"is_admin" boolean DEFAULT false,
"created_at" timestamp NOT NULL DEFAULT (now()),
"updated_at" timestamp DEFAULT (now())
);
-- reset_token and reset_token_expires were added afterwards
-- I had tried put reset_token_expires as timestamp default now, to validate token expiratin
-- but reset_token and reset_token_expires were not being recorded on the database
ALTER TABLE "chefs" ADD FOREIGN KEY ("file_id") REFERENCES "files" ("id");
ALTER TABLE "recipe_files" ADD FOREIGN KEY ("recipe_id") REFERENCES "recipes" ("id");
ALTER TABLE "recipe_files" ADD FOREIGN KEY ("file_id") REFERENCES "files" ("id");
ALTER TABLE "recipes" ADD FOREIGN KEY ("chef_id") REFERENCES "chefs" ("id");
ALTER TABLE "recipes" ADD FOREIGN KEY ("user_id") REFERENCES "users" ("id");
-- procedure to update the field updated_at
--CREATE FUNCTION trigger_set_time_stamp()
--RETURNS TRIGGER AS
--$$
--BEGIN
--NEW.updated_at = NOW();
--RETURN NEW;
--END;
--$$
--LANGUAGE plpgsql;
--CREATE TRIGGER set_timestamp
--BEFORE UPDATE ON recipes
--FOR EACH ROW EXECUTE PROCEDURE trigger_set_time_stamp();
--CREATE TRIGGER set_timestamp
--BEFORE UPDATE ON chefs
--FOR EACH ROW EXECUTE PROCEDURE trigger_set_time_stamp();
-- connect-pg-simple TABLE
--CREATE TABLE "session" (
-- "sid" varchar NOT NULL COLLATE "default",
-- "sess" json NOT NULL,
-- "expire" timestamp(6) NOT NULL DEFAULT (now())
--)
--WITH (OIDS=FALSE);
--ALTER TABLE "session" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE;
-- cascade delete
--ALTER TABLE "recipes"
--DROP CONSTRAINT recipes_user_id_fkey,
--ADD CONSTRAINT recipes_user_id_fkey
--FOREIGN KEY ("user_id")
--REFERENCES "users" ("id")
--ON DELETE CASCADE;
--ALTER TABLE "recipes"
--DROP CONSTRAINT recipes_chef_id_fkey,
--ADD CONSTRAINT recipes_chef_id_fkey
--FOREIGN KEY ("chef_id")
--REFERENCES "chefs" ("id")
--ON DELETE CASCADE;
--ALTER TABLE "recipe_files"
--DROP CONSTRAINT recipe_files_recipe_id_fkey,
--ADD CONSTRAINT recipe_files_recipe_id_fkey
--FOREIGN KEY ("recipe_id")
--REFERENCES "recipes" ("id")
--ON DELETE CASCADE;
--ALTER TABLE "recipe_files"
--DROP CONSTRAINT recipe_files_file_id_fkey,
--ADD CONSTRAINT recipe_files_file_id_fkey
--FOREIGN KEY ("file_id")
--REFERENCES "files" ("id")
--ON DELETE CASCADE;
--ALTER TABLE "chefs"
--DROP CONSTRAINT chefs_file_id_fkey,
--ADD CONSTRAINT chefs_file_id_fkey
--FOREIGN KEY ("file_id")
--REFERENCES "files" ("id")
--ON DELETE CASCADE;