package requette import ( "api_serveurless_go/bd" "api_serveurless_go/types" "database/sql" "log" ) func GetAllTechnologies() types.Technologies { db := bd.GetDB() stmt, err := db.Prepare("SELECT * FROM technologie") if err != nil { log.Fatal(err) } row, err := stmt.Query() defer stmt.Close() if err != nil { log.Fatal(err) } stmt2, err := db.Prepare("SELECT count(*) FROM technologie") if err != nil { log.Fatal(err) } row2, err := stmt2.Query() defer stmt2.Close() if err != nil { log.Fatal(err) } var count int for row2.Next() { err := row2.Scan(&count) if err != nil { log.Fatal(err) } } var technologies types.Technologies technologies.Technologies = hydrateTechnologies(row) technologies.Count = count return technologies } func hydrateTechnologies(rows *sql.Rows) []types.TechnologieShort { var technologies []types.TechnologieShort for rows.Next() { var technologie types.TechnologieShort err := rows.Scan(&technologie.Id, &technologie.Name) if err != nil { log.Fatal(err) } technologies = append(technologies, technologie) } return technologies } func CreateTechnologie(projet types.TechnologieCreate) *types.TechnologieCreate { db := bd.GetDB() stmt, err := db.Prepare("INSERT INTO technologie (name) VALUES (?)") if err != nil { log.Fatal(err) } _, err = stmt.Exec(projet.Name) if err != nil { log.Fatal(err) return nil } defer stmt.Close() return &projet } func UpdateTechnologie(technologie types.TechnologieFull) *types.TechnologieFull { db := bd.GetDB() stmt, err := db.Prepare("UPDATE technologie SET name = ? WHERE id = ?") if err != nil { log.Fatal(err) } _, err = stmt.Exec(technologie.Name, technologie.Id) if err != nil { log.Fatal(err) return nil } defer stmt.Close() return &technologie } func DeleteTechnologie(id int) bool { db := bd.GetDB() stmt, err := db.Prepare("DELETE FROM technologie WHERE id = ?") if err != nil { log.Fatal(err) return false } _, err = stmt.Exec(id) if err != nil { log.Fatal(err) return false } defer stmt.Close() return true }