package repository import ( "context" "database/sql" "fmt" "git.godopu.com/lab/landing_page/backend/internal/models" ) type MembersRepository struct { db *sql.DB } func NewMembersRepository(db *sql.DB) *MembersRepository { return &MembersRepository{db: db} } func (r *MembersRepository) GetMembers(ctx context.Context) ([]models.Member, error) { query := ` SELECT id, name_ko, name_en, degree, affiliation, email, is_advisor, display_order, created_at FROM members ORDER BY display_order ASC, id ASC ` rows, err := r.db.QueryContext(ctx, query) if err != nil { return nil, fmt.Errorf("query members: %w", err) } defer rows.Close() var members []models.Member for rows.Next() { var m models.Member if err := rows.Scan( &m.ID, &m.NameKo, &m.NameEn, &m.Degree, &m.Affiliation, &m.Email, &m.IsAdvisor, &m.DisplayOrder, &m.CreatedAt, ); err != nil { return nil, fmt.Errorf("scan member: %w", err) } members = append(members, m) } return members, rows.Err() } func (r *MembersRepository) GetAlumni(ctx context.Context) ([]models.Alumnus, error) { query := ` SELECT id, name_ko, name_en, degree, graduated_at, major, current_position, created_at FROM alumni ORDER BY graduated_at DESC, id ASC ` rows, err := r.db.QueryContext(ctx, query) if err != nil { return nil, fmt.Errorf("query alumni: %w", err) } defer rows.Close() var alumni []models.Alumnus for rows.Next() { var a models.Alumnus if err := rows.Scan( &a.ID, &a.NameKo, &a.NameEn, &a.Degree, &a.GraduatedAt, &a.Major, &a.CurrentPosition, &a.CreatedAt, ); err != nil { return nil, fmt.Errorf("scan alumnus: %w", err) } alumni = append(alumni, a) } return alumni, rows.Err() }