Optimisation DB et Migration
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { useEffect, useState, useCallback, useRef } from 'react'
|
||||
import { supabase } from '@/lib/supabase'
|
||||
import { toast } from 'sonner'
|
||||
|
||||
export function useSkillLevels() {
|
||||
const [levels, setLevels] = useState({})
|
||||
@@ -40,19 +41,22 @@ export function useSkillLevels() {
|
||||
const oldLevel = existing?.level
|
||||
|
||||
if (existing) {
|
||||
await supabase.from('skill_levels').update({ level: newLevel }).eq('id', existing.id)
|
||||
const { error } = await supabase.from('skill_levels').update({ level: newLevel }).eq('id', existing.id)
|
||||
if (error) { toast.error(error.message); return }
|
||||
} else {
|
||||
await supabase.from('skill_levels').insert({ member_id: memberId, skill_id: skillId, level: newLevel })
|
||||
const { error } = await supabase.from('skill_levels').insert({ member_id: memberId, skill_id: skillId, level: newLevel })
|
||||
if (error) { toast.error(error.message); return }
|
||||
}
|
||||
|
||||
if (oldLevel !== newLevel && changedBy) {
|
||||
await supabase.from('skill_history').insert({
|
||||
const { error } = await supabase.from('skill_history').insert({
|
||||
member_id: memberId,
|
||||
skill_id: skillId,
|
||||
old_level: oldLevel || null,
|
||||
new_level: newLevel,
|
||||
changed_by: changedBy,
|
||||
})
|
||||
if (error) { toast.error(error.message); return }
|
||||
}
|
||||
|
||||
await fetch()
|
||||
|
||||
@@ -58,6 +58,8 @@ export function AcceptInvite() {
|
||||
}
|
||||
|
||||
await supabase.from('invitations').update({ accepted: true }).eq('token', token)
|
||||
.then()
|
||||
.catch(() => {})
|
||||
|
||||
toast.success('Compte créé ! Vous pouvez vous connecter.')
|
||||
navigate('/login')
|
||||
|
||||
@@ -25,7 +25,8 @@ export function Members() {
|
||||
}
|
||||
|
||||
async function updateMember() {
|
||||
await supabase.from('members').update({ full_name: editName }).eq('id', editMember.id)
|
||||
const { error } = await supabase.from('members').update({ full_name: editName }).eq('id', editMember.id)
|
||||
if (error) { toast.error(error.message); return }
|
||||
setEditMember(null)
|
||||
load()
|
||||
toast.success('Membre mis à jour')
|
||||
@@ -33,7 +34,8 @@ export function Members() {
|
||||
|
||||
async function deleteMember(id) {
|
||||
if (!confirm('Supprimer ce membre ?')) return
|
||||
await supabase.from('members').delete().eq('id', id)
|
||||
const { error } = await supabase.from('members').delete().eq('id', id)
|
||||
if (error) { toast.error(error.message); return }
|
||||
load()
|
||||
toast.success('Membre supprimé')
|
||||
}
|
||||
|
||||
@@ -22,9 +22,11 @@ export function Skills() {
|
||||
|
||||
async function saveCategory() {
|
||||
if (editCat) {
|
||||
await supabase.from('categories').update({ name: newCatName, color: newCatColor }).eq('id', editCat)
|
||||
const { error } = await supabase.from('categories').update({ name: newCatName, color: newCatColor }).eq('id', editCat)
|
||||
if (error) { toast.error(error.message); return }
|
||||
} else {
|
||||
await supabase.from('categories').insert({ name: newCatName, color: newCatColor })
|
||||
const { error } = await supabase.from('categories').insert({ name: newCatName, color: newCatColor })
|
||||
if (error) { toast.error(error.message); return }
|
||||
}
|
||||
setCatDialogOpen(false)
|
||||
setEditCat(null)
|
||||
@@ -40,7 +42,8 @@ export function Skills() {
|
||||
}
|
||||
|
||||
async function saveSkill() {
|
||||
await supabase.from('skills').insert({ name: newSkill.name, category_id: newSkill.category_id })
|
||||
const { error } = await supabase.from('skills').insert({ name: newSkill.name, category_id: newSkill.category_id })
|
||||
if (error) { toast.error(error.message); return }
|
||||
setSkillDialogOpen(false)
|
||||
setNewSkill({ name: '', category_id: '' })
|
||||
refetchSkills()
|
||||
|
||||
Reference in New Issue
Block a user