-
Notifications
You must be signed in to change notification settings - Fork 0
Create DataBase #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
c8ddbd4
e951ce5
2d90552
ebcbd14
515bec6
b5445c2
5d549e9
c2d3a01
d4805bb
dda2a21
081da61
9ffb5f2
4d22559
6661e2d
a6104cf
07dfb20
1f7dfec
189c3fe
b39c22e
407bce3
22b6653
3ff1e32
8af46ed
9dcc8ef
f24b59c
814fad0
a2df7c1
c268650
60338ab
9e75150
26b98fe
e8a6e96
8fb07dc
fd55c19
8c09b63
44fa247
a125de9
0026984
f5fc772
c6cab55
45ea6b9
436a842
5023ae9
160e10b
e3ef64e
03b4886
6b76605
ec580c0
4147eca
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| { | ||
| "version": 4, | ||
| "configurations": [ | ||
| { | ||
| "name": "macos-clang-arm64", | ||
| "compilerPath": "/usr/bin/clang", | ||
| "cStandard": "${default}", | ||
| "cppStandard": "${default}", | ||
| "intelliSenseMode": "macos-clang-arm64", | ||
| "includePath": [ | ||
| "${workspaceFolder}/**" | ||
| ], | ||
| "macFrameworkPath": [ | ||
| "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks" | ||
| ], | ||
| "defines": [] | ||
| } | ||
| ] | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| { | ||
| "version": "0.2.0", | ||
| "configurations": [ | ||
| { | ||
| "name": "C/C++ Runner: Debug Session", | ||
| "type": "lldb", | ||
| "request": "launch", | ||
| "args": [], | ||
| "cwd": "/Users/qwertz/Desktop/code/EntryPoint/new_Version/source", | ||
| "program": "/Users/qwertz/Desktop/code/EntryPoint/new_Version/source/build/Debug/outDebug" | ||
| } | ||
| ] | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,123 @@ | ||
| { | ||
| "files.associations": { | ||
| "iostream": "cpp", | ||
| "algorithm": "cpp", | ||
| "cmath": "cpp", | ||
| "__locale": "cpp", | ||
| "__threading_support": "cpp", | ||
| "__verbose_abort": "cpp", | ||
| "bitset": "cpp", | ||
| "cctype": "cpp", | ||
| "clocale": "cpp", | ||
| "cstddef": "cpp", | ||
| "cstdint": "cpp", | ||
| "cstdio": "cpp", | ||
| "cstdlib": "cpp", | ||
| "cstring": "cpp", | ||
| "ctime": "cpp", | ||
| "cwchar": "cpp", | ||
| "initializer_list": "cpp", | ||
| "ios": "cpp", | ||
| "iosfwd": "cpp", | ||
| "istream": "cpp", | ||
| "limits": "cpp", | ||
| "locale": "cpp", | ||
| "mutex": "cpp", | ||
| "new": "cpp", | ||
| "ostream": "cpp", | ||
| "print": "cpp", | ||
| "stdexcept": "cpp", | ||
| "streambuf": "cpp", | ||
| "string": "cpp", | ||
| "string_view": "cpp", | ||
| "tuple": "cpp", | ||
| "typeinfo": "cpp", | ||
| "__bit_reference": "cpp", | ||
| "__hash_table": "cpp", | ||
| "__node_handle": "cpp", | ||
| "__split_buffer": "cpp", | ||
| "array": "cpp", | ||
| "complex": "cpp", | ||
| "cstdarg": "cpp", | ||
| "cwctype": "cpp", | ||
| "deque": "cpp", | ||
| "execution": "cpp", | ||
| "memory": "cpp", | ||
| "optional": "cpp", | ||
| "queue": "cpp", | ||
| "ratio": "cpp", | ||
| "sstream": "cpp", | ||
| "stack": "cpp", | ||
| "unordered_map": "cpp", | ||
| "variant": "cpp", | ||
| "vector": "cpp", | ||
| "forward_list": "cpp", | ||
| "list": "cpp", | ||
| "map": "cpp", | ||
| "span": "cpp", | ||
| "pqxx": "cpp", | ||
| "txn": "cpp", | ||
| "fstream": "cpp", | ||
| "iomanip": "cpp", | ||
| "__availability": "cpp", | ||
| "__config": "cpp", | ||
| "iterator": "cpp" | ||
| }, | ||
| "C_Cpp_Runner.msvcBatchPath": "", | ||
| "C_Cpp_Runner.cCompilerPath": "clang", | ||
| "C_Cpp_Runner.cppCompilerPath": "clang++", | ||
| "C_Cpp_Runner.debuggerPath": "lldb", | ||
| "C_Cpp_Runner.cStandard": "", | ||
| "C_Cpp_Runner.cppStandard": "", | ||
| "C_Cpp_Runner.useMsvc": false, | ||
| "C_Cpp_Runner.warnings": [ | ||
| "-Wall", | ||
| "-Wextra", | ||
| "-Wpedantic", | ||
| "-Wshadow", | ||
| "-Wformat=2", | ||
| "-Wcast-align", | ||
| "-Wconversion", | ||
| "-Wsign-conversion", | ||
| "-Wnull-dereference" | ||
| ], | ||
| "C_Cpp_Runner.msvcWarnings": [ | ||
| "/W4", | ||
| "/permissive-", | ||
| "/w14242", | ||
| "/w14287", | ||
| "/w14296", | ||
| "/w14311", | ||
| "/w14826", | ||
| "/w44062", | ||
| "/w44242", | ||
| "/w14905", | ||
| "/w14906", | ||
| "/w14263", | ||
| "/w44265", | ||
| "/w14928" | ||
| ], | ||
| "C_Cpp_Runner.enableWarnings": true, | ||
| "C_Cpp_Runner.warningsAsError": false, | ||
| "C_Cpp_Runner.compilerArgs": [], | ||
| "C_Cpp_Runner.linkerArgs": [], | ||
| "C_Cpp_Runner.includePaths": [], | ||
| "C_Cpp_Runner.includeSearch": [ | ||
| "*", | ||
| "**/*" | ||
| ], | ||
| "C_Cpp_Runner.excludeSearch": [ | ||
| "**/build", | ||
| "**/build/**", | ||
| "**/.*", | ||
| "**/.*/**", | ||
| "**/.vscode", | ||
| "**/.vscode/**" | ||
| ], | ||
| "C_Cpp_Runner.useAddressSanitizer": false, | ||
| "C_Cpp_Runner.useUndefinedSanitizer": false, | ||
| "C_Cpp_Runner.useLeakSanitizer": false, | ||
| "C_Cpp_Runner.showCompilationTime": false, | ||
| "C_Cpp_Runner.useLinkTimeOptimization": false, | ||
| "C_Cpp_Runner.msvcSecureNoWarnings": false | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,7 +1,4 @@ | ||
| # EntryPoint | ||
| Проект на плюсах от 3 амбициозных пацанчиков | ||
|
|
||
|
|
||
| ### Чуток описание проекта : | ||
| Телеграмм-бот с авторизацией для студентов, преподавателей, администрации, организаторов учебного процесса (учебный офис, кураторы и т.п.). Среди базового функционала присутствуют: система анонимной студенческой оценки преподавания, система донесения информации от учебного офиса, преподавателей и кураторов до студентов c подтверждением получения (в т.ч. ссылок на чаты и объявлений). Возможность поддержания полезной информации о предметах внутри бота (ссылки, таблицы, папки, чаты, файлы) с возможностью изменения студентами (как wiki, просмотр изменений). | ||
|
|
||
| database structure: | ||
|  | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
|
|
||
| такс , задачи на сегодня : | ||
|
|
||
| #### Тимофей : | ||
| - сделать начальный интерфейс. Вход осуществляется через СНИЛС/ Пороль , в зависимости от ввода которого тебя перебрасывает на какую-то область в которой ты будешь взаимодействовать с ботом. | ||
| Админ (кнопочки) : | ||
|
|
||
| - открыть соп для людей . При ее нажатии посылается запрос в базу данных , который всех людей с role = Student перекидывает в табличку в базе данных Sop и назначает им статус - "NOT_STARTED" ( также есть еще и "STARTED" , "PASSED" ) они назначаются когда человек нажимает на кнопку закончить и отрпавить соп . "STARTED" назначается когда студент со своего аккаунта нажал на кнопочку пройти соп , обновление идет через нажатие метода - UpdateStatus в табличке Sop_Form. | ||
|
|
||
| то есть должно быть сделано следующие : | ||
| 1. возможность при вводе снилса дальше взаимодействовать с системой (кнопочки для каждого из типов) | ||
| 2. на кнопочках - заглушки , или уже реализованные штуки | ||
|
|
||
| #### Егор : | ||
| - сделать метод который читает таблицу для вставки студентов с програмой + курс в формате допустим (ПМИ_1 , ПАДИИ_2 , ФКН_4 ) . Она состоит из полей : (Фамилия | Имя | ТГ ник | СНИЛС | ГРУППА | ) . Задача Егора прочитать данные из таблички и записать данные в struct Person. так чтобы : | ||
| ```cpp | ||
| struct Person{ | ||
| std::string first_name; <-- было заполнено из таблицы | ||
| std::string last_name;<-- было заполнено из таблицы | ||
| std::string tg_nick; <-- было заполнено из таблицы | ||
| int access; <-- было передан 0 в качестве значения | ||
| int snils; <-- из таблицы | ||
| std::string role; <-- Student | ||
| std::string subject_name ; <-- значение None ( то есть у студента не определен предмет ) | ||
| std::string course_name; <-- цифера около ПМИ_(1) <-- 1 , ПАДИИ_(2) <-- 2 в string | ||
| std::string program_name; <-- Название таблички - ПМИ / ПАДИИ / ФКН (из примера) | ||
| std::string people_group_name; <-- группа из таблицы | ||
| } | ||
| ``` | ||
| - также аналогичную штуку нужно сделать для добавление лекторов/ практиков. Для таблички , только структура таблички и заполнение этих полей будет другое. | ||
|
|
||
| ```cpp | ||
| struct Person{ | ||
| std::string first_name; <-- из таблицы | ||
| std::string last_name; <-- из таблицы | ||
| std::string tg_nick; <-- из таблицы ( мы предпологаем что у всех есть тг. пох на храбра) | ||
| int access; <-- 1 | ||
| int snils; <-- из таблицы | ||
| std::string role; <-- из таблицы Lector / Pactitioner | ||
| std::string subject_name; <-- из таблицы | ||
| std::string course_name; <-- из таблицы | ||
| std::string program_name; <-- из таблицы | ||
| std::string people_group_name; <-- если Lector - то 0 , Если Pactitioner - то из таблицы | ||
| }; | ||
| ``` | ||
|
|
||
|
|
||
| #### Даня | ||
| <!-- - протесить метод который принимает Person и взаимудейстует с ним --> | ||
|
|
||
| <!-- - сделать так , чтобы все прокидывались в табичку SOP_Form по нажатию кнопки "Открыть соп". --> | ||
|
|
||
| <!-- - переделать UpdateTgAnswer , UpdateUrlAnswer так чтобы ответ в виде json конкатеринровал к текущей строке --> | ||
|
|
||
| <!-- - сделать метод , который назначает всем людям из таблички Sop_Form произвольные статусы - допустим NOT_STARTED --> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| cmake_minimum_required(VERSION 3.10) | ||
| project(EP_dpw VERSION 1.0 LANGUAGES CXX) | ||
|
|
||
| # Настройка стандарта C++ | ||
| set(CMAKE_CXX_STANDARD 20) | ||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||
|
|
||
| # Добавляем пути поиска для Homebrew | ||
| list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/libpqxx") | ||
| list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/libpq") | ||
| list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/fmt") | ||
| list(APPEND CMAKE_PREFIX_PATH "/opt/homebrew/opt/googletest") | ||
|
|
||
| # Поиск зависимостей | ||
| find_package(fmt REQUIRED) | ||
|
|
||
| # Для libpqxx используем альтернативный подход | ||
| find_path(LIBPQXX_INCLUDE_DIR pqxx/pqxx) | ||
| find_library(LIBPQXX_LIBRARY NAMES pqxx) | ||
|
|
||
| # Для PostgreSQL | ||
| find_package(PostgreSQL REQUIRED) | ||
|
|
||
| # Исходные файлы | ||
| file(GLOB SOURCES "source/*.cpp") | ||
| file(GLOB HEADERS "include/*.hpp") | ||
|
|
||
| # Исполняемый файл | ||
| add_executable(${PROJECT_NAME} | ||
| main.cpp | ||
| ${SOURCES} | ||
| ${HEADERS} | ||
| ) | ||
|
|
||
| # Подключение заголовочных файлов | ||
| target_include_directories(${PROJECT_NAME} PRIVATE | ||
| include/ | ||
| ${LIBPQXX_INCLUDE_DIR} | ||
| ${PostgreSQL_INCLUDE_DIRS} | ||
| ${FMT_INCLUDE_DIR} | ||
| ) | ||
|
|
||
| # Линковка библиотек | ||
| target_link_libraries(${PROJECT_NAME} PRIVATE | ||
| ${LIBPQXX_LIBRARY} | ||
| ${PostgreSQL_LIBRARIES} | ||
| fmt::fmt | ||
| ) | ||
|
|
||
| # Подавление предупреждений | ||
| target_compile_options(${PROJECT_NAME} PRIVATE | ||
| -Wno-unknown-attributes | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
|
|
||
|
|
||
| -- Таблица People | ||
| CREATE TABLE IF NOT EXISTS People ( | ||
| person_id SERIAL PRIMARY KEY, | ||
| first_name VARCHAR(100) NOT NULL, | ||
| last_name VARCHAR(100) NOT NULL, | ||
| tg_nick VARCHAR(100) UNIQUE, | ||
| access INT , | ||
| snils INT | ||
|
|
||
| ); | ||
|
|
||
| -- Таблица Role | ||
| CREATE TABLE IF NOT EXISTS Role ( | ||
| role_id SERIAL PRIMARY KEY, | ||
| role_name VARCHAR(100) NOT NULL | ||
| ); | ||
|
|
||
| -- Таблица связи Person_Role (многие-ко-многим между People и Role) | ||
| CREATE TABLE IF NOT EXISTS Person_Role ( | ||
| person_id INT REFERENCES People(person_id), | ||
| role_id INT REFERENCES Role(role_id), | ||
| PRIMARY KEY (person_id, role_id) | ||
| ); | ||
|
|
||
| -- Исправленная таблица Course (была опечатка в названии Cource) | ||
| CREATE TABLE IF NOT EXISTS Course ( | ||
| course_id SERIAL PRIMARY KEY, | ||
| course_name VARCHAR(100) NOT NULL -- Исправлено с INT на VARCHAR | ||
| ); | ||
|
|
||
| -- Таблица People_Group (исправлено с Group на People_Group) | ||
| CREATE TABLE IF NOT EXISTS People_Group ( | ||
| people_group_id SERIAL PRIMARY KEY, | ||
| people_group_name VARCHAR(100) NOT NULL -- Исправлено с INT на VARCHAR | ||
| ); | ||
|
|
||
| -- Таблица Program | ||
| CREATE TABLE IF NOT EXISTS Program ( | ||
| program_id SERIAL PRIMARY KEY, | ||
| program_name VARCHAR(100) NOT NULL | ||
| ); | ||
|
|
||
| -- Таблица Subjects (должна быть создана до Teaching_Assignment) | ||
| CREATE TABLE IF NOT EXISTS Subjects ( | ||
| subject_id SERIAL PRIMARY KEY, | ||
| subject_name VARCHAR(100) NOT NULL | ||
| ); | ||
|
|
||
| -- Таблица Subject_Offer (с правильными ссылками) | ||
| CREATE TABLE IF NOT EXISTS Subject_Offer ( | ||
| offer_id SERIAL PRIMARY KEY, | ||
| people_group_id INT REFERENCES People_Group(people_group_id), | ||
| program_id INT REFERENCES Program(program_id), | ||
| course_id INT REFERENCES Course(course_id) | ||
| ); | ||
|
|
||
| -- Таблица Teaching_Assignment (исправлено название с Teaching_Assingment) | ||
| CREATE TABLE IF NOT EXISTS Teaching_Assigment ( | ||
| assignment_id SERIAL PRIMARY KEY, | ||
| person_id INT REFERENCES People(person_id), | ||
| offer_id INT REFERENCES Subject_Offer(offer_id), | ||
| subject_id INT REFERENCES Subjects(subject_id) | ||
| ); | ||
|
|
||
| -- Таблица Sop_Form с использованием созданного типа ENUM | ||
| CREATE TABLE IF NOT EXISTS Sop_Form ( | ||
| sop_id SERIAL PRIMARY KEY, | ||
| person_id INT REFERENCES People(person_id), | ||
| url_out_sop VARCHAR(100) NOT NULL, | ||
| sop_status VARCHAR(100) NOT NULL, | ||
| tg_answer TEXT, -- Исправлено с NTEXT на TEXT | ||
| url_answer TEXT -- Исправлено с NTEXT на TEXT | ||
| ); | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
переместить в docs/