'use server'; import { getSessionData } from '@/lib/session/session-storage'; import { createStorageProvider } from '@/lib/storage/storage.factory'; import { StorageProvider } from '@/lib/storage/storage.interface'; import { TypedResult } from '@/utils/types/results'; const storage: StorageProvider = createStorageProvider(); export const getPublicUrl = async ( key: string, storageProvider?: StorageProvider ): Promise> => { if (!storageProvider) { storageProvider = storage; } return await storageProvider.get(key); }; export const checkExists = async ( key: string, storageProvider?: StorageProvider ): Promise => { if (!storageProvider) { storageProvider = storage; } const session = await getSessionData(); if (!session || !session?.user || session?.user.role !== 'admin') { throw new Error('Unauthorized: Only admin users can delete articles.'); } return await storageProvider.exists(key); }; export const getPutUrl = async ( key: string, contentType: string, storageProvider?: StorageProvider ): Promise> => { if (!storageProvider) { storageProvider = storage; } const session = await getSessionData(); if (!session || !session?.user || session?.user.role !== 'admin') { throw new Error('Unauthorized: Only admin users can delete articles.'); } return await storageProvider.put(key, contentType); }; export const deleteByKey = async ( key: string, storageProvider?: StorageProvider ): Promise> => { if (!storageProvider) { storageProvider = storage; } const session = await getSessionData(); if (!session || !session?.user || session?.user.role !== 'admin') { throw new Error('Unauthorized: Only admin users can delete articles.'); } return await storageProvider.delete(key); };