/
Codename-Nik
/
WebApp
Обзор
Документация
Войти
/
Codename-Nik
/
WebApp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
frontend/src/stores/projects.ts
66 строк
2 KB
Nikolay Pokhodnya
first commit
03 ноя 2025, 19:47
03 ноя 2025, 19:47
a9fbdee
Код
Авторство
О чём код?
import { defineStore } from 'pinia' import { ref } from 'vue' import api from '@/utils/axios' import type { Project, ProjectCreateData } from '@/types/projects' export const useProjectsStore = defineStore('projects', () => { const projects = ref<Project[]>([]) const currentProject = ref<Project | null>(null) const isLoading = ref(false) const error = ref<string | null>(null) const fetchProjects = async () => { isLoading.value = true error.value = null try { const response = await api.get('/projects/') projects.value = response.data.results || response.data return projects.value } catch (err: any) { error.value = err.response?.data?.detail || 'Failed to fetch projects' throw err } finally { isLoading.value = false } } const createProject = async (projectData: ProjectCreateData) => { isLoading.value = true error.value = null try { const response = await api.post('/projects/', projectData) projects.value.push(response.data) return response.data } catch (err: any) { error.value = err.response?.data || 'Failed to create project' throw err } finally { isLoading.value = false } } const fetchProject = async (id: number) => { isLoading.value = true error.value = null try { const response = await api.get(`/projects/${id}/`) currentProject.value = response.data return currentProject.value } catch (err: any) { error.value = err.response?.data?.detail || 'Failed to fetch project' throw err } finally { isLoading.value = false } } return { projects, currentProject, isLoading, error, fetchProjects, createProject, fetchProject } })