commit aa5c8fb69f5e7fefcc1b402f1a2fd906c64a911c Author: trueold89 Date: Fri Nov 1 01:27:47 2024 +0300 Backend архитектура - Структура проекта - Модели - Репозитории - Утилиты diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..17a304b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.obsidian +.trash diff --git a/Архитектура/Модели.md b/Архитектура/Модели.md new file mode 100644 index 0000000..1e9086c --- /dev/null +++ b/Архитектура/Модели.md @@ -0,0 +1,82 @@ +# Модели +*** +> Описание структур данных для BackEnd +## Виджет (Абстрактный) +--- +>[!Виджет] +>Абстрактный класс, описывающий стандартной поведение модели виджета +### Поля +--- +- **Тип** - тип реализации абстракции | ENUM +- **Id** - Идентификатор в базе данных | Целое число +- **Имя** - имя виджета | Строка +- **Описание** - описание виджета | Строка +### Методы +--- +- **Публичный | В формат БД | Строка** - Преобразовывает модель в формат, необходимый для записи в базу данных +- **Публичный | В Json | Строка** - Преобразовывает модель в *.json* +## Сайт +--- +>[!Сайт] +>Реализация абстрактного класса виджета для описания сайтов ORUDO +### Поля +--- +- **Ссылка** - Ссылка на сайт | Строка +- **Редирект** - Должна ли быть кнопка для перехода на сайт | Булево +- **Изображение** - Ссылка на изображение с логотипом сайта | Строка +### Yaml представление +--- +```yaml +Sites: + id: + name: "" + desk: "" + link: "" + image: "" + redirect: True | False +``` +### Json представление +--- +```json +{ + id: "", + name: "", + desk: "", + link: "", + image: "", + redirect: True | False +} +``` + +## Соц. сеть +--- +>[!Соц. сеть] +>Реализация абстрактного класса виджета для описания внешних ресурсов ORUDO +### Поля +--- +- **Ссылка** - Ссылка на сайт | Строка +- **Изображение** - Ссылка на изображение с аватаром ресурса | Строка +- **Иконка кнопки** - Ссылка на изображение с иконкой ресурса | Строка +### Yaml представление +--- +```yaml +Social: + id: + name: "" + desk: "" + link: "" + image: "" + icon: "" +``` +### Json представление +--- +```json +{ + id: "", + name: "", + desk: "", + link: "", + image: "", + icon: "" +} +``` \ No newline at end of file diff --git a/Архитектура/Репозитории.md b/Архитектура/Репозитории.md new file mode 100644 index 0000000..bd5582b --- /dev/null +++ b/Архитектура/Репозитории.md @@ -0,0 +1,24 @@ +# Репозитории +*** +> Модули для доступа к различным элементам базы данных +## Репозиторий (Абстрактный) +--- +>[!Репозиторий] +>Абстрактный класс, описывающий основные методы для репозитория +### Строки +--- +- **Префикс** - Префикс базы данных *(Приватный | инициализируется перегрузкой в дочернем классе)* +### Методы +--- +- **Приватный | Добавить виджет | Целое число | Абстрактный** - Добавляет виджет в базу данных, возвращает id +- **Приватный | Получить виджет | Виджет | Абстрактный** - Возвращает данные из базы данных по id +- **Публичный | Получить размер репозитория | Целое число | Абстрактный** - Возвращает размер репозитория +## Репозиторий сайтов +--- +>[!Репозиторий сайтов] +>Реализации абстрактного класса репозитория для управления сайтами + +## Репозиторий соц. сетей +--- +>[!Репозиторий сайтов] +>Реализации абстрактного класса репозитория для управления соц. сетями diff --git a/Архитектура/Структура проекта.md b/Архитектура/Структура проекта.md new file mode 100644 index 0000000..6a4e16b --- /dev/null +++ b/Архитектура/Структура проекта.md @@ -0,0 +1,32 @@ +# Структура +*** +>Описание модулей различных частей проекта, их взаимосвязи и назначения +## Общие компоненты +--- +- **Nginx** - Веб-сервер для FrontEnd части сайта / доступ к хранилищу с изображениями / обратное прокси, связывающее все части сайта +- **FastAPI** - BackEnd часть сайта, программный интерфейс для получения информации для виджетов на сайте +- **Хранилище** - Хранилище с динамическими ассетами для сайта (иконки виджетов, бэкграунд, логотипы и т.п.) +- **React сайт** - FrontEnd часть, с пользовательским интерфейсом +### Связь компонентов +--- +**Диаграмма связей компонентов** +![[connections.png]] +## Структура BackEnd +--- +- **[[Утилиты]]** *(Модули для дополнительных ф-ий)* + - [[Утилиты#Парсер YAML|Парсер YAML]] + - [[Утилиты#Redis|Управление ДБ Redis]] + - [[Утилиты#Статические ф-ии|Статические ф-ии]] +- **[[Репозитории]]** *(Модули для получения доступа к данным БД)* + - [[Репозитории#Репозиторий сайтов|Сайты]] + - [[Репозитории#Репозиторий соц. сетей|Соц. сети]] +- **Контроллеры** *(Модули управления программным интерфейсом)* + - Сайты + - Соц. сети +- **[[Модели]]** *(Структуры данных)* + - [[Модели#Виджет (Абстрактный)|Виджет (Абстракция)]] + - [[Модели#Сайт|Сайт]] + - [[Модели#Соц. сеть|Соц. сеть]] +## Структура FrontEnd +--- +`*требуется составить*` \ No newline at end of file diff --git a/Архитектура/Утилиты.md b/Архитектура/Утилиты.md new file mode 100644 index 0000000..25f5ea4 --- /dev/null +++ b/Архитектура/Утилиты.md @@ -0,0 +1,40 @@ +# Утилиты BackEnd +*** +>Прикладные модули необходимые для различных дополнительных функций +## Парсер YAML +--- +>[!YAML Парсер] +>Модуль, который сериализует изначальный файл с описанием виджетов в разметке YAML в нативные объекты Python +### Поля +--- +- **Путь к файлу** - Путь к .yaml файлу *( Приватный | Аргумент конструктора)* +- **Список агрументов** - Список аргументов виджетов *(Приватный | инициализируется методом преобразования)* +### Методы +--- +- **Приватный | Загрузить файл | Строка** - Загружает файл с описанием виджетов в формате YAML и возвращает его в виде строки +- **Приватный | Преобразовать в список | None** - Преобразовывает загруженный файл в нативный Python список +- **Публичный | Создать объект | Widget** - Принимает в качестве аргументов набор параметров виджета и создаёт на их основе объект этого виджета в зависимости от типа *(сайт / соц. сеть)* +- **Публичный, магический, перезапись | len | int** - Возвращает кол-во виджетов полученных из файла при преобразовании + +## Redis +--- +>[!Redis] +>Утилита управления базой данных по протоколу Redis +### Поля +--- +- **Хост Redis** - Адрес нахождения базы данных Redis *(Приватный | Аргумент конструктора)* +### Методы +--- +- **Публичный | Получить поле | Строка** - Получает поле из БД[^1] по id +- **Публичный | Записать поле | Целое число** - Записывает значение поля в БД[^1], возвращает id созданного поля +- **Публичный | Удалить поле| None** - Удаляет значение поля из БД[^1] +- **Публичный | Очистка | None** - Обнуляет БД[^1] + +[^1]: База данных +## Статические ф-ии +--- +>[!Статические функции] +>Функции, которые не относятся к определенному модулю +> + +- **Инциализация БД** - Отчищает базу данных, и после заполняет её модулями, полученными из парсера YAML \ No newline at end of file diff --git a/Вложения/connections.drawio b/Вложения/connections.drawio new file mode 100644 index 0000000..4425461 --- /dev/null +++ b/Вложения/connections.drawio @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Вложения/connections.png b/Вложения/connections.png new file mode 100644 index 0000000..5e853df Binary files /dev/null and b/Вложения/connections.png differ diff --git a/Дизайн/Дизайн-система.md b/Дизайн/Дизайн-система.md new file mode 100644 index 0000000..f02d075 --- /dev/null +++ b/Дизайн/Дизайн-система.md @@ -0,0 +1,3 @@ +# Дизайн-система [ORUDO.RU](https://orudo.ru) +*** +`тут будет описание дизайн-системы сайта` \ No newline at end of file