|
|
@@ -0,0 +1,44 @@
|
|
|
+-- Your SQL goes here
|
|
|
+CREATE TYPE TStatus AS ENUM ('disable','private','public');
|
|
|
+CREATE TYPE TContentType AS ENUM ('text','markdown','html');
|
|
|
+
|
|
|
+CREATE TABLE courses
|
|
|
+(
|
|
|
+ id SERIAL PRIMARY KEY,
|
|
|
+ uid VARCHAR(36) NOT NULL,
|
|
|
+ parent_id INTEGER ,
|
|
|
+ pr_parent_id INTEGER ,
|
|
|
+
|
|
|
+ cover VARCHAR(255),
|
|
|
+ title VARCHAR(255) NOT NULL,
|
|
|
+ subtitle VARCHAR(255),
|
|
|
+ summary VARCHAR(1024),
|
|
|
+
|
|
|
+ teacher_id INTEGER,
|
|
|
+ lang VARCHAR (16) NOT NULL DEFAULT('en'),
|
|
|
+ speech_lang VARCHAR (16) NOT NULL DEFAULT('en'),
|
|
|
+ lesson_num INTEGER NOT NULL DEFAULT(0),
|
|
|
+
|
|
|
+ start_at TIMESTAMP ,
|
|
|
+ end_at TIMESTAMP ,
|
|
|
+
|
|
|
+
|
|
|
+ content TEXT ,
|
|
|
+ content_type TContentType NOT NULL DEFAULT('markdown'),
|
|
|
+
|
|
|
+ status TStatus NOT NULL DEFAULT('private'),
|
|
|
+ editor_id INTEGER NOT NULL,
|
|
|
+ studio_id INTEGER NOT NULL,
|
|
|
+ owner_id INTEGER NOT NULL,
|
|
|
+
|
|
|
+ version INTEGER NOT NULL DEFAULT (1),
|
|
|
+ deleted_at TIMESTAMP ,
|
|
|
+
|
|
|
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
+);
|
|
|
+CREATE INDEX courses_title ON courses (title);
|
|
|
+CREATE INDEX courses_lang ON courses (lang);
|
|
|
+CREATE INDEX courses_status ON courses (status);
|
|
|
+CREATE INDEX courses_lang_status ON courses (lang,status);
|
|
|
+CREATE UNIQUE INDEX courses_uid ON courses (uid);
|