Extract duplicate API path logic into helper functions in conformance and files stores
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,24 @@ import Swal from 'sweetalert2';
|
||||
import { uploadFailedFirst, uploadFailedSecond, uploadloader, uploadSuccess, deleteSuccess } from '@/module/alertModal.js';
|
||||
import { useLoadingStore } from '@/stores/loading';
|
||||
|
||||
/** Map of file type to API path segment. */
|
||||
const FILE_TYPE_PATHS = {
|
||||
'log': 'logs',
|
||||
'filter': 'filters',
|
||||
'log-check': 'log-checks',
|
||||
'filter-check': 'filter-checks',
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the API base path for a file type and ID.
|
||||
* @param {string} type - The file type.
|
||||
* @param {number} id - The file ID.
|
||||
* @returns {string} The API base path.
|
||||
*/
|
||||
function getFileApiBase(type, id) {
|
||||
return `/api/${FILE_TYPE_PATHS[type]}/${id}`;
|
||||
}
|
||||
|
||||
/** Pinia store for file CRUD operations and upload workflow. */
|
||||
export const useFilesStore = defineStore('filesStore', {
|
||||
state: () => ({
|
||||
@@ -205,25 +223,9 @@ export const useFilesStore = defineStore('filesStore', {
|
||||
fileName = this.uploadFileName;
|
||||
}
|
||||
|
||||
let api;
|
||||
const data = {"name": fileName};
|
||||
|
||||
switch (type) {
|
||||
case 'log':
|
||||
api = `/api/logs/${id}/name`;
|
||||
break;
|
||||
case 'filter':
|
||||
api = `/api/filters/${id}/name`;
|
||||
break;
|
||||
case 'log-check':
|
||||
api = `/api/log-checks/${id}/name`;
|
||||
break;
|
||||
case 'filter-check':
|
||||
api = `/api/filter-checks/${id}/name`;
|
||||
break;
|
||||
}
|
||||
try {
|
||||
await apiClient.put(api, data);
|
||||
await apiClient.put(`${getFileApiBase(type, id)}/name`, data);
|
||||
this.uploadFileName = null;
|
||||
await this.fetchAllFiles();
|
||||
} catch(error) {
|
||||
@@ -236,24 +238,8 @@ export const useFilesStore = defineStore('filesStore', {
|
||||
* @param {number} id - The file ID.
|
||||
*/
|
||||
async getDependents(type, id) {
|
||||
let api;
|
||||
|
||||
switch (type) {
|
||||
case 'log':
|
||||
api = `/api/logs/${id}/dependents`;
|
||||
break;
|
||||
case 'filter':
|
||||
api = `/api/filters/${id}/dependents`;
|
||||
break;
|
||||
case 'log-check':
|
||||
api = `/api/log-checks/${id}/dependents`;
|
||||
break;
|
||||
case 'filter-check':
|
||||
api = `/api/filter-checks/${id}/dependents`;
|
||||
break;
|
||||
}
|
||||
try {
|
||||
const response = await apiClient.get(api);
|
||||
const response = await apiClient.get(`${getFileApiBase(type, id)}/dependents`);
|
||||
this.allDependentsData = response.data;
|
||||
} catch(error) {
|
||||
apiError(error, 'Failed to get Dependents of the files.');
|
||||
@@ -265,30 +251,14 @@ export const useFilesStore = defineStore('filesStore', {
|
||||
* @param {number} id - The file ID.
|
||||
*/
|
||||
async deleteFile(type, id) {
|
||||
let api;
|
||||
|
||||
if(id === null || id === undefined || isNaN(id)) {
|
||||
console.error('Delete File API Error: invalid id');
|
||||
return;
|
||||
};
|
||||
const loading = useLoadingStore();
|
||||
loading.isLoading = true;
|
||||
switch (type) {
|
||||
case 'log':
|
||||
api = `/api/logs/${id}`;
|
||||
break;
|
||||
case 'filter':
|
||||
api = `/api/filters/${id}`;
|
||||
break;
|
||||
case 'log-check':
|
||||
api = `/api/log-checks/${id}`;
|
||||
break;
|
||||
case 'filter-check':
|
||||
api = `/api/filter-checks/${id}`;
|
||||
break;
|
||||
}
|
||||
try {
|
||||
await apiClient.delete(api);
|
||||
await apiClient.delete(getFileApiBase(type, id));
|
||||
await this.fetchAllFiles();
|
||||
await deleteSuccess();
|
||||
} catch(error) {
|
||||
@@ -322,26 +292,9 @@ export const useFilesStore = defineStore('filesStore', {
|
||||
* @param {string} fileName - The file name.
|
||||
*/
|
||||
async downloadFileCSV(type, id, fileName) {
|
||||
let api;
|
||||
|
||||
switch (type) {
|
||||
case 'log':
|
||||
api = `/api/logs/${id}/csv`;
|
||||
break;
|
||||
case 'filter':
|
||||
api = `/api/filters/${id}/csv`;
|
||||
break;
|
||||
// case 'log-check':
|
||||
// api = `/api/log-checks/${id}/csv`;
|
||||
// break;
|
||||
// case 'filter-check':
|
||||
// api = `/api/filter-checks/${id}/csv`;
|
||||
// break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
if (type !== 'log' && type !== 'filter') return;
|
||||
try {
|
||||
const response = await apiClient.get(api);
|
||||
const response = await apiClient.get(`${getFileApiBase(type, id)}/csv`);
|
||||
const csvData = response.data;
|
||||
const blob = new Blob([csvData], { type: 'text/csv' });
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
|
||||
Reference in New Issue
Block a user