Commit fd0bbfb497bab054914bca07021acc3b92977827

Authored by Rohan Rangray
Exists in master

Merge branch 'master' of git.ucsd.edu:110swag/docs

megfoiunegn

Showing 2 changed files Inline Diff

PNGS = built/use_cases_diagram.png built/schema_diagram.png built/schema_graph.png 1 1 PNGS = built/use_cases_diagram.png built/schema_diagram.png built/schema_graph.png
PDFS = built/DesignUseCases.pdf built/screen_sequence_diagram.pdf built/TestCases.pdf built/StoriesAndAcceptanceTests.pdf built/UserStories.pdf 2 2 PDFS = built/DesignUseCases.pdf built/screen_sequence_diagram.pdf built/TestCases.pdf built/StoriesAndAcceptanceTests.pdf built/UserStories.pdf
3 3
SCREEN_SEQUENCE_DOTS = $(wildcard screen_sequence_diagrams/*.dot) 4 4 SCREEN_SEQUENCE_DOTS = $(wildcard screen_sequence_diagrams/*.dot)
SCREEN_SEQUENCE_PNGS = $(patsubst screen_sequence_diagrams/%,built/%,$(patsubst %.dot,%.png,$(SCREEN_SEQUENCE_DOTS))) 5 5 SCREEN_SEQUENCE_PNGS = $(patsubst screen_sequence_diagrams/%,built/%,$(patsubst %.dot,%.png,$(SCREEN_SEQUENCE_DOTS)))
6 6
all: built/ $(PNGS) $(PDFS) #built/screenshots/ 7 7 all: built/ $(PNGS) $(PDFS) #built/screenshots/
8 8
built/: 9 9 built/:
mkdir -p built 10 10 mkdir -p built
11 11
built/schema_diagram.png: 12 12 built/schema_diagram.png: built/
sqlt-diagram --color -c 3 -t png -o built/schema_diagram.png --gutter 60 --from PostgreSQL db_schema.sql --title "Flashy" 13 13 sqlt-diagram --color -c 2 -t png -o built/schema_diagram.png --gutter 200 --from SQLite db_schema.sql --title "Flashy"
14 14
built/schema_graph.png: 15 15 built/schema_graph.png: built/
sqlt-graph -o built/schema_graph.png --from PostgreSQL db_schema.sql 16 16 sqlt-graph -o built/schema_graph.png --from PostgreSQL db_schema.sql
17 17
built/%.png: %.dot 18 18 built/%.png: %.dot
dot -Tpng -o $@ $< 19 19 dot -Tpng -o $@ $<
20 20
built/%.png: screen_sequence_diagrams/%.dot 21 21 built/%.png: screen_sequence_diagrams/%.dot
dot -Tpng -o $@ $< 22 22 dot -Tpng -o $@ $<
23 23
built/screen_sequence_diagram.pdf: built/ $(SCREEN_SEQUENCE_PNGS) 24 24 built/screen_sequence_diagram.pdf: built/ $(SCREEN_SEQUENCE_PNGS)
convert $(SCREEN_SEQUENCE_PNGS) built/screen_sequence_diagram.pdf 25 25 convert $(SCREEN_SEQUENCE_PNGS) built/screen_sequence_diagram.pdf
26 26
built/%.pdf: %.tex 27 27 built/%.pdf: %.tex built/
cd built/; pdflatex ../$< 28 28 cd built/; pdflatex ../$<
cd built/; pdflatex ../$< 29 29 cd built/; pdflatex ../$<
rm -f built/*.aux 30 30 rm -f built/*.aux
rm -f built/*.log 31 31 rm -f built/*.log
rm -f built/*.out 32 32 rm -f built/*.out
rm -f built/*.toc 33 33 rm -f built/*.toc
34 34
built/screenshots/: .PHONY 35 35 built/screenshots/: .PHONY
db_schema.sql View file @ fd0bbfb
SET statement_timeout = 0; 1 1 CREATE TABLE "flashcards_lectureperiod" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "start_time" time NOT NULL, "end_time" time NOT NULL, "section_id" integer NOT NULL REFERENCES "flashcards_section" ("id"), "week_day" integer NOT NULL, UNIQUE ("section_id", "start_time", "week_day"));
SET lock_timeout = 0; 2 2 CREATE TABLE "flashcards_whitelistedaddress" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "email" varchar(254) NOT NULL, "section_id" integer NOT NULL REFERENCES "flashcards_section" ("id"));
SET client_encoding = 'UTF8'; 3 3 CREATE TABLE "flashcards_section" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,"department" varchar(50) NOT NULL,"course_num" varchar(6) NOT NULL,"course_title" varchar(50) NOT NULL,"instructor" varchar(100) NOT NULL,"dept_abbr" varchar(10) NOT NULL,"quarter" varchar(4) NOT NULL);
SET standard_conforming_strings = ON; 4 4 CREATE TABLE "flashcards_user" (id integer NOT NULL PRIMARY KEY AUTOINCREMENT,"password" varchar(128) NOT NULL, "lastlogin" DATETIME,"is_superuser" bool NOT NULL,"username" varchar(30) NOT NULL,"first_name" varchar(30) NOT NULL,"last_name" varchar(30) NOT NULL,"email" varchar(254) NOT NULL,"is_staff" bool NOT NULL,"is_active" bool NOT NULL,"date_joined" TIMESTAMP NOT NULL, "confirmed_email" bool NOT NULL, "last_notified" TIMESTAMP, "registration_id" varchar(4096));
SET check_function_bodies = FALSE; 5 5 CREATE TABLE "flashcards_user_sections" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "user_id" integer NOT NULL REFERENCES "flashcards_user" ("id"), "section_id" integer NOT NULL REFERENCES "flashcards_section" ("id"), UNIQUE ("user_id", "section_id"));
SET client_min_messages = WARNING; 6 6 CREATE TABLE "flashcards_userflashcardquiz" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "when" datetime NOT NULL, "response" varchar(255), "correct" bool, "user_flashcard_id" integer NOT NULL REFERENCES "flashcards_userflashcard" ("id"), "blanked_word" varchar(255) NOT NULL);
7 CREATE TABLE "flashcards_flashcard" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "text" varchar(180) NOT NULL, "pushed" datetime NOT NULL, "material_date" datetime NOT NULL, "is_hidden" bool NOT NULL, "hide_reason" varchar(255), "author_id" integer NOT NULL REFERENCES "flashcards_user" ("id"), "previous_id" integer REFERENCES "flashcards_flashcard" ("id"), "section_id" integer NOT NULL REFERENCES "flashcards_section" ("id"), "mask" varchar, "score" real NOT NULL);
8 CREATE TABLE "flashcards_userflashcard" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "pulled" datetime NOT NULL, "flashcard_id" integer NOT NULL REFERENCES "flashcards_flashcard" ("id"), "user_id" integer NOT NULL REFERENCES "flashcards_user" ("id"), "mask" varchar, "last_interval" integer NOT NULL, "last_response_factor" real NOT NULL, "next_review" datetime, UNIQUE ("user_id", "flashcard_id"));
9 CREATE TABLE "flashcards_flashcardhide" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "reason" varchar(255), "hidden" datetime NOT NULL, "flashcard_id" integer NOT NULL REFERENCES "flashcards_flashcard" ("id"), "user_id" integer NOT NULL REFERENCES "flashcards_user" ("id"), UNIQUE ("user_id", "flashcard_id"));
7 10
8 11 CREATE TABLE "django_session" ("session_key" varchar(40) NOT NULL PRIMARY KEY, "session_data" text NOT NULL, "expire_date" datetime NOT NULL);
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; 9
10
11
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; 12
13
14
SET search_path = PUBLIC, pg_catalog; 15
16
SET default_tablespace = ''; 17
18
SET default_with_oids = FALSE; 19
20
-- 21
-- CREATE TABLE auth_group ( 22
-- id integer NOT NULL, 23
-- name character varying(80) NOT NULL 24
-- ); 25
-- 26
-- 27
-- ALTER TABLE public.auth_group OWNER TO flashy; 28
-- 29
-- 30
-- CREATE SEQUENCE auth_group_id_seq 31
-- START WITH 1 32
-- INCREMENT BY 1 33
-- NO MINVALUE 34
-- NO MAXVALUE 35
-- CACHE 1; 36
-- 37
-- 38
-- ALTER TABLE public.auth_group_id_seq OWNER TO flashy; 39
-- 40
-- 41
-- ALTER SEQUENCE auth_group_id_seq OWNED BY auth_group.id; 42
-- 43
-- 44
-- 45
-- CREATE TABLE auth_group_permissions ( 46
-- id integer NOT NULL, 47
-- group_id integer NOT NULL, 48
-- permission_id integer NOT NULL 49
-- ); 50
-- 51
-- 52
-- ALTER TABLE public.auth_group_permissions OWNER TO flashy; 53
-- 54
-- 55
-- CREATE SEQUENCE auth_group_permissions_id_seq 56
-- START WITH 1 57
-- INCREMENT BY 1 58
-- NO MINVALUE 59
-- NO MAXVALUE 60
-- CACHE 1; 61
-- 62
-- 63
-- ALTER TABLE public.auth_group_permissions_id_seq OWNER TO flashy; 64
-- 65
-- 66
-- ALTER SEQUENCE auth_group_permissions_id_seq OWNED BY auth_group_permissions.id; 67
-- 68
-- 69
-- 70
-- CREATE TABLE auth_permission ( 71
-- id integer NOT NULL, 72
-- name character varying(255) NOT NULL, 73
-- content_type_id integer NOT NULL, 74
-- codename character varying(100) NOT NULL 75
-- ); 76
-- 77
-- 78
-- ALTER TABLE public.auth_permission OWNER TO flashy; 79
-- 80
-- 81
-- CREATE SEQUENCE auth_permission_id_seq 82
-- START WITH 1 83
-- INCREMENT BY 1 84
-- NO MINVALUE 85
-- NO MAXVALUE 86
-- CACHE 1; 87
-- 88
-- 89
-- ALTER TABLE public.auth_permission_id_seq OWNER TO flashy; 90
-- 91
-- 92
-- ALTER SEQUENCE auth_permission_id_seq OWNED BY auth_permission.id; 93
-- 94
-- 95
-- 96
-- CREATE TABLE django_admin_log ( 97
-- id integer NOT NULL, 98
-- action_time timestamp with time zone NOT NULL, 99
-- object_id text, 100
-- object_repr character varying(200) NOT NULL, 101
-- action_flag smallint NOT NULL, 102
-- change_message text NOT NULL, 103
-- content_type_id integer, 104
-- user_id integer NOT NULL, 105
-- CONSTRAINT django_admin_log_action_flag_check CHECK ((action_flag >= 0)) 106
-- ); 107
-- 108
-- 109
-- ALTER TABLE public.django_admin_log OWNER TO flashy; 110
-- 111
-- 112
-- CREATE SEQUENCE django_admin_log_id_seq 113
-- START WITH 1 114
-- INCREMENT BY 1 115
-- NO MINVALUE 116
-- NO MAXVALUE 117
-- CACHE 1; 118
-- 119
-- 120
-- ALTER TABLE public.django_admin_log_id_seq OWNER TO flashy; 121
-- 122
-- 123
-- ALTER SEQUENCE django_admin_log_id_seq OWNED BY django_admin_log.id; 124
-- 125
-- 126
-- 127
-- CREATE TABLE django_content_type ( 128
-- id integer NOT NULL, 129
-- app_label character varying(100) NOT NULL, 130
-- model character varying(100) NOT NULL 131
-- ); 132
-- 133
-- 134
-- ALTER TABLE public.django_content_type OWNER TO flashy; 135
-- 136
-- 137
-- CREATE SEQUENCE django_content_type_id_seq 138
-- START WITH 1 139
-- INCREMENT BY 1 140
-- NO MINVALUE 141
-- NO MAXVALUE 142
-- CACHE 1; 143
-- 144
-- 145
-- ALTER TABLE public.django_content_type_id_seq OWNER TO flashy; 146
-- 147
-- 148
-- ALTER SEQUENCE django_content_type_id_seq OWNED BY django_content_type.id; 149
-- 150
-- 151
-- 152
-- CREATE TABLE django_migrations ( 153
-- id integer NOT NULL, 154
-- app character varying(255) NOT NULL, 155
-- name character varying(255) NOT NULL, 156
-- applied timestamp with time zone NOT NULL 157
-- ); 158
-- 159
-- 160
-- ALTER TABLE public.django_migrations OWNER TO flashy; 161
-- 162
-- 163
-- CREATE SEQUENCE django_migrations_id_seq 164
-- START WITH 1 165
-- INCREMENT BY 1 166
-- NO MINVALUE 167
-- NO MAXVALUE 168
-- CACHE 1; 169
-- 170
-- 171
-- ALTER TABLE public.django_migrations_id_seq OWNER TO flashy; 172
-- 173
-- 174
-- ALTER SEQUENCE django_migrations_id_seq OWNED BY django_migrations.id; 175
176
177
CREATE TABLE flashcards_lectureperiod ( 178
id INTEGER NOT NULL, 179
week_day INTEGER NOT NULL, 180
start_time TIME NOT NULL, 181
end_time TIME NOT NULL, 182
section_id INTEGER NOT NULL 183
); 184
185
186
CREATE TABLE flashcards_section_whitelist ( 187
id INTEGER NOT NULL, 188
section_id INTEGER NOT NULL, 189
user_id INTEGER NOT NULL 190
); 191
192
CREATE TABLE flashcards_section ( 193
194
department CHARACTER VARYING(50) NOT NULL, 195
course_num CHARACTER VARYING(6) NOT NULL, 196
course_title CHARACTER VARYING(50) NOT NULL, 197
id INTEGER NOT NULL, 198
instructor CHARACTER VARYING(100) NOT NULL, 199
quarter CHARACTER VARYING(4) NOT NULL 200
); 201
202
203
CREATE TABLE flashcards_whitelistedaddress ( 204
id INTEGER NOT NULL, 205
email CHARACTER VARYING(254) NOT NULL, 206
section_id INTEGER NOT NULL 207
); 208
209
210
CREATE TABLE flashcards_user ( 211
id INTEGER NOT NULL, 212
password CHARACTER VARYING(128) NOT NULL, 213
last_login TIMESTAMP, 214
is_superuser BOOLEAN NOT NULL, 215
username CHARACTER VARYING(30) NOT NULL, 216
first_name CHARACTER VARYING(30) NOT NULL, 217
last_name CHARACTER VARYING(30) NOT NULL, 218
email CHARACTER VARYING(254) NOT NULL, 219
is_staff BOOLEAN NOT NULL, 220
is_active BOOLEAN NOT NULL, 221
date_joined TIMESTAMP NOT NULL 222
); 223
224
CREATE TABLE flashcards_user_sections ( 225
id INTEGER NOT NULL, 226
user_id INTEGER NOT NULL, 227
section_id INTEGER NOT NULL 228
); 229
-- 230
-- CREATE TABLE flashcards_user_groups ( 231
-- id integer NOT NULL, 232
-- user_id integer NOT NULL, 233
-- group_id integer NOT NULL 234
-- ); 235
-- 236
-- 237
-- ALTER TABLE public.flashcards_user_groups OWNER TO flashy; 238
-- 239
-- 240
-- CREATE SEQUENCE flashcards_user_groups_id_seq 241
-- START WITH 1 242
-- INCREMENT BY 1 243
-- NO MINVALUE 244
-- NO MAXVALUE 245
-- CACHE 1; 246
-- 247
-- 248
-- ALTER TABLE public.flashcards_user_groups_id_seq OWNER TO flashy; 249
-- 250
-- 251
-- ALTER SEQUENCE flashcards_user_groups_id_seq OWNED BY flashcards_user_groups.id; 252
CREATE TABLE flashcards_flashcard ( 253
id INTEGER NOT NULL, 254
section_id INTEGER NOT NULL, 255
text CHARACTER VARYING(255) NOT NULL, 256
pushed TIMESTAMP NOT NULL, 257
material_date TIMESTAMP NOT NULL, 258
is_hidden BOOLEAN NOT NULL, 259
hide_reason CHARACTER VARYING(255) NOT NULL, 260
author_id INTEGER NOT NULL, 261
mask_id INTEGER, 262
previous_id INTEGER 263
264
); 265
266
267
268
269
CREATE TABLE django_session ( 270
session_key CHARACTER VARYING(40) NOT NULL, 271
session_data TEXT NOT NULL, 272
expire_date TIMESTAMP NOT NULL 273
); 274
275
276
-- 277
-- 278
-- CREATE TABLE flashcards_user_user_permissions ( 279
-- id integer NOT NULL, 280
-- user_id integer NOT NULL, 281
-- permission_id integer NOT NULL 282
-- ); 283
-- 284
-- 285
-- ALTER TABLE public.flashcards_user_user_permissions OWNER TO flashy; 286
-- 287
-- 288
-- CREATE SEQUENCE flashcards_user_user_permissions_id_seq 289
-- START WITH 1 290
-- INCREMENT BY 1 291
-- NO MINVALUE 292
-- NO MAXVALUE 293
-- CACHE 1; 294
-- 295
-- 296
-- ALTER TABLE public.flashcards_user_user_permissions_id_seq OWNER TO flashy; 297
-- 298
-- 299
-- ALTER SEQUENCE flashcards_user_user_permissions_id_seq OWNED BY flashcards_user_user_permissions.id; 300
301
302
303
CREATE TABLE flashcards_flashcardreport ( 304
id INTEGER NOT NULL, 305
reason CHARACTER VARYING(255) NOT NULL, 306
307
user_id INTEGER NOT NULL, 308
flashcard_id INTEGER NOT NULL 309
); 310
311
CREATE TABLE flashcards_userflashcardreview ( 312
id INTEGER NOT NULL, 313
"when" TIMESTAMP NOT NULL, 314
blanked_word CHARACTER VARYING(8) NOT NULL, 315
response CHARACTER VARYING(255), 316
correct BOOLEAN, 317
user_flashcard_id INTEGER NOT NULL 318
); 319
320
CREATE TABLE flashcards_userflashcard ( 321
id INTEGER NOT NULL, 322
user_id INTEGER NOT NULL, 323
pulled TIMESTAMP, 324
unpulled TIMESTAMP, 325
flashcard_id INTEGER NOT NULL, 326
mask_id INTEGER NOT NULL 327
); 328
329
330
331
332
CREATE TABLE flashcards_flashcardmask ( 333
id INTEGER NOT NULL, 334
ranges CHARACTER VARYING(255) NOT NULL 335
); 336
337
338
-- 339
-- CREATE TABLE simple_email_confirmation_emailaddress ( 340
-- id integer NOT NULL, 341
-- email character varying(255) NOT NULL, 342
-- key character varying(40) NOT NULL, 343
-- set_at timestamp with time zone NOT NULL, 344
-- confirmed_at timestamp with time zone, 345
-- user_id integer NOT NULL 346
-- ); 347
348
-- 349
-- 350
-- 351
-- ALTER TABLE ONLY auth_group 352
-- ADD CONSTRAINT auth_group_name_key UNIQUE (name); 353
-- 354
-- 355
-- 356
-- ALTER TABLE ONLY auth_group_permissions 357
-- ADD CONSTRAINT auth_group_permissions_group_id_permission_id_key UNIQUE (group_id, permission_id); 358
-- 359
-- 360
-- 361
-- ALTER TABLE ONLY auth_group_permissions 362
-- ADD CONSTRAINT auth_group_permissions_pkey PRIMARY KEY (id); 363
-- 364
-- 365
-- 366
-- ALTER TABLE ONLY auth_group 367
-- ADD CONSTRAINT auth_group_pkey PRIMARY KEY (id); 368
-- 369
-- 370
-- 371
-- ALTER TABLE ONLY auth_permission 372
-- ADD CONSTRAINT auth_permission_content_type_id_codename_key UNIQUE (content_type_id, codename); 373
-- 374
-- 375
-- 376
-- ALTER TABLE ONLY auth_permission 377
-- ADD CONSTRAINT auth_permission_pkey PRIMARY KEY (id); 378
-- 379
-- 380
-- 381
-- ALTER TABLE ONLY django_admin_log 382
-- ADD CONSTRAINT django_admin_log_pkey PRIMARY KEY (id); 383
-- 384
-- 385
-- 386
-- ALTER TABLE ONLY django_content_type 387
-- ADD CONSTRAINT django_content_type_app_label_45f3b1d93ec8c61c_uniq UNIQUE (app_label, model); 388
-- 389
-- 390
-- 391
-- ALTER TABLE ONLY django_content_type 392
-- ADD CONSTRAINT django_content_type_pkey PRIMARY KEY (id); 393
-- 394
-- 395
-- 396
-- ALTER TABLE ONLY django_migrations 397
-- ADD CONSTRAINT django_migrations_pkey PRIMARY KEY (id); 398
-- 399
-- 400
-- 401
402
403
ALTER TABLE ONLY flashcards_flashcard 404
ADD CONSTRAINT flashcards_flashcard_pkey PRIMARY KEY (id); 405
406
407
ALTER TABLE ONLY flashcards_flashcardmask 408
ADD CONSTRAINT flashcards_flashcardmask_pkey PRIMARY KEY (id); 409
410
411
ALTER TABLE ONLY flashcards_flashcardreport 412
ADD CONSTRAINT flashcards_flashcardreport_pkey PRIMARY KEY (id); 413
414
415
ALTER TABLE ONLY flashcards_flashcardreport 416
ADD CONSTRAINT flashcards_flashcardreport_user_id_33ed44e076ba0c26_uniq UNIQUE (user_id, flashcard_id); 417
418
419
ALTER TABLE ONLY flashcards_lectureperiod 420
ADD CONSTRAINT flashcards_lectureperiod_pkey PRIMARY KEY (id); 421
422
423
ALTER TABLE ONLY flashcards_lectureperiod 424
ADD CONSTRAINT flashcards_lectureperiod_section_id_64d9645909ab3722_uniq UNIQUE (section_id, start_time, week_day); 425
426
427
ALTER TABLE ONLY flashcards_section 428
ADD CONSTRAINT flashcards_section_department_62472d9260ce7d87_uniq UNIQUE (department, course_num, quarter, instructor); 429
430
431
ALTER TABLE ONLY flashcards_section 432
ADD CONSTRAINT flashcards_section_pkey PRIMARY KEY (id); 433
434
435
ALTER TABLE ONLY flashcards_section_whitelist 436
ADD CONSTRAINT flashcards_section_whitelist_pkey PRIMARY KEY (id); 437
438
439
ALTER TABLE ONLY flashcards_section_whitelist 440
ADD CONSTRAINT flashcards_section_whitelist_section_id_user_id_key UNIQUE (section_id, user_id); 441
442
443
ALTER TABLE ONLY flashcards_user 444
ADD CONSTRAINT flashcards_user_email_key UNIQUE (email); 445
446
-- 447
-- 448
-- ALTER TABLE ONLY flashcards_user_groups 449
-- ADD CONSTRAINT flashcards_user_groups_pkey PRIMARY KEY (id); 450
-- 451
-- 452
-- 453
-- ALTER TABLE ONLY flashcards_user_groups 454
-- ADD CONSTRAINT flashcards_user_groups_user_id_group_id_key UNIQUE (user_id, group_id); 455
-- 456
-- 457
458
ALTER TABLE ONLY flashcards_user 459
ADD CONSTRAINT flashcards_user_pkey PRIMARY KEY (id); 460
461
462
ALTER TABLE ONLY flashcards_user_sections 463
ADD CONSTRAINT flashcards_user_sections_pkey PRIMARY KEY (id); 464
465
466
ALTER TABLE ONLY flashcards_user_sections 467
ADD CONSTRAINT flashcards_user_sections_user_id_section_id_key UNIQUE (user_id, section_id); 468
469
470
-- 471
-- ALTER TABLE ONLY flashcards_user_user_permissions 472
-- ADD CONSTRAINT flashcards_user_user_permissions_pkey PRIMARY KEY (id); 473
-- 474
-- 475
-- 476
-- ALTER TABLE ONLY flashcards_user_user_permissions 477
-- ADD CONSTRAINT flashcards_user_user_permissions_user_id_permission_id_key UNIQUE (user_id, permission_id); 478
-- 479
-- 480
481
ALTER TABLE ONLY flashcards_userflashcard 482
ADD CONSTRAINT flashcards_userflashcard_pkey PRIMARY KEY (id); 483
484
485
ALTER TABLE ONLY flashcards_userflashcard 486
ADD CONSTRAINT flashcards_userflashcard_user_id_15a77ea9fbc24533_uniq UNIQUE (user_id, flashcard_id); 487
488
489
ALTER TABLE ONLY flashcards_userflashcardreview 490
ADD CONSTRAINT flashcards_userflashcardreview_pkey PRIMARY KEY (id); 491
492
493
ALTER TABLE ONLY flashcards_whitelistedaddress 494
ADD CONSTRAINT flashcards_whitelistedaddress_pkey PRIMARY KEY (id); 495
496
497
-- 498
-- ALTER TABLE ONLY simple_email_confirmation_emailaddress 499
-- ADD CONSTRAINT simple_email_confirmation_emailad_user_id_4729ce83422361d3_uniq UNIQUE (user_id, email); 500
-- 501
-- 502
-- 503
-- ALTER TABLE ONLY simple_email_confirmation_emailaddress 504
-- ADD CONSTRAINT simple_email_confirmation_emailaddress_key_key UNIQUE (key); 505
-- 506
-- 507
-- 508
-- ALTER TABLE ONLY simple_email_confirmation_emailaddress 509