113 lines
3.2 KiB
Plaintext
113 lines
3.2 KiB
Plaintext
модуль миграции
|
|
|
|
импорт "исх/бд/скуля"
|
|
|
|
фн мигрировать*(картотека: скуля.Картотека) {
|
|
пусть оплошность := ""
|
|
|
|
картотека.выполнить(`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'
|
|
);`, оплошность)
|
|
|
|
если оплошность # "" {
|
|
авария(оплошность)
|
|
}
|
|
}
|