const router = require('express').Router(); const { getSupabaseClient } = require('./supabaseClient'); // Получить все голоса по инициативе router.get('/votes/:initiative_id', async (req, res) => { const supabase = getSupabaseClient(); const { initiative_id } = req.params; const { data, error } = await supabase.from('votes').select('*').eq('initiative_id', initiative_id); if (error) return res.status(400).json({ error: error.message }); res.json(data); }); // Получить голос пользователя по инициативе router.get('/votes/:initiative_id/:user_id', async (req, res) => { const supabase = getSupabaseClient(); const { initiative_id, user_id } = req.params; const { data, error } = await supabase.from('votes').select('*').eq('initiative_id', initiative_id).eq('user_id', user_id).single(); if (error) return res.status(400).json({ error: error.message }); res.json(data); }); // Получить все голоса по инициативе (через query) router.get('/votes', async (req, res) => { const supabase = getSupabaseClient(); const { initiative_id } = req.query; if (!initiative_id) return res.status(400).json({ error: 'initiative_id required' }); const { data, error } = await supabase.from('votes').select('*').eq('initiative_id', initiative_id); if (error) return res.status(400).json({ error: error.message }); res.json(data); }); // Проголосовать (создать или обновить голос) router.post('/votes', async (req, res) => { const supabase = getSupabaseClient(); const { initiative_id, user_id, vote_type } = req.body; // upsert: если голос уже есть, обновить, иначе создать const { data, error } = await supabase.from('votes').upsert([ { initiative_id, user_id, vote_type } ], { onConflict: ['initiative_id', 'user_id'] }).select().single(); if (error) return res.status(400).json({ error: error.message }); res.json(data); }); module.exports = router;