import { databases } from '@/lib/appwrite'; import { Query } from '@/lib/appwrite'; const API_BASE_URL = ''; export interface ProdutoData { 'preco-original'?: number; 'preco-atual'?: number; 'catalogo-produto-id'?: string; 'empresa-id'?: string; empresas?: string; quantidade?: number; [key: string]: any; } export interface ApiResponse { success: boolean; data?: T; error?: string; details?: any; documents?: T[]; total?: number; } export interface PaginatedResponse extends ApiResponse { documents: T[]; total: number; } class ProdutoService { private async makeRequest(endpoint: string, options: RequestInit = {}): Promise> { try { const response = await fetch(`${API_BASE_URL}${endpoint}`, { headers: { 'Content-Type': 'application/json', ...(options.headers || {}) }, ...options }); return await response.json(); } catch { return { success: false, error: 'Erro de conexão com o servidor' }; } } async listar(page = 1, limit = 10): Promise> { try { const databaseId = process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!; const collectionId = process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_PRODUTOS_ID!; const offset = (page - 1) * limit; const response = await databases.listDocuments(databaseId, collectionId, [ Query.limit(limit), Query.offset(offset) ]); return { success: true, documents: response.documents, total: response.total }; } catch { return { success: true, documents: [], total: 0 }; } } async listarPorEmpresa(_empresaId: string, page = 1, limit = 10, _search = ''): Promise> { return this.listar(page, limit); } async criar(data: ProdutoData): Promise { return this.makeRequest('/api/produtos', { method: 'POST', body: JSON.stringify({ documentId: 'unique()', data }) }); } async atualizar(id: string, data: ProdutoData): Promise { return this.makeRequest(`/api/produtos/${id}`, { method: 'PATCH', body: JSON.stringify({ data }) }); } async deletar(id: string): Promise { return this.makeRequest(`/api/produtos/${id}`, { method: 'DELETE' }); } } export const produtoService = new ProdutoService();