import { supabaseService } from '@/hooks/supabaseService'; export const useTeams = () => { // 获取团队列表 const fetchTeams = async (params = {}) => { try { const result = await supabaseService.select('teams', { select: ` id, name, description, attributes, created_at, updated_at, avatar_url, team_membership!inner ( id, user_id, role, is_creator, users ( id, email ) ) `, filter: { deleted_at: { is: null }, ...(params.search ? { name: { ilike: `%${params.search}%` } } : {}) }, order: { column: params.field || 'created_at', ascending: params.order === 'ascend' }, page: params.current || 1, pageSize: params.pageSize || 10 }); return result; } catch (error) { console.error('获取团队列表失败:', error); throw error; } }; // 创建团队前检查类型是否已存在 const checkTeamTypeExists = async (type) => { try { const {data} = await supabaseService.select('teams', { filter: { deleted_at: { is: null }, 'attributes->>type': { eq: type } } }); return data.length > 0; } catch (error) { console.error('检查团队类型失败:', error); throw error; } }; // 创建团队 const createTeam = async (values) => { try { if (values.type) { const result = await checkTeamTypeExists(values.type); if (result) { throw new Error(`团队类型 "${values.type}" 已存在,请使用其他类型名称`); } } const newTeam = await supabaseService.insert('teams', { name: values.name, description: values.description, attributes: { type: values.type } }); // 创建团队成员关系 await supabaseService.insert('team_membership', { team_id: newTeam[0].id, user_id: values.userId, role: 'OWNER', is_creator: true, id: newTeam[0].id }); return newTeam[0]; } catch (error) { console.error('创建团队失败:', error); throw error; } }; // 更新团队 const updateTeam = async (id, values) => { try { const result = await supabaseService.update('teams', { id }, values ); return result[0]; } catch (error) { console.error('更新团队失败:', error); throw error; } }; // 删除团队 const deleteTeam = async (id) => { try { await supabaseService.delete('teams', { id }); } catch (error) { console.error('删除团队失败:', error); throw error; } }; return { fetchTeams, createTeam, updateTeam, deleteTeam, }; };