git-subtree-dir: backend git-subtree-mainline:9c93274511git-subtree-split:4b5069d179
108 lines
2.2 KiB
Go
108 lines
2.2 KiB
Go
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
|
|
}
|