Add 'backend/' from commit '4b5069d17945252abee2a826818098906af56334'
git-subtree-dir: backend git-subtree-mainline:9c93274511git-subtree-split:4b5069d179
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
package requette
|
||||
|
||||
import (
|
||||
"api_serveurless_go/bd"
|
||||
"api_serveurless_go/types"
|
||||
"database/sql"
|
||||
"log"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func GetAllProjets(nb int,page int) types.Projets {
|
||||
db := bd.GetDB()
|
||||
offset := (page - 1) * nb
|
||||
stmt, err := db.Prepare("SELECT projet.id, projet.name, projet.shortdescriptionfr, GROUP_CONCAT(technologie.name SEPARATOR ',') as technologies FROM projet LEFT JOIN projet_technologie on projet.id = projet_technologie.projet_id LEFT JOIN technologie on projet_technologie.technologie_id = technologie.id GROUP BY projet.id, projet.name, projet.shortdescriptionfr LIMIT ? OFFSET ?")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
row, err := stmt.Query(nb, offset)
|
||||
defer stmt.Close()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
stmt2, err := db.Prepare("SELECT count(*) FROM projet")
|
||||
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 projets types.Projets
|
||||
projets.Projets = hydrateProjets(row)
|
||||
projets.Count = count
|
||||
|
||||
return projets
|
||||
|
||||
}
|
||||
|
||||
func GetProjetByID(id int) types.ProjetFull {
|
||||
db := bd.GetDB()
|
||||
stmt, err := db.Prepare("SELECT id, name, shortdescriptionfr, longdescriptionfr, shortdescriptionen, longdescriptionen, linkGithub, linkWeb FROM projet WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
row := stmt.QueryRow(id)
|
||||
defer stmt.Close()
|
||||
return hydrateProjet(row)
|
||||
}
|
||||
|
||||
func hydrateProjet(row *sql.Row) types.ProjetFull {
|
||||
var projet types.ProjetFull
|
||||
err := row.Scan(&projet.Id, &projet.Name, &projet.ShortDescriptionFr, &projet.LongDescriptionFr, &projet.ShortDescriptionEn, &projet.LongDescriptionEn, &projet.LinkGithub, &projet.LinkWeb)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
return projet
|
||||
}
|
||||
|
||||
func hydrateProjets(rows *sql.Rows) []types.ProjetShort {
|
||||
var projets []types.ProjetShort
|
||||
for rows.Next() {
|
||||
var projet types.ProjetShort
|
||||
var techs sql.NullString
|
||||
err := rows.Scan(&projet.Id, &projet.Name, &projet.ShortDescriptionFr, &techs)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
if techs.Valid && techs.String != "" {
|
||||
projet.Technologies = strings.Split(techs.String, ",")
|
||||
} else {
|
||||
projet.Technologies = []string{}
|
||||
}
|
||||
projets = append(projets, projet)
|
||||
}
|
||||
return projets
|
||||
}
|
||||
|
||||
func CreateProjet(projet types.Projetcreate) *types.Projetcreate {
|
||||
db := bd.GetDB()
|
||||
stmt, err := db.Prepare("INSERT INTO projet (name, shortdescriptionfr, longdescriptionfr, shortdescriptionen, longdescriptionen, linkGithub, linkWeb, datec) VALUES (?, ?, '', '', '', '', '', CURDATE())")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
_, err = stmt.Exec(projet.Name, projet.ShortDescription)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return nil
|
||||
}
|
||||
defer stmt.Close()
|
||||
return &projet
|
||||
}
|
||||
|
||||
func UpdateProjet(projet types.ProjetFull) *types.ProjetFull {
|
||||
db := bd.GetDB()
|
||||
stmt, err := db.Prepare("UPDATE projet SET name = ?, shortdescriptionfr = ?, longdescriptionfr = ?, shortdescriptionen = ?, longdescriptionen = ?, linkGithub = ?, linkWeb = ? WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
_, err = stmt.Exec(projet.Name, projet.ShortDescriptionFr, projet.LongDescriptionFr, projet.ShortDescriptionEn, projet.LongDescriptionEn, projet.LinkGithub, projet.LinkWeb, projet.Id)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return nil
|
||||
}
|
||||
defer stmt.Close()
|
||||
return &projet
|
||||
}
|
||||
|
||||
func DeleteProjet(id int) bool {
|
||||
db := bd.GetDB()
|
||||
stmt, err := db.Prepare("DELETE FROM projet 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
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user