This commit is contained in:
2024-05-14 11:39:33 +03:00
commit 2762ac794a
26 changed files with 1506 additions and 0 deletions

13
FRONTEND/API/ARTICLE.md Normal file
View File

@@ -0,0 +1,13 @@
Код представляет собой модуль для работы с API проекта, который использует константу `API_BASE_URL` из файла `constants` и пути API из файла `openapi.gen` для отправки запросов на сервер и обработки ответов.
**Импорт константы API_BASE_URL из файла constants**:
```
import { API_BASE_URL } from '~/constants'
```
**Импорт путей API из файла openapi.gen**:
```
import type { paths } from '~/openapi.gen'
```
**Типы ответов на запросы к API**
**Функции для отправки запросов к API**
**Функции для добавления и удаления статьи из избранного**

28
FRONTEND/API/AUTH.md Normal file
View File

@@ -0,0 +1,28 @@
**Импорт константы API_BASE_URL из файла constants**:
```
import { API_BASE_URL } from '~/constants'
```
**Импорт путей API из файла openapi.gen**:
```
import type { paths } from '~/openapi.gen'
```
**Типы запроса и ответа для аутентификации пользователя**:
```
type LoginUserRequest =
paths['/users/login']['post']['requestBody']['content']['application/json'];
type LoginUserResponse =
paths['/users/login']['post']['responses']['200']['content']['application/json'];
```
**Функция для отправки запроса на аутентификацию пользователя**:
```
export const login = (user: LoginUserRequest) => {
return $fetch<LoginUserResponse>(`${API_BASE_URL}/users/login`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: user, // Передаем данные пользователя в теле запроса
});
};
```

10
FRONTEND/API/TAG.md Normal file
View File

@@ -0,0 +1,10 @@
**Импорт путей API из файла openapi.gen**:
```
import type { paths } from '~/openapi.gen'
```
**Тип ответа на запрос получения тегов**:
```
export type GetTagsResponse =
paths['/tags']['get']['responses']['200']['content']['application/json'];
```
Кода определяется тип данных `GetTagsResponse`, который представляет собой ответ на запрос получения тегов из вашего API. Тип строится на основе структуры определенного пути `/tags` и кода состояния ответа 200 (успешный запрос) с типом содержимого `application/json`.

0
FRONTEND/API/TEAM.md Normal file
View File

34
FRONTEND/API/TENANT.md Normal file
View File

@@ -0,0 +1,34 @@
**Импорт константы API_BASE_URL из файла constants**:
```
import { API_BASE_URL } from '~/constants'
```
**Импорт путей API из файла openapi.gen**:
```
import type { paths } from '~/openapi.gen'
```
**Типы ответов на запросы к API для получения арендаторов и арендатора по ID**:
```
export type GetTenantsResponse =
paths['/tenants']['get']['responses']['200']['content']['application/json'];
export type GetTenantResponse =
paths['/tenants/{id}']['get']['responses']['200']['content']['application/json'];
```
**Типы запросов для создания и обновления арендатора**:
```
type CreateTenantRequest =
paths['/tenants']['post']['requestBody']['content']['application/json'];
type UpdateTenantRequest =
paths['/tenants/{id}']['put']['requestBody']['content']['application/json'];
```
**Типы ответа при создании и обновлении арендатора**:
```
export type CreateTenantResponse =
paths['/tenants']['post']['responses']['201']['content']['application/json'];
export type UpdateTenantResponse =
paths['/tenants/{id}']['put']['responses']['200']['content']['application/json'];
```
**Функции для работы с арендаторами и их контактами**:
- `createTenant`: Функция для создания нового арендатора.
- `updateTenant`: Функция для обновления данных арендатора.
- `removeTenant`: Функция для удаления арендатора.
- `createTenantContact`: Функция для добавления контакта к арендатору.

32
FRONTEND/API/TODO.md Normal file
View File

