/
itp_practice
/
itp_frontend
Обзор
Документация
Войти
/
itp_practice
/
itp_frontend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
src/stores/base.js
63 строки
2 KB
vivanenko
refactoring to stores
21 май 2025, 19:55
21 май 2025, 19:55
4c2eb28
Код
Авторство
О чём код?
import { defineStore } from 'pinia'; import axios from 'axios'; import { getApiUrl } from '@/config'; export const createBaseStore = (name, endpoint) => { return { state: () => ({ items: [], meta: { current_page: 1, per_page: 15, total: 0, last_page: 1 }, loading: false, error: null }), actions: { async fetchItems(page = 1) { this.loading = true; this.error = null; try { const token = localStorage.getItem('token'); const response = await axios.get(`${getApiUrl()}${endpoint}?page=${page}`, { headers: { 'Authorization': `Bearer ${token}`, 'Accept': 'application/json' } }); this.items = response.data.data; this.meta = response.data.meta; } catch (error) { this.error = error.response?.data?.message || 'An error occurred'; console.error(`Error fetching ${name}:`, error); } finally { this.loading = false; } }, async deleteItem(id) { try { const token = localStorage.getItem('token'); await axios.delete(`${getApiUrl()}${endpoint}/${id}`, { headers: { 'Authorization': `Bearer ${token}`, 'Accept': 'application/json' } }); await this.fetchItems(this.meta.current_page); return true; } catch (error) { this.error = error.response?.data?.message || 'An error occurred'; console.error(`Error deleting ${name}:`, error); return false; } } } }; };