20 Commits

Author SHA1 Message Date
3bc9d4ed84 lab6 update 2024-06-06 19:06:17 +03:00
1110eee18e lab 6 update 2024-06-06 18:47:14 +03:00
59f249f4ea update for lab6 2024-06-06 17:52:39 +03:00
ba81f91189 Merge pull request 'Виправив помилки на головній сторінці звітів' (#43) from shmuliar into master
Reviewed-on: #43
2024-05-20 11:50:24 +03:00
bf9e6364b9 виправив помилки на головній сторінці звітів 2024-05-20 11:48:43 +03:00
c941ac2022 Merge pull request 'лаб4: зробив рамочку навколо реляційної схеми' (#42) from shmuliar into master
Reviewed-on: #42
2024-05-20 11:39:22 +03:00
2229e75644 лаб4: зробив рамочку навколо реляційної схеми 2024-05-20 11:36:37 +03:00
f71e97b6ff Merge pull request 'Лаб №4: додав SQL-скрипт та скріншот моделі' (#41) from korbut into master
Reviewed-on: #41
Reviewed-by: ІО-23 Шмуляр Олег <hasslesstech@noreply.localhost>
2024-05-20 11:34:23 +03:00
3679f641e5 додав реляційну схему та скрипт до відповідних README 2024-05-20 11:27:12 +03:00
5702bdce4d видалив залишкові файли 2024-05-20 10:47:42 +03:00
c8787ad1f7 лаб4: додав SQL скрипт та скріншот ER-моделі 2024-05-20 10:23:39 +03:00
302fd36c34 Merge pull request 'Лаб №4: додавання ER-моделі' (#40) from shmuliar into master
Reviewed-on: #40
2024-05-19 12:48:13 +03:00
9feddb6bac лаб4: додав типи даних полів посилання на BE-моделі 2024-05-19 12:43:34 +03:00
941c5be8f3 лаб4: додав ER-модель та оновив попередні лабораторні 2024-05-19 12:39:09 +03:00
577e565552 Merge pull request 'лаб4: BE-модель' (#39) from shmuliar into master
Reviewed-on: #39
2024-05-19 10:41:12 +03:00
c70ddad444 лаб4: додав use-case-файли для керування посиланнями та оновив всі попередні лаби 2024-05-19 10:33:14 +03:00
3dc979873b Оновлення гілки 2024-05-02 11:11:26 +03:00
6fdb3b9072 Merge pull request 'table-generator: розробив аналоги основних інструментів мовою Python 3' (#37) from shmuliar-use-case into master
Reviewed-on: #37
2024-05-02 11:10:55 +03:00
2c392feee6 лаб4: додав на BE-модель інформацію про посилання 2024-04-30 22:32:06 +03:00
9b538c7d8e лаб4: додав BE-модель 2024-04-30 22:06:45 +03:00
24 changed files with 597 additions and 76 deletions

View File

@@ -15,7 +15,7 @@ module.exports = {
}] }]
], ],
port: 3030, port: 3030,
base: '/edu-dis-labs/', base: '/OBD-lab6/',
theme: 'cool', theme: 'cool',
// dest: 'dist', // dest: 'dist',
head: [ head: [
@@ -66,12 +66,6 @@ module.exports = {
title: 'Висновки', title: 'Висновки',
path:"/conclusion/" path:"/conclusion/"
}, },
{
title: 'API',
path:"/api/"
}
], ],
sidebarDepth: 2, sidebarDepth: 2,
displayAllHeaders: true, // Default: false displayAllHeaders: true, // Default: false
@@ -102,8 +96,8 @@ module.exports = {
// editLinkText: 'Ви можете покращити цю сторінку' // editLinkText: 'Ви можете покращити цю сторінку'
}, },
title: 'Expertise', title: 'Xpertise',
description: 'Лабораторні роботи з дисципліни "Розподілені інформаційні системи"', description: 'Лабораторні роботи з дисципліни "Організація баз даних"',
configureWebpack: { configureWebpack: {
resolve: { resolve: {
alias: { alias: {

View File

@@ -6,23 +6,12 @@ actionLink: /intro/
footer: "ECL 2.0 Licensed | Copyright © 2024 [Your Name]" footer: "ECL 2.0 Licensed | Copyright © 2024 [Your Name]"
--- ---
**Виконали:** **Виконав:**
*студенти 2-го курсу, групи ІО-23:* *студент 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)]* *Євгеній ГОЛОВАТЕНКО [ievgeniigol@gmail.com, [@yevholova](https://t.me/yevholova)]*
*Вікторія ВОДЯНА [vodyanayaviktoria@gmail.com, [@victoriavodyana](https://t.me/victoriavodyana)]*
*Михайло КОРБУТ [korbutmykhailo@gmail.com, [@misha1tigr](https://t.me/misha1tigr)]*
*Олександр ГУРАНЕЦЬ [bacant150@gmail.com, [@Bacant150](https://t.me/Bacant150)]*
**Керівник** **Керівник**

View File

@@ -1,12 +1,5 @@
# Висновки # Висновки
У висновках наводять оцінку отриманих результатів, можливі галузі його використання. Висновки повинні містити в собі коротку узагальнену оцінку результатів розробки, у Підсумовуючи, можу сказати, що розроблений мною RESTfull-сервіс працює коректно та має деякі особливості, зокрема й повернення статусу запиту окремим параметром в JSON-документі. Такі дрібниці спрощують роботу розробникам, що використовуватимуть мою систему, а це завжди є перевагою.
тому числі і з погляду на їх технічно-економічну ефективність. Необхідно порівняти
отримані результати усіх характеристик об’єкта проєктування із завданням і з основними показниками сучасних аналогічних об’єктів.
Необхідно вказати яке нове технічне рішення покладене в основу проєкту і у чому її
переваги, що нового було запропоновано самим студентом.
На базі отриманих висновків можуть надаватися рекомендації по використанню розробки. Вони повинні
мати конкретний характер і бути цілком підтверджені проєктом.
Крім того, завдяки простій та зрозумілій організації даних в БД цю систему можна швидко розгорнути на серверах, а її структура дозволить додавати в проєкт нову функціональність, тому цей проєкт має потенціал стати базою для подальших розробок.

View File

@@ -1,11 +1,6 @@
# Проєктування системи # Проєктування бази даних
## BE модель
Вбудовування зображень діаграм здійснюється з використанням сервісу [plantuml.com](https://plantuml.com/).
В markdown-файлі використовується опис діаграми
```md
<center style=" <center style="
border-radius:4px; border-radius:4px;
@@ -16,34 +11,58 @@
@startuml @startuml
participant Client entity Account <<ENTITY>>
entity Account.username <<TEXT>>
entity Account.password <<TEXT>>
participant SR as "Service Registry" entity Survey <<ENTITY>>
entity Survey.name <<TEXT>>
entity Survey.duration <<TEXT>>
entity Survey.isPaused <<BOOLEAN>>
entity Survey.isNamed <<BOOLEAN>>
participant Service entity Question <<ENTITY>>
entity Question.text <<TEXT>>
Service -> SR : register entity Responce <<ENTITY>>
SR -> SR entity Responce.value <<TEXT>>
SR --> Service
...
SR -> Service: heartbeat entity Link <<ENTITY>>
SR <-- Service: health entity Link.usageLimit <<INT>>
... entity Link.responceLimit <<INT>>
entity Link.uses <<INT>>
entity Link.responces <<INT>>
entity Link.path <<TEXT>>
Client -> SR: find Account.username --* Account
Client <-- SR: service endpoint Account.password --* Account
Client -> Service: request
Client <-- Service: response
Survey.name --* Survey
Survey.duration --* Survey
Survey.isPaused --* Survey
Survey.isNamed --* Survey
Link.usageLimit -u-* Link
Link.responceLimit -u-* Link
Link.uses --* Link
Link.responces --* Link
Link.path -u-* Link
Responce.value -u-* Responce
Question.text -u-* Question
Account "1,1" -- "0,*" Survey
Survey "1,1" -- "0,*" Question
Question "1,1" -r- "0,*" Responce
Account "0,1" -r- "0,*" Responce
Link "0,*" -- "1,1" Survey
@enduml @enduml
</center> </center>
```
яка буде відображена наступним чином ## ER-модель
<center style=" <center style="
border-radius:4px; border-radius:4px;
@@ -54,33 +73,58 @@ Client <-- Service: response
@startuml @startuml
@startuml entity Account <<ENTITY>> {
id:INT
username:CHAR(64)
password:CHAR(256)
}
participant Client entity Responce <<ENTITY>> {
id:INT
value:CHAR(16384)
}
participant SR as "Service Registry" entity Question <<ENTITY>> {
id:INT
text:CHAR(256)
}
participant Service entity Survey <<ENTITY>> {
id:INT
Service -> SR : register name:CHAR(256)
SR -> SR duration:CHAR(256)
SR --> Service isPaused:BOOLEAN
... isNamed:BOOLEAN
}
SR -> Service: heartbeat
SR <-- Service: health
...
Client -> SR: find
Client <-- SR: service endpoint
Client -> Service: request
Client <-- Service: response
entity Link <<ENTITY>> {
id:INT
uses:INT
responces:INT
usageLimit:INT
responceLimit:INT
path:CHAR(32)
}
Responce "0,*" --> "1,1" Question
Question "0,*" --> "1,1" Survey
Survey "0,*" --> "1,1" Account
Link "0,*" --> "1,1" Survey
Responce "0,*" --> "0,1" Account
@enduml @enduml
</center> </center>
## Реляційна схема
<center style="
border-radius:4px;
border: 1px solid #cfd7e6;
box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
padding: 1em;"
>
![relational_schema](./relational_scheme.png)
</center>

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -93,6 +93,33 @@
| Виключні ситуації | 001.005 Користувач не ідентифікований | | Виключні ситуації | 001.005 Користувач не ідентифікований |
| Основний сценарій | 1. Користувач натискає на кнопку редагування облікового запису<br>2. Система виводить інтерфейс для редагування облікового запису (можлива 001.005)<br>3. Користувач вказує бажані зміни властивостей облікового запису<br>4. Користувач натискає на кнопку внесення змін до властивостей облікового запису<br>5. Система змінює властивості облікового запису | | Основний сценарій | 1. Користувач натискає на кнопку редагування облікового запису<br>2. Система виводить інтерфейс для редагування облікового запису (можлива 001.005)<br>3. Користувач вказує бажані зміни властивостей облікового запису<br>4. Користувач натискає на кнопку внесення змін до властивостей облікового запису<br>5. Система змінює властивості облікового запису |
| ID | SURVEY.LINK.CREATE |
|:-----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Назва | Додати посилання на опитування |
| Учасники | Користувач, система |
| Передумови | Користувач авторизований у системі |
| Результат | Нове посилання на опитування |
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування |
| Основний сценарій | 1. Користувач натискає кнопку створення посилання на опитування<br>2. Система виводить налаштування для нового посилання (можливі 001.005, 001.006, 001.008)<br>3. Користувач вводить налаштування для нового посилання<br>4. Користувач натискає на кнопку створення посилання<br>5. Система створює нове посилання |
| ID | SURVEY.LINK.DELETE |
|:-----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Назва | Видалити посилання на опитування |
| Учасники | Користувач, система |
| Передумови | Користувач авторизований у системі |
| Результат | Видалення посилання на опитування |
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування<br>001.009 Запитане посилання на існує |
| Основний сценарій | 1. Користувач натискає кнопку видалення посилання<br>2. Система виводить кнопку підтвердження видалення посилання<br>3. Користувач натискає на кнопку підтвердження видалення посилання<br>4. Система видаляє посилання (можливі 001.005, 001.006, 001.008, 001.009) |
| ID | SURVEY.LINK.MODIFY |
|:-----------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Назва | Змінити властивості посилання на опитування |
| Учасники | Користувач, система |
| Передумови | Користувач авторизований у системі |
| Результат | Зміна властивостей посилання на опитування |
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування<br>001.009 Запитане посилання на існує |
| Основний сценарій | 1. Користувач натискає кнопку редагування властивостей посилання<br>2. Система виводить налаштування для обраного посилання (можливі 001.005, 001.006, 001.008, 001.009)<br>3. Користувач вводить юажані зміни властивостей посилання<br>4. Користувач натискає на кнопку збереження властиностей посилання<br>5. Система змінює властивості посилання |
| ID | USER.CREATE_SURVEY | | ID | USER.CREATE_SURVEY |
|:-----------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| |:-----------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Назва | Створити опитування | | Назва | Створити опитування |
@@ -210,6 +237,9 @@ Cистема розділяє користувачів на дві катего
- створити опитування - створити опитування
- відредагувати своє опитування - відредагувати своє опитування
- видалити своє опитування - видалити своє опитування
- створити посилання на своє опитування
- редагувати властивості посилання на своє опитування
- видалити посилання на своє опитування
- призупинити своє опитування - призупинити своє опитування
- продовжити своє опитування - продовжити своє опитування
- переглянути властивості свого опитування - переглянути властивості свого опитування

View File

@@ -1,3 +1,256 @@
# Реалізація інформаційного та програмного забезпечення # Реалізація інформаційного та програмного забезпечення
## SQL-скрипт для створення та початкового наповнення бази даних
```sql
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Account`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Account` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`username` CHAR(255) NOT NULL,
`password` CHAR(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
UNIQUE INDEX `username_UNIQUE` (`username` ASC) VISIBLE)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Survey`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Survey` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`isPaused` TINYINT UNSIGNED NOT NULL,
`isNamed` TINYINT UNSIGNED NOT NULL,
`name` CHAR(255) NULL,
`duration` CHAR(255) NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
CONSTRAINT `fk_Survey_Account1`
FOREIGN KEY (`id`)
REFERENCES `mydb`.`Account` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Question`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Question` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`Text` CHAR(255) NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
CONSTRAINT `fk_Question_Survey1`
FOREIGN KEY (`id`)
REFERENCES `mydb`.`Survey` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Response`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Response` (
`id` INT UNSIGNED NULL AUTO_INCREMENT,
`Value` VARCHAR(16384) NULL,
UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
PRIMARY KEY (`id`),
CONSTRAINT `fk_Response_Question`
FOREIGN KEY (`id`)
REFERENCES `mydb`.`Question` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Response_Account1`
FOREIGN KEY (`id`)
REFERENCES `mydb`.`Account` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Link`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Link` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`uses` INT NOT NULL,
`responces` INT NOT NULL,
`usageLimit` INT NULL,
`responceLimit` INT NULL,
`path` CHAR(32) NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `fk_Link_Survey1`
FOREIGN KEY (`id`)
REFERENCES `mydb`.`Survey` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
```
## Програмний код RESTful-сервісу
```python
from flask import Flask, request, jsonify
import mysql.connector
from mysql.connector import Error
from db_config import db_config
app = Flask(name)
def get_db_connection():
try:
conn = mysql.connector.connect(**db_config)
return conn
except Error as e:
return jsonify({"error": f"Error in connection to database: {str(e)}"}), 500
@app.route('/links', methods=['GET'])
def get_links():
try:
conn = get_db_connection()
if isinstance(conn, tuple):
return conn
cursor = conn.cursor(dictionary=True)
cursor.execute('SELECT * FROM link')
links = cursor.fetchall()
cursor.close()
conn.close()
return jsonify(links)
except Error as e:
return jsonify({"error": f"Error getting data: {str(e)}"}), 500
@app.route('/link/<int:id>', methods=['GET'])
def get_link():
try:
conn = get_db_connection()
if isinstance(conn, tuple):
return conn
cursor = conn.cursor(dictionary=True)
cursor.execute('SELECT * FROM link WHERE id = %s', [1])
link = cursor.fetchone()
cursor.close()
conn.close()
if link is None:
return jsonify({"error": "Link is not found"}), 404
return jsonify(link)
except Error as e:
return jsonify({"error": f"Error getting data: {str(e)}"}), 500
@app.route('/link', methods=['POST'])
def create_link():
try:
new_link = request.json
conn = get_db_connection()
if isinstance(conn, tuple):
return conn
cursor = conn.cursor()
cursor.execute('''
INSERT INTO link (uses, responses, usageLimit, responseLimit, path, Survey_id)
VALUES (%s, %s, %s, %s, %s, %s)
''', (
new_link.get('uses'),
new_link.get('responses'),
new_link.get('usageLimit'),
new_link.get('responseLimit'),
new_link.get('path'),
new_link.get('Survey_id')
))
conn.commit()
cursor.close()
conn.close()
return jsonify({"success": "Link created successfully", "data": new_link}), 201
except Error as e:
return jsonify({"error": f"Error creating link: {str(e)}"}), 500
@app.route('/link/<int:id>', methods=['PUT'])
def update_link():
try:
update_link = request.json
conn = get_db_connection()
if isinstance(conn, tuple):
return conn
cursor = conn.cursor()
cursor.execute('''
UPDATE link SET
uses = %s,
responses = %s,
usageLimit = %s,
responseLimit = %s,
path = %s,
Survey_id = %s
WHERE id = %s
''', (
update_link.get('uses'),
update_link.get('responses'),
update_link.get('usageLimit'),
update_link.get('responseLimit'),
update_link.get('path'),
update_link.get('Survey_id'),
id
))
conn.commit()
cursor.close()
conn.close()
if cursor.rowcount == 0:
return jsonify({"error": f"Update error: link is not found"}), 404
else:
return jsonify({"success": f"Link from ID {id} updated successfully", "data": update_link}), 202
except Error as e:
return jsonify({"error": f"Error updating link: {str(e)}"}), 500
@app.route('/link/<int:id>', methods=['DELETE'])
def delete_link():
try:
conn = get_db_connection()
if isinstance(conn, tuple):
return conn
cursor = conn.cursor()
cursor.execute('DELETE FROM Link WHERE id = %s', [1])
conn.commit()
cursor.close()
conn.close()
if cursor.rowcount == 0:
return jsonify({"error": f"Delete error: link is not found"}), 404
else:
return jsonify({"success": f"Link from ID {id} deleted successfully"}), 200
except Error as e:
return jsonify({"error": f"Error deleting link: {str(e)}"}), 500
if name == 'main':
app.run(debug=False)
```

View File

@@ -1,4 +1,93 @@
# Тестування працездатності системи # Тестування працездатності системи
*В цьому розділі необхідно вказати засоби тестування, навести вихідні коди тестів та результати тестування.* ## Обробка запитів з методом GET
<center style="
border-radius:4px;
border: 1px solid #cfd7e6;
box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
padding: 1em;
margin-bottom: 15px;"
>
![](./img/photo_2024-06-06_18-23-41.jpg)
</center>
<center style="
border-radius:4px;
border: 1px solid #cfd7e6;
box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
padding: 1em;
margin-bottom: 15px;"
>
![](./img/photo_2024-06-06_18-23-49.jpg)
</center>
<center style="
border-radius:4px;
border: 1px solid #cfd7e6;
box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
padding: 1em;
margin-bottom: 15px;"
>
![](./img/photo_2024-06-06_18-23-52.jpg)
</center>
<center style="
border-radius:4px;
border: 1px solid #cfd7e6;
box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
padding: 1em;
margin-bottom: 15px;"
>
![](./img/photo_2024-06-06_18-23-55.jpg)
</center>
## Обробка запитів з методом POST
<center style="
border-radius:4px;
border: 1px solid #cfd7e6;
box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
padding: 1em;
margin-bottom: 15px;"
>
![](./img/photo_2024-06-06_18-23-46.jpg)
</center>
## Обробка запитів з методом PUT
<center style="
border-radius:4px;
border: 1px solid #cfd7e6;
box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
padding: 1em;
margin-bottom: 15px;"
>
![](./img/photo_2024-06-06_18-24-01.jpg)
</center>
## Обробка запитів з методом DELETE
<center style="
border-radius:4px;
border: 1px solid #cfd7e6;
box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
padding: 1em;
margin-bottom: 15px;"
>
![](./img/photo_2024-06-06_18-23-57.jpg)
</center>

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -17,6 +17,9 @@
(<b>ACCOUNT.CREATE</b>\nСтворити обліковий запис) as CreateAccount (<b>ACCOUNT.CREATE</b>\nСтворити обліковий запис) as CreateAccount
(<b>ACCOUNT.DELETE</b>\nВидалити обліковий запис) as DeleteAccount (<b>ACCOUNT.DELETE</b>\nВидалити обліковий запис) as DeleteAccount
(<b>ACCOUNT.MODIFY</b>\nЗмінити властивості облікового запису) as ModifyAccount (<b>ACCOUNT.MODIFY</b>\nЗмінити властивості облікового запису) as ModifyAccount
(<b>SURVEY.LINK.CREATE</b>\nСтворити посилання на опитування) as CreateLink
(<b>SURVEY.LINK.DELETE</b>\nВидалити посилання на опитування) as DeleteLink
(<b>SURVEY.LINK.MODIFY</b>\nЗмінити властивості посилання на опитування) as ModifyLink
(<b>USER.CREATE_SURVEY</b>\nСтворити опитування) as CreateSurvey (<b>USER.CREATE_SURVEY</b>\nСтворити опитування) as CreateSurvey
(<b>USER.DELETE_SURVEY</b>\nВидалити опитування) as DeleteSurvey (<b>USER.DELETE_SURVEY</b>\nВидалити опитування) as DeleteSurvey
(<b>USER.GET_SURVEY_RESULT</b>\nПереглянути відповіді на опитування) as GetSurveyResult (<b>USER.GET_SURVEY_RESULT</b>\nПереглянути відповіді на опитування) as GetSurveyResult
@@ -33,6 +36,9 @@
AuthorisedUser -r-> ModifyAccount AuthorisedUser -r-> ModifyAccount
AuthorisedUser -u-> DeleteAccount AuthorisedUser -u-> DeleteAccount
AuthorisedUser -r-> CreateLink
AuthorisedUser -l-> DeleteLink
AuthorisedUser -u-> ModifyLink
AuthorisedUser -u-> LogOut AuthorisedUser -u-> LogOut
AuthorisedUser --> CreateSurvey AuthorisedUser --> CreateSurvey
AuthorisedUser -u-> DeleteSurvey AuthorisedUser -u-> DeleteSurvey
@@ -80,9 +86,15 @@
(<b>USER.STAT_SURVEY</b>\nПереглянути властивості опитування) as StatSurvey (<b>USER.STAT_SURVEY</b>\nПереглянути властивості опитування) as StatSurvey
(<b>USER.TAKE_ANON_SURVEY</b>\nПройти анонімне опитування) as TakeAnonSurvey (<b>USER.TAKE_ANON_SURVEY</b>\nПройти анонімне опитування) as TakeAnonSurvey
(<b>USER.TAKE_NAMED_SURVEY</b>\nПройти поіменне опитування) as TakeNamedSurvey (<b>USER.TAKE_NAMED_SURVEY</b>\nПройти поіменне опитування) as TakeNamedSurvey
(<b>SURVEY.LINK.CREATE</b>\nСтворити посилання на опитування) as CreateLink
(<b>SURVEY.LINK.DELETE</b>\nВидалити посилання на опитування) as DeleteLink
(<b>SURVEY.LINK.MODIFY</b>\nЗмінити властивості посилання на опитування) as ModifyLink
AuthorisedUser -r-> ModifyAccount AuthorisedUser -r-> ModifyAccount
AuthorisedUser -u-> DeleteAccount AuthorisedUser -u-> DeleteAccount
AuthorisedUser -r-> CreateLink
AuthorisedUser -l-> DeleteLink
AuthorisedUser -u-> ModifyLink
AuthorisedUser -u-> LogOut AuthorisedUser -u-> LogOut
AuthorisedUser -d-> CreateSurvey AuthorisedUser -d-> CreateSurvey
AuthorisedUser -u-> DeleteSurvey AuthorisedUser -u-> DeleteSurvey
@@ -221,6 +233,80 @@
stop stop
@enduml @enduml
| ID | SURVEY.LINK.CREATE |
|:-----------------:|:-----------------------------------------------------------------------------------------------------------------------------:|
| Назва | Додати посилання на опитування |
| Учасники | Користувач, система |
| Передумови | Користувач авторизований у системі |
| Результат | Нове посилання на опитування |
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування |
@startuml
|Користувач|
start
: Натискає кнопку створення посилання на опитування;
|Система|
: Виводить налаштування для нового посилання;
note right #lightpink
<b>Можливі 001.005, 001.006, 001.008</b>
end note
|Користувач|
: Вводить налаштування для нового посилання;
: Натискає на кнопку створення посилання;
|Система|
: Створює нове посилання;
|Користувач|
stop
@enduml
| ID | SURVEY.LINK.DELETE |
|:-----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Назва | Видалити посилання на опитування |
| Учасники | Користувач, система |
| Передумови | Користувач авторизований у системі |
| Результат | Видалення посилання на опитування |
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування<br>001.009 Запитане посилання на існує |
@startuml
|Користувач|
start
: Натискає кнопку видалення посилання;
|Система|
: Виводить кнопку підтвердження видалення посилання;
|Користувач|
: Натискає на кнопку підтвердження видалення посилання;
|Система|
: Видаляє посилання;
note right #lightpink
<b>Можливі 001.005, 001.006, 001.008, 001.009</b>
end note
|Користувач|
stop
@enduml
| ID | SURVEY.LINK.MODIFY |
|:-----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Назва | Змінити властивості посилання на опитування |
| Учасники | Користувач, система |
| Передумови | Користувач авторизований у системі |
| Результат | Зміна властивостей посилання на опитування |
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування<br>001.009 Запитане посилання на існує |
@startuml
|Користувач|
start
: Натискає кнопку редагування властивостей посилання;
|Система|
: Виводить налаштування для обраного посилання;
note right #lightpink
<b>Можливі 001.005, 001.006, 001.008, 001.009</b>
end note
|Користувач|
: Вводить юажані зміни властивостей посилання;
: Натискає на кнопку збереження властиностей посилання;
|Система|
: Змінює властивості посилання;
|Користувач|
stop
@enduml
| ID | USER.CREATE_SURVEY | | ID | USER.CREATE_SURVEY |
|:-----------------:|:--------------------------------------------------------------------------------------------------------:| |:-----------------:|:--------------------------------------------------------------------------------------------------------:|
| Назва | Створити опитування | | Назва | Створити опитування |

View File

@@ -20,6 +20,6 @@ git commit -m '[automated]: pushing regenerated documentation'
# git push -f git@github.com:boldak/<USERNAME>.github.io.git master # git push -f git@github.com:boldak/<USERNAME>.github.io.git master
# if you are deploying to https://<USERNAME>.github.io/<REPO> # if you are deploying to https://<USERNAME>.github.io/<REPO>
git push -f http://10.1.1.1:3000/hasslesstech/edu-dis-labs master:gh-pages git push -f http://10.1.1.1:3000/EugenIO/edu-dis-labs master:gh-pages
cd - cd -

View File

@@ -1,2 +1,3 @@
# програмні коди # JS-скрипти
В цьому розділі розміщені програмні коди.
В цьому розділі розміщені програмні коди javascript.

3
src/sql/README.md Normal file
View File

@@ -0,0 +1,3 @@
# SQL-скрипти
В цьому розділі розміщені сирцеві коди для створення бази даних.

2
src/sql/script.sql Normal file
View File

@@ -0,0 +1,2 @@
USE odb;
SELECT * FROM odb.link;

View File

@@ -0,0 +1,12 @@
Назва | Додати посилання на опитування
Учасники | Користувач, система
Передумови | Користувач авторизований у системі
Результат | Нове посилання на опитування
Виключні ситуації | 001.005 Користувач не ідентифікований
| 001.006 Запитане опитування не існує
| 001.008 Користувач не є власником опитування
Основний сценарій | 1. Користувач натискає кнопку створення посилання на опитування
| 2. Система виводить налаштування для нового посилання (можливі 001.005, 001.006, 001.008)
| 3. Користувач вводить налаштування для нового посилання
| 4. Користувач натискає на кнопку створення посилання
| 5. Система створює нове посилання

View File

@@ -0,0 +1,12 @@
Назва | Видалити посилання на опитування
Учасники | Користувач, система
Передумови | Користувач авторизований у системі
Результат | Видалення посилання на опитування
Виключні ситуації | 001.005 Користувач не ідентифікований
| 001.006 Запитане опитування не існує
| 001.008 Користувач не є власником опитування
| 001.009 Запитане посилання на існує
Основний сценарій | 1. Користувач натискає кнопку видалення посилання
| 2. Система виводить кнопку підтвердження видалення посилання
| 3. Користувач натискає на кнопку підтвердження видалення посилання
| 4. Система видаляє посилання (можливі 001.005, 001.006, 001.008, 001.009)

View File

@@ -0,0 +1,13 @@
Назва | Змінити властивості посилання на опитування
Учасники | Користувач, система
Передумови | Користувач авторизований у системі
Результат | Зміна властивостей посилання на опитування
Виключні ситуації | 001.005 Користувач не ідентифікований
| 001.006 Запитане опитування не існує
| 001.008 Користувач не є власником опитування
| 001.009 Запитане посилання на існує
Основний сценарій | 1. Користувач натискає кнопку редагування властивостей посилання
| 2. Система виводить налаштування для обраного посилання (можливі 001.005, 001.006, 001.008, 001.009)
| 3. Користувач вводить юажані зміни властивостей посилання
| 4. Користувач натискає на кнопку збереження властиностей посилання
| 5. Система змінює властивості посилання