fix(students): actualizar query de estudiantes y alinear tags bson

Nuevo query de estudiantes renombra genre/branch/level/grade (sin sufijos),
alinear entity.go para que coincida con los alias reales de la consulta.
parent 2d716325
// Package students contiene la entidad, query SQL y reader de la colección "students".
package students
import "time"
// Student es la entidad de la colección "students".
type Student struct {
StudentID int `bson:"student_id"`
StudentCode *string `bson:"student_code"`
StudentInternalCode *string `bson:"student_internal_code"`
PaternalLastName *string `bson:"student_paternal_last_name"`
MaternalLastName *string `bson:"student_maternal_last_name"`
Name *string `bson:"student_name"`
DNI *string `bson:"student_dni"`
Birthday *time.Time `bson:"student_birthday"`
Email *string `bson:"student_email"`
GenreID *int `bson:"genre_id"`
Genre *string `bson:"genre"`
BranchID *int `bson:"branch_id"`
BranchName *string `bson:"branch"`
LevelID *int `bson:"level_id"`
LevelName *string `bson:"level"`
GradeID *int `bson:"grade_id"`
GradeName *string `bson:"grade"`
ClassroomAttendanceID *int `bson:"classroom_attendance_id"`
UpdatedAt time.Time `bson:"updated_at"`
RowHash string `bson:"row_hash,omitempty" json:"-"`
}
// SetUpdatedAt estampa la hora de sincronización.
func (s *Student) SetUpdatedAt(t time.Time) {
s.UpdatedAt = t
}
// SetRowHash guarda el hash de contenido usado para saltar upserts sin cambios.
func (s *Student) SetRowHash(h string) {
s.RowHash = h
}
package students
// Query es el SQL crudo de la tubería de estudiantes: junta estudiante + persona + matrícula + apertura (sede/nivel/grado).
const Query = `
SELECT e.estudiante_id as student_id,
e.estudiante_codigo as student_code,
e.estudiante_codigo_interno as student_internal_code,
public.to_camel_case(pp.persona_apellido_paterno) as student_paternal_last_name,
public.to_camel_case(pp.persona_apellido_materno) as student_maternal_last_name,
public.to_camel_case(pp.persona_nombre) as student_name,
pp.persona_numero_documento_identidad as student_dni,
pp.persona_fecha_nacimiento as student_birthday,
pp.persona_correo as student_email,
sexo.catalogo_siiaa_id as genre_id,
sexo.catalogo_siiaa_nombre as genre,
ac.sede_id as branch_id,
public.to_camel_case(se.sede_nombre) as branch,
ac.nivel_id as level_id,
public.to_camel_case(nivel.catalogo_siiaa_nombre) as level,
ac.grado_id as grade_id,
public.to_camel_case(grado.grado_sigla) as grade,
ma.aula_id_asiste as classroom_attendance_id
FROM matricula.ma_estudiante e
INNER JOIN persona.pe_persona pp ON e.persona_id = pp.persona_id
INNER JOIN general.gn_catalogo_siiaa sexo on pp.sexo_id = sexo.catalogo_siiaa_id
INNER JOIN matricula.ma_matricula ma on e.estudiante_id = ma.estudiante_id
INNER JOIN academico.ac_apertura ac on ma.apertura_id = ac.apertura_id
INNER JOIN administracion.ad_sede se on ac.sede_id = se.sede_id
INNER JOIN general.gn_catalogo_siiaa nivel on ac.nivel_id = nivel.catalogo_siiaa_id
INNER JOIN academico.ac_grado grado on ac.grado_id = grado.grado_id
WHERE ma.periodo_academico_id >= 14;
`
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment