init here
This commit is contained in:
13
исх/картотека/картотека.tri
Normal file
13
исх/картотека/картотека.tri
Normal file
@@ -0,0 +1,13 @@
|
||||
модуль картотека
|
||||
|
||||
импорт "исх/бд/скуля"
|
||||
|
||||
пусть картотека: скуля.Картотека := скуля.Картотека{}
|
||||
|
||||
фн зайти*(): скуля.Картотека {
|
||||
вернуть картотека
|
||||
}
|
||||
|
||||
вход {
|
||||
картотека := скуля.открыть картотеку("var/srab.db")
|
||||
}
|
||||
130
исх/картотека/репозитории/пользователь.tri
Normal file
130
исх/картотека/репозитории/пользователь.tri
Normal file
@@ -0,0 +1,130 @@
|
||||
модуль репозитории
|
||||
|
||||
импорт "исх/бд/скуля"
|
||||
импорт "исх/картотека"
|
||||
импорт "исх/форматы/джесон"
|
||||
импорт "исх/бюрократия"
|
||||
|
||||
тип Пользователь = класс {
|
||||
идентификатор*: Цел64 := 0
|
||||
имя*: Строка := ""
|
||||
фамилия*: Строка := ""
|
||||
отчество*: Строка := ""
|
||||
имя пользователя*: Строка := ""
|
||||
пароль*: Строка := ""
|
||||
}
|
||||
|
||||
тип Учитель = класс {
|
||||
идентификатор*: Цел64 := 0
|
||||
идентификатор пользователя*: Цел64 := 0
|
||||
образование*: Строка := ""
|
||||
урурурл аватара*: Строка := ""
|
||||
}
|
||||
|
||||
тип Ученик = класс {
|
||||
идентификатор*: Цел64 := 0
|
||||
идентификатор пользователя*: Цел64 := 0
|
||||
идентификатор ментора*: Цел64 := 0
|
||||
снилс*: Строка := ""
|
||||
паспорт*: Строка := ""
|
||||
}
|
||||
|
||||
фн авторизовать пользователя*(имя пользователя: Строка, пароль: Строка, оплошность := Строка): мб Пользователь {
|
||||
пусть картотека = картотека.зайти()
|
||||
пусть ответ = картотека.запросить безопасно(`
|
||||
SELECT id, first_name, last_name, middle_name FROM users WHERE username = ? AND password = ?
|
||||
`, оплошность, имя пользователя, пароль)
|
||||
|
||||
если оплошность # "" {
|
||||
вернуть Пользователь{}
|
||||
}
|
||||
|
||||
если длина(ответ.значения) = 0 {
|
||||
вернуть пусто
|
||||
}
|
||||
|
||||
пусть объект = ответ.значения[0](:джесон.ДжесонОбъект)
|
||||
|
||||
вернуть Пользователь{
|
||||
идентификатор: объект.получить("id").число()^.значение,
|
||||
имя: объект.получить("first_name").строка()^,
|
||||
фамилия: объект.получить("last_name").строка()^,
|
||||
отчество: объект.получить("middle_name").строка()^,
|
||||
имя пользователя: имя пользователя,
|
||||
пароль: пароль
|
||||
}
|
||||
}
|
||||
|
||||
фн авторизовать по паспорту*(паспорт: мб бюрократия.Паспорт, оплошность := Строка): мб Пользователь {
|
||||
если паспорт = пусто {
|
||||
вернуть пусто
|
||||
}
|
||||
|
||||
вернуть авторизовать пользователя(паспорт^.имя пользователя, паспорт^.пароль, оплошность)
|
||||
}
|
||||
|
||||
фн пользователь учитель*(ид: Цел64, оплошность := Строка): мб Учитель {
|
||||
пусть картотека = картотека.зайти()
|
||||
пусть ответ = картотека.запросить безопасно(`
|
||||
SELECT user_id, education, avatar_url, id FROM teachers WHERE user_id = ?
|
||||
`, оплошность, ид)
|
||||
|
||||
если оплошность # "" {
|
||||
вернуть пусто
|
||||
}
|
||||
|
||||
если длина(ответ.значения) = 0 {
|
||||
вернуть пусто
|
||||
}
|
||||
|
||||
пусть объект = ответ.значения[0](:джесон.ДжесонОбъект)
|
||||
|
||||
вернуть Учитель{
|
||||
идентификатор: объект.получить("id").число()^.значение,
|
||||
идентификатор пользователя: ид,
|
||||
образование: объект.получить("education").строка()^,
|
||||
урурурл аватара: объект.получить("avatar_url").строка()^
|
||||
}
|
||||
}
|
||||
|
||||
фн пользователь ученик*(ид: Цел64, оплошность := Строка): мб Ученик {
|
||||
пусть картотека = картотека.зайти()
|
||||
пусть ответ = картотека.запросить безопасно(`
|
||||
SELECT * FROM students WHERE user_id = ?
|
||||
`, оплошность, ид)
|
||||
|
||||
если оплошность # "" {
|
||||
вернуть пусто
|
||||
}
|
||||
|
||||
если длина(ответ.значения) = 0 {
|
||||
вернуть пусто
|
||||
}
|
||||
|
||||
пусть объект = ответ.значения[0](:джесон.ДжесонОбъект)
|
||||
|
||||
вернуть Ученик{
|
||||
идентификатор: объект.получить("id").число()^.значение,
|
||||
идентификатор пользователя: ид,
|
||||
идентификатор ментора: объект.получить("mentor_id").число()^.значение,
|
||||
снилс: объект.получить("snils").строка()^,
|
||||
паспорт: объект.получить("passport").строка()^
|
||||
}
|
||||
}
|
||||
|
||||
фн пользователь админ*(ид: Цел64, оплошность := Строка): Лог {
|
||||
пусть картотека = картотека.зайти()
|
||||
пусть учитель = пользователь учитель(ид, оплошность)
|
||||
|
||||
если оплошность # "" {
|
||||
вернуть ложь
|
||||
}
|
||||
|
||||
пусть ученик = пользователь ученик(ид, оплошность)
|
||||
|
||||
если оплошность # "" {
|
||||
вернуть ложь
|
||||
}
|
||||
|
||||
вернуть учитель = пусто & ученик = пусто
|
||||
}
|
||||
Reference in New Issue
Block a user