@@ -0,0 +1,32 @@
**Импорт константы API_BASE_URL из файла constants**:
```
import { API_BASE_URL } from '~/constants'
```
**Импорт путей API из файла openapi.gen**:
```
import type { paths } from '~/openapi.gen'
```
**Типы ответов на запросы к API для получения задач и комментариев**:
```
export type GetTodosResponse =
paths['/todos']['get']['responses']['200']['content']['application/json'];
export type GetTodoResponse =
paths['/todos/{id}']['get']['responses']['200']['content']['application/json'];
export type GetTodoCommentsResponse =
paths['/todos/{id}/comments']['get']['responses']['200']['content']['application/json'];
```
**Типы запросов для создания задачи и комментария к задаче**:
```
type CreateTodosRequest =
paths['/todos']['post']['requestBody']['content']['application/json'];
type CreateTodoCommentRequest =
paths['/todos/{id}/comments']['post']['requestBody']['content']['application/json'];
```
**Функции для работы с задачами и их комментариями**:
- `createTodo`: Функция для создания новой задачи.
- `updateTodo`: Функция для обновления данных задачи.
- `removeTodo`: Функция для удаления задачи.
- `createTodoComment`: Функция для добавления комментария к задаче.
**Функции для работы с избранными задачами**:
- `addTodoToFavorites`: Функция для добавления задачи в избранное.
- `removeTodoFromFavorites`: Функция для удаления задачи из избранного.

32
FRONTEND/API/USER.md Normal file
View File

@@ -0,0 +1,32 @@
**Импорт константы API_BASE_URL из файла constants**:
```
import { API_BASE_URL } from '~/constants'
```
**Импорт путей API из файла openapi.gen**:
```
import type { paths } from '~/openapi.gen'
```
**Типы запросов и ответов для обновления и создания пользователя**:
```
type UserSetting =
paths['/user']['put']['requestBody']['content']['application/json'];
type UpdateUserResponse =
paths['/user']['put']['responses']['200']['content']['application/json'];
type CreateUserResponse =
paths['/users']['post']['responses']['201']['content']['application/json'];
```
**Функции для работы с пользователями**:
- `updateUser`: Функция для обновления данных пользователя.
- `createUser`: Функция для создания нового пользователя.
- `getUser`: Функция для получения данных пользователя.
**Типы и функции для подписки и отписки от пользователя**:
```
export type FollowUserResponse =
paths['/profiles/{username}/follow']['post']['responses']['200']['content']['application/json'];
export type UnfollowUserResponse =
paths['/profiles/{username}/follow']['delete']['responses']['200']['content']['application/json'];
```
**Функции для подписки и отписки от пользователя**:
- `followUser`: Функция для подписки на пользователя.
- `unfollowUser`: Функция для отписки от пользователя.

7
FRONTEND/CONSTANTS.TS.md Normal file
View File

@@ -0,0 +1,7 @@
Код представляет собой файл конфигурации для приложения, где определены несколько констант, включая название приложения (`APP_NAME`) и базовый URL для взаимодействия с API (`API_BASE_URL`):
1. **`export const APP_NAME = 'We.PRO';`**: Здесь определена константа `APP_NAME`, которая содержит название приложения. Это полезно, если вам нужно использовать название приложения в различных частях вашего приложения, таких как заголовки, мета-теги и т.д.
3. **`export const API_BASE_URL = 'https://fipi.pro/api';`**: Это текущее значение константы `API_BASE_URL`, которое указывает на базовый URL для взаимодействия с вашим API.
Эти константы могут быть использованы в приложении для обращения к API с помощью Axios или другой библиотеки HTTP.

14
FRONTEND/OPENAPI.YML.md Normal file
View File

@@ -0,0 +1,14 @@
1. **openapi: 3.0.1**: Это версия спецификации OpenAPI.
2. **info**: Здесь содержится информация о нашем API, такая как название, описание, контактная информация, лицензия и версия API.
3. **tags**: Теги используются для группировки различных эндпоинтов вашего API.
4. **servers**: Здесь указываются серверы, на которых размещено ваше API. В нашем случае, это `http://127.0.0.1:8001/api`.
5. **paths**: Здесь описываются пути к различным ресурсам вашего API, такие как CRUD операции для статей, комментариев, задач и других сущностей.
6. **components**: Здесь определены компоненты вашего API, такие как схемы данных (schemas), ответы (responses), тела запросов (requestBodies), параметры (parameters) и схемы безопасности (securitySchemes). Эти компоненты могут быть использованы в различных запросах и ответах вашего API.
В контексте проекта на Nuxt.js, мы можем использовать эту спецификацию OpenAPI для генерации типов TypeScript для взаимодействия с нашим API. Например, вы можете использовать инструменты, такие как Swagger Codegen, для автоматической генерации клиентских библиотек API на основе этой спецификации, что поможет вам упростить работу с вашим API внутри вашего приложения на Nuxt.js.

45
FRONTEND/STORE/AUTH.TS.md Normal file
View File

@@ -0,0 +1,45 @@
**Импорт функции defineStore из библиотеки pinia для создания хранилища**:
```
import { defineStore } from 'pinia'
```
**Импорт типа User из файла с типами '@/types'**:
```
import { User } from '@/types'
```
**Определение типа состояния для хранилища auth**:
```
type authState = {
currentUser: User | undefined;
};
```
В этом блоке определяется тип `authState`, который представляет состояние хранилища. `currentUser` может быть типа `User` или `undefined`.
**Начальное состояние хранилища**:
```
const defaultState: authState = {
currentUser: undefined,
};
```
Здесь устанавливается начальное состояние хранилища `authStore`, в котором `currentUser` равен `undefined`.
**Экспорт хранилища authStore с использованием defineStore**:
```
export const authStore = defineStore({
id: 'auth',
state: () => defaultState,
getters: {
isAuthenticated: (state) => state.currentUser !== undefined,
jwtToken: (state) => state.currentUser?.token,
},
actions: {
signIn(user: User) {
this.currentUser = user;
},
signOut() {
this.currentUser = undefined;
},
},
persist: true,
});
```
Здесь мы используем `defineStore` для создания хранилища `authStore` с определенными состоянием (`state`), геттерами (`getters`) для проверки аутентификации и получения токена, а также с действиями (`actions`) для входа и выхода пользователя. Флаг `persist: true` указывает, что состояние хранилища должно сохраняться между перезагрузками страницы.

50
FRONTEND/STORE/UI.TS.md Normal file
View File

@@ -0,0 +1,50 @@
**Импорт функции defineStore из библиотеки pinia для создания хранилища**:
```
import { defineStore } from 'pinia';
```
**Определение типа данных ConfirmationModalDataType**:
```
type ConfirmationModalDataType = {
text: string,
action: () => any
};
```
Здесь определяется тип данных `ConfirmationModalDataType`, который содержит текст модального окна и функцию действия при подтверждении.
**Определение типа состояния для хранилища ui**:
```
type uiState = {
confirmationModalStatus: boolean;
confirmationModalData: ConfirmationModalDataType | undefined;
};
```
В этом блоке определяется тип состояния `uiState` для хранилища. `confirmationModalStatus` указывает на состояние модального окна (открыто или закрыто), а `confirmationModalData` содержит данные для модального окна подтверждения.
**Начальное состояние хранилища**:
```
const defaultState: uiState = {
confirmationModalStatus: false,
confirmationModalData: undefined,
};
```
Здесь устанавливается начальное состояние хранилища `uiStore`, в котором модальное окно подтверждения изначально закрыто и данные для него не определены.
**Экспорт хранилища uiStore с использованием defineStore**:
```
export const uiStore = defineStore({
id: 'ui',
state: () => defaultState,
actions: {
openConfirmationModal(text: string, action: () => any) {
this.confirmationModalData = { text, action };
this.confirmationModalStatus = true;
},
closeConfirmationModal() {
this.confirmationModalData = undefined;
this.confirmationModalStatus = false;
},
},
persist: true,
});
```
Здесь мы используем `defineStore` для создания хранилища `uiStore` с определенным состоянием (`state`), действиями (`actions`) для открытия и закрытия модального окна подтверждения, а также флагом `persist: true`, чтобы сохранять состояние хранилища между перезагрузками страницы.

19
FRONTEND/TYPES.TS.md Normal file
View File

@@ -0,0 +1,19 @@
**Импорт типов компонентов из сгенерированного файла OpenAPI**:
```
openapi.gen import { components } from '~/openapi.gen'
```
**Определение пользовательских типов на основе схем OpenAPI**:
- `User`, `Article`, `ArticleComment` - типы данных, соответствующие схемам `User`, `Article`, `Comment` из OpenAPI.
- `Todo`, `TodoComment` - типы данных для задачи и комментария к задаче соответственно.
- `Tenant`, `TenantContact` - типы данных для арендаторов и контактов к арендаторам.
- `Team` - тип данных для команды.
**Определение типа состояния Формы (CREATE | UPDATE):**
```
// Тип состояния Формы (создвть | изменить)
export enum FormMode {
CREATE,
UPDATE
}
```