init here

This commit is contained in:
2025-11-26 21:32:41 +03:00
commit 33c97acade
91 changed files with 9155 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
модуль картотека
импорт "исх/бд/скуля"
пусть картотека: скуля.Картотека := скуля.Картотека{}
фн зайти*(): скуля.Картотека {
вернуть картотека
}
вход {
картотека := скуля.открыть картотеку("var/srab.db")
}

View 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, оплошность := Строка): Лог {
пусть картотека = картотека.зайти()
пусть учитель = пользователь учитель(ид, оплошность)
если оплошность # "" {
вернуть ложь
}
пусть ученик = пользователь ученик(ид, оплошность)
если оплошность # "" {
вернуть ложь
}
вернуть учитель = пусто & ученик = пусто
}