En el mapa curricular editar los nombres de las líneas curriculares fix #57
This commit is contained in:
@@ -243,3 +243,52 @@ export async function asignaturas_update(
|
||||
throwIfError(error)
|
||||
return requireData(data, 'No se pudo actualizar la asignatura.')
|
||||
}
|
||||
|
||||
// Insertar una nueva línea
|
||||
export async function lineas_insert(linea: {
|
||||
nombre: string
|
||||
plan_estudio_id: string
|
||||
orden: number
|
||||
area?: string
|
||||
}) {
|
||||
const supabase = supabaseBrowser()
|
||||
const { data, error } = await supabase
|
||||
.from('lineas_plan') // Asegúrate que el nombre de la tabla sea correcto
|
||||
.insert([linea])
|
||||
.select()
|
||||
.single()
|
||||
|
||||
if (error) throw error
|
||||
return data
|
||||
}
|
||||
|
||||
// Actualizar una línea existente
|
||||
export async function lineas_update(
|
||||
lineaId: string,
|
||||
patch: { nombre?: string; orden?: number; area?: string },
|
||||
) {
|
||||
const supabase = supabaseBrowser()
|
||||
const { data, error } = await supabase
|
||||
.from('lineas_plan')
|
||||
.update(patch)
|
||||
.eq('id', lineaId)
|
||||
.select()
|
||||
.single()
|
||||
|
||||
if (error) throw error
|
||||
return data
|
||||
}
|
||||
|
||||
export async function lineas_delete(lineaId: string) {
|
||||
const supabase = supabaseBrowser()
|
||||
|
||||
// Nota: Si configuraste "ON DELETE SET NULL" en tu base de datos,
|
||||
// las asignaturas se desvincularán solas. Si no, Supabase podría dar error.
|
||||
const { error } = await supabase
|
||||
.from('lineas_plan')
|
||||
.delete()
|
||||
.eq('id', lineaId)
|
||||
|
||||
if (error) throw error
|
||||
return lineaId
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import {
|
||||
plans_update_fields,
|
||||
plans_update_map,
|
||||
} from '../api/plans.api'
|
||||
import { lineas_delete } from '../api/subjects.api'
|
||||
import { qk } from '../query/keys'
|
||||
|
||||
import type {
|
||||
@@ -257,3 +258,15 @@ export function useGeneratePlanDocumento() {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export function useDeleteLinea() {
|
||||
const qc = useQueryClient()
|
||||
return useMutation({
|
||||
mutationFn: lineas_delete,
|
||||
onSuccess: (idEliminado) => {
|
||||
// Invalidamos para que las materias y líneas se refresquen
|
||||
qc.invalidateQueries({ queryKey: ['plan_lineas'] })
|
||||
qc.invalidateQueries({ queryKey: ['plan_asignaturas'] })
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
|
||||
import {
|
||||
ai_generate_subject,
|
||||
asignaturas_update,
|
||||
lineas_insert,
|
||||
lineas_update,
|
||||
subjects_bibliografia_list,
|
||||
subjects_clone_from_existing,
|
||||
subjects_create_manual,
|
||||
@@ -222,3 +224,28 @@ export function useUpdateAsignatura() {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export function useCreateLinea() {
|
||||
const qc = useQueryClient()
|
||||
return useMutation({
|
||||
mutationFn: lineas_insert,
|
||||
onSuccess: (nuevaLinea) => {
|
||||
qc.invalidateQueries({
|
||||
queryKey: ['plan_lineas', nuevaLinea.plan_estudio_id],
|
||||
})
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export function useUpdateLinea() {
|
||||
const qc = useQueryClient()
|
||||
return useMutation({
|
||||
mutationFn: (vars: { lineaId: string; patch: any }) =>
|
||||
lineas_update(vars.lineaId, vars.patch),
|
||||
onSuccess: (updated) => {
|
||||
qc.invalidateQueries({
|
||||
queryKey: ['plan_lineas', updated.plan_estudio_id],
|
||||
})
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user