init here
This commit is contained in:
112
исх/миграции/миграции.tri
Normal file
112
исх/миграции/миграции.tri
Normal file
@@ -0,0 +1,112 @@
|
||||
модуль миграции
|
||||
|
||||
импорт "исх/бд/скуля"
|
||||
|
||||
фн мигрировать*(картотека: скуля.Картотека) {
|
||||
пусть оплошность := ""
|
||||
|
||||
картотека.выполнить(`PRAGMA foreign_keys = ON;`, оплошность)
|
||||
|
||||
если оплошность # "" {
|
||||
авария(оплошность)
|
||||
}
|
||||
|
||||
картотека.выполнить(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
first_name TEXT NOT NULL,
|
||||
last_name TEXT NOT NULL,
|
||||
middle_name TEXT NOT NULL,
|
||||
username TEXT NOT NULL UNIQUE,
|
||||
password TEXT NOT NULL
|
||||
);`, оплошность)
|
||||
|
||||
если оплошность # "" {
|
||||
авария(оплошность)
|
||||
}
|
||||
|
||||
картотека.выполнить(`
|
||||
CREATE TABLE IF NOT EXISTS teachers (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL UNIQUE,
|
||||
education TEXT,
|
||||
avatar_url TEXT,
|
||||
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);`, оплошность)
|
||||
|
||||
если оплошность # "" {
|
||||
авария(оплошность)
|
||||
}
|
||||
|
||||
картотека.выполнить(`
|
||||
CREATE TABLE IF NOT EXISTS students (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL UNIQUE,
|
||||
mentor_id INTEGER, -- "чей ученик" — id учителя (может быть NULL)
|
||||
snils TEXT,
|
||||
passport TEXT,
|
||||
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY(mentor_id) REFERENCES teachers(id) ON DELETE SET NULL
|
||||
);`, оплошность)
|
||||
|
||||
картотека.выполнить(`
|
||||
CREATE TABLE IF NOT EXISTS classes (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
number INTEGER NOT NULL,
|
||||
letter TEXT NOT NULL,
|
||||
creator_teacher_id INTEGER,
|
||||
FOREIGN KEY(creator_teacher_id) REFERENCES teachers(id) ON DELETE SET NULL
|
||||
);`, оплошность)
|
||||
|
||||
если оплошность # "" {
|
||||
авария(оплошность)
|
||||
}
|
||||
|
||||
картотека.выполнить(`
|
||||
CREATE TABLE IF NOT EXISTS class_students (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
class_id INTEGER NOT NULL,
|
||||
student_id INTEGER NOT NULL,
|
||||
UNIQUE(class_id, student_id),
|
||||
FOREIGN KEY(class_id) REFERENCES classes(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY(student_id) REFERENCES students(id) ON DELETE CASCADE
|
||||
);`, оплошность)
|
||||
|
||||
если оплошность # "" {
|
||||
авария(оплошность)
|
||||
}
|
||||
|
||||
картотека.выполнить(`
|
||||
CREATE TABLE IF NOT EXISTS lessons (
|
||||
id INTEGER PRIMARY
|
||||
KEY AUTOINCREMENT,
|
||||
class_id INTEGER NOT NULL,
|
||||
date DATE NOT NULL,
|
||||
title TEXT NOT NULL,
|
||||
homework TEXT,
|
||||
FOREIGN KEY(class_id) REFERENCES classes(id) ON DELETE CASCADE
|
||||
);`, оплошность)
|
||||
|
||||
если оплошность # "" {
|
||||
авария(оплошность)
|
||||
}
|
||||
|
||||
картотека.выполнить(`
|
||||
INSERT OR IGNORE INTO users (
|
||||
first_name,
|
||||
last_name,
|
||||
middle_name,
|
||||
username,
|
||||
password
|
||||
) VALUES (
|
||||
'Админ',
|
||||
'Админович',
|
||||
'',
|
||||
'admin',
|
||||
'correct horse battery staple'
|
||||
);`, оплошность)
|
||||
|
||||
если оплошность # "" {
|
||||
авария(оплошность)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user