This commit is contained in:
2026-02-11 17:46:22 +03:00
commit eacfacb13b
266 changed files with 51337 additions and 0 deletions

81
svc/routes/user_list.go Normal file
View File

@@ -0,0 +1,81 @@
package routes
import (
"bssapp-backend/models"
"bssapp-backend/queries"
"database/sql"
"encoding/json"
"log"
"net/http"
)
// ======================================================
// 📌 UserListRoute — Kullanıcı Listeleme API (FINAL)
// ======================================================
func UserListRoute(pg *sql.DB) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
// --------------------------------------------------
// 🔍 Query Param
// --------------------------------------------------
search := r.URL.Query().Get("search")
log.Printf("📥 /api/users/list çağrıldı | search='%s'", search)
// --------------------------------------------------
// 🗄️ SQL CALL
// --------------------------------------------------
rows, err := queries.GetUserList(pg, search)
if err != nil {
log.Printf("❌ SQL sorgu hatası (GetUserList): %v", err)
http.Error(w, "Veritabanı hatası", http.StatusInternalServerError)
return
}
defer rows.Close()
// --------------------------------------------------
// 📦 Sonuç Listesi
// --------------------------------------------------
list := make([]models.UserListRow, 0, 100)
count := 0
// ==================================================
// 🧠 SCAN — SQL SELECT ile BİRE BİR (8 kolon)
// ==================================================
for rows.Next() {
var u models.UserListRow
err = rows.Scan(
&u.ID, // 1
&u.Code, // 2
&u.IsActive, // 3
&u.NebimUsername, // 4 (nullable)
&u.UserGroupCode, // 5 (nullable)
&u.RoleNames, // 6
&u.DepartmentNames, // 7
&u.PiyasaNames, // 8
)
if err != nil {
log.Printf("⚠️ Satır atlandı (SCAN hatası): %v", err)
continue
}
list = append(list, u)
count++
}
if err := rows.Err(); err != nil {
log.Printf("⚠️ rows.Err(): %v", err)
}
log.Printf("✅ User listesi tamamlandı — %d kayıt gönderildi.", count)
// --------------------------------------------------
// 📤 JSON OUTPUT
// --------------------------------------------------
_ = json.NewEncoder(w).Encode(list)
})
}