diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/edu-dis-labs.iml b/.idea/edu-dis-labs.iml
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..5f22521
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
index c0d2c6d..10bfb65 100644
--- a/docs/.vuepress/config.js
+++ b/docs/.vuepress/config.js
@@ -67,10 +67,6 @@ module.exports = {
path:"/conclusion/"
},
- {
- title: 'API',
- path:"/api/"
- }
],
sidebarDepth: 2,
diff --git a/docs/README.md b/docs/README.md
index cb7c880..c8cf408 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -6,24 +6,12 @@ actionLink: /intro/
footer: "ECL 2.0 Licensed | Copyright © 2024 [Your Name]"
---
-**Виконали:**
+**Виконала:**
-*студенти 2-го курсу, групи ІО-23:*
-
-*Олег ШМУЛЯР [shmuliar1@ukr.net, [@dmytrofiot23](https://t.me/dmytrofiot23)]*
-
-*Андрій БОДНАР [bodnarandrew123@gmail.com, [@andrux4](https://t.me/andrux4)]*
-
-*Андрій ШВЕД [andreyfrog26@gmail.com, [@Rhinemann](https://t.me/Rhinemann)]*
-
-*Євгеній ГОЛОВАТЕНКО [ievgeniigol@gmail.com, [@yevholova](https://t.me/yevholova)]*
+*студентка 2-го курсу, групи ІО-23:*
*Вікторія ВОДЯНА [vodyanayaviktoria@gmail.com, [@victoriavodyana](https://t.me/victoriavodyana)]*
-*Михайло КОРБУТ [korbutmykhailo@gmail.com, [@misha1tigr](https://t.me/misha1tigr)]*
-
-*Олександр ГУРАНЕЦЬ [bacant150@gmail.com, [@Bacant150](https://t.me/Bacant150)]*
-
**Керівник**
diff --git a/docs/conclusion/README.md b/docs/conclusion/README.md
index 0076ccc..7708ba1 100644
--- a/docs/conclusion/README.md
+++ b/docs/conclusion/README.md
@@ -1,12 +1,9 @@
# Висновки
-У висновках наводять оцінку отриманих результатів, можливі галузі його використання. Висновки повинні містити в собі коротку узагальнену оцінку результатів розробки, у
-тому числі і з погляду на їх технічно-економічну ефективність. Необхідно порівняти
-отримані результати усіх характеристик об’єкта проєктування із завданням і з основними показниками сучасних аналогічних об’єктів.
+У цьому проєкті була використана локальна база даних для зберігання інформації. Розроблена серверна частина надає RESTful-інтерфейс для доступу до цієї бази даних. Цей інтерфейс може використовуватися для взаємодії з таблицею питань (survey), що дозволяє здійснювати операції читання, запису, оновлення та видалення даних через HTTP-запити. Такий підхід забезпечує зручний та ефективний спосіб взаємодії з базою даних і відкриває широкі можливості для розвитку та розширення функціональності системи.
-Необхідно вказати яке нове технічне рішення покладене в основу проєкту і у чому її
-переваги, що нового було запропоновано самим студентом.
-На базі отриманих висновків можуть надаватися рекомендації по використанню розробки. Вони повинні
-мати конкретний характер і бути цілком підтверджені проєктом.
+Технічне рішення, що покладене в основу проєкту, полягає у використанні мови програмування Python та веб-фреймворку Flask для створення RESTful сервісу. Це дозволило забезпечити швидку реалізацію системи та забезпечити її продуктивність та масштабованість.
+
+Отримана система дозволяє автоматизувати процес збору та аналізу відповідей, що значно знижує час та ресурси, необхідні для проведення таких опитувань. Завдяки використанню сучасних технологій, таких як Flask, система має високу продуктивність та може легко масштабуватися відповідно до потреб користувачів.
diff --git a/docs/software/README.md b/docs/software/README.md
index bef4c7c..8ce74a4 100644
--- a/docs/software/README.md
+++ b/docs/software/README.md
@@ -110,4 +110,67 @@ ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
-```
\ No newline at end of file
+```
+## RESTfull-сервіс для керування опитуваннями
+
+Код серверу (Python, Flask) для таблиці "survey":
+```from flask import Flask, request, jsonify
+from flask_sqlalchemy import SQLAlchemy
+
+app = Flask(__name__)
+app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1234@localhost/odb'
+db = SQLAlchemy(app)
+
+class Survey(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+ isPaused = db.Column(db.Boolean)
+ isNamed = db.Column(db.Boolean)
+ name = db.Column(db.String(255))
+ duration = db.Column(db.Integer)
+ account_id = db.Column(db.Integer)
+
+ def __repr__(self):
+ return f""
+
+ def as_dict(self):
+ return {c.name: getattr(self, c.name) for c in self.__table__.columns}
+
+@app.route("/api/survey", methods=["GET", "POST"])
+def api_survey():
+ if request.method == "GET":
+ surveys = Survey.query.all()
+ return jsonify([survey.as_dict() for survey in surveys])
+
+ elif request.method == "POST":
+ data = request.json
+ new_survey = Survey(isPaused=data['isPaused'], isNamed=data['isNamed'], name=data['name'],
+ duration=data['duration'], account_id=data['account_id'])
+ db.session.add(new_survey)
+ db.session.commit()
+ return jsonify({'success': True}), 201
+
+@app.route("/api/survey/", methods=["GET", "PUT", "DELETE"])
+def api_survey_numbered(survey_id):
+ survey = Survey.query.get_or_404(survey_id)
+
+ if request.method == "GET":
+ return jsonify(survey.as_dict())
+
+ elif request.method == "PUT":
+ data = request.json
+ survey.isPaused = data['isPaused']
+ survey.isNamed = data['isNamed']
+ survey.name = data['name']
+ survey.duration = data['duration']
+ survey.account_id = data['account_id']
+ db.session.commit()
+ return jsonify({'success': True})
+
+ elif request.method == "DELETE":
+ db.session.delete(survey)
+ db.session.commit()
+ return jsonify({'success': True})
+
+if __name__ == '__main__':
+ app.run(debug=True)
+'''
\ No newline at end of file
diff --git a/docs/test/README.md b/docs/test/README.md
index 4cf2563..6ae6d24 100644
--- a/docs/test/README.md
+++ b/docs/test/README.md
@@ -1,4 +1,34 @@
# Тестування працездатності системи
-*В цьому розділі необхідно вказати засоби тестування, навести вихідні коди тестів та результати тестування.*
+Тестування працездатності системи
+Для тестування системи використовувся додаток Postman
+
+Запуск сервера:
+![alt text](image.png)
+
+Метод POST
+POST Survey
+Запит та відповідь:
+![alt text](image-1.png)
+
+Перевірка за допомогою GET:
+![![alt text](image-2.png)](image-2.png)
+
+Метод PUT
+PUT Survey
+Запит та відповідь:
+![alt text](image-3.png)
+
+Перевірка за допомогою GET:
+![alt text](image-4.png)
+
+Метод DELETE
+DELETE Survey
+Запит та відповідь:
+![alt text](image-5.png)
+
+Перевірка за допомогою GET:
+![alt text](image-6.png)
+
+
diff --git a/docs/test/image-1.png b/docs/test/image-1.png
new file mode 100644
index 0000000..32b034b
Binary files /dev/null and b/docs/test/image-1.png differ
diff --git a/docs/test/image-2.png b/docs/test/image-2.png
new file mode 100644
index 0000000..2b69373
Binary files /dev/null and b/docs/test/image-2.png differ
diff --git a/docs/test/image-3.png b/docs/test/image-3.png
new file mode 100644
index 0000000..9326a50
Binary files /dev/null and b/docs/test/image-3.png differ
diff --git a/docs/test/image-4.png b/docs/test/image-4.png
new file mode 100644
index 0000000..29f13bd
Binary files /dev/null and b/docs/test/image-4.png differ
diff --git a/docs/test/image-5.png b/docs/test/image-5.png
new file mode 100644
index 0000000..7de394f
Binary files /dev/null and b/docs/test/image-5.png differ
diff --git a/docs/test/image-6.png b/docs/test/image-6.png
new file mode 100644
index 0000000..eb4ed06
Binary files /dev/null and b/docs/test/image-6.png differ
diff --git a/docs/test/image.png b/docs/test/image.png
new file mode 100644
index 0000000..6772fe6
Binary files /dev/null and b/docs/test/image.png differ
diff --git a/src/restful-server/__pycache__/serverSurvey.cpython-312.pyc b/src/restful-server/__pycache__/serverSurvey.cpython-312.pyc
new file mode 100644
index 0000000..31d34fe
Binary files /dev/null and b/src/restful-server/__pycache__/serverSurvey.cpython-312.pyc differ
diff --git a/src/restful-server/flask b/src/restful-server/flask
new file mode 100644
index 0000000..e69de29
diff --git a/src/restful-server/serverSurvey.py b/src/restful-server/serverSurvey.py
new file mode 100644
index 0000000..21df043
--- /dev/null
+++ b/src/restful-server/serverSurvey.py
@@ -0,0 +1,62 @@
+from flask import Flask, request, jsonify
+from flask_sqlalchemy import SQLAlchemy
+
+app = Flask(__name__)
+app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1234@localhost/odb'
+db = SQLAlchemy(app)
+
+class Survey(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+ isPaused = db.Column(db.Boolean)
+ isNamed = db.Column(db.Boolean)
+ name = db.Column(db.String(255))
+ duration = db.Column(db.Integer)
+ account_id = db.Column(db.Integer)
+
+ def __repr__(self):
+ return f""
+
+ def as_dict(self):
+ return {c.name: getattr(self, c.name) for c in self.__table__.columns}
+
+@app.route("/api/survey", methods=["GET", "POST"])
+def api_survey():
+ if request.method == "GET":
+ surveys = Survey.query.all()
+ return jsonify([survey.as_dict() for survey in surveys])
+
+ elif request.method == "POST":
+ data = request.json
+ new_survey = Survey(isPaused=data['isPaused'], isNamed=data['isNamed'], name=data['name'],
+ duration=data['duration'], account_id=data['account_id'])
+ db.session.add(new_survey)
+ db.session.commit()
+ return jsonify({'success': True}), 201
+
+@app.route("/api/survey/", methods=["GET", "PUT", "DELETE"])
+def api_survey_numbered(survey_id):
+ survey = Survey.query.get_or_404(survey_id)
+
+
+ if request.method == "GET":
+ return jsonify(survey.as_dict())
+
+ elif request.method == "PUT":
+ data = request.json
+
+ survey.isPaused = data['isPaused']
+ survey.isNamed = data['isNamed']
+ survey.name = data['name']
+ survey.duration = data['duration']
+ survey.account_id = data['account_id']
+
+ db.session.commit()
+ return jsonify({'success': True})
+
+ elif request.method == "DELETE":
+ db.session.delete(survey)
+ db.session.commit()
+ return jsonify({'success': True})
+
+if __name__ == '__main__':
+ app.run(debug=True)