2016-01-07 17:43:02 +00:00
package main
import (
"time"
)
type Exercice struct {
2016-01-13 00:20:21 +00:00
Id int64 ` json:"id" `
Title string ` json:"title" `
Statement string ` json:"statement" `
Hint string ` json:"hint" `
Depend int64 ` json:"depend" `
Gain int64 ` json:"gain" `
VideoURI string ` json:"videoURI" `
2016-01-07 17:43:02 +00:00
}
func ( t Theme ) GetExercices ( ) ( [ ] Exercice , error ) {
2016-01-13 00:20:21 +00:00
if rows , err := DBQuery ( "SELECT id_exercice, title, statement, hint, depend, gain, video_uri FROM teams WHERE id_theme = ?" , t . Id ) ; err != nil {
2016-01-07 17:43:02 +00:00
return nil , err
} else {
defer rows . Close ( )
var exos = make ( [ ] Exercice , 0 )
for rows . Next ( ) {
var e Exercice
2016-01-13 00:20:21 +00:00
if err := rows . Scan ( & e . Id , & e . Title , & e . Statement , & e . Hint , & e . Depend , & e . Gain , & e . VideoURI ) ; err != nil {
2016-01-07 17:43:02 +00:00
return nil , err
}
exos = append ( exos , e )
}
if err := rows . Err ( ) ; err != nil {
return nil , err
}
return exos , nil
}
}
func ( t Theme ) AddExercice ( title string , statement string , hint string , depend * Exercice , gain int , videoURI string ) ( Exercice , error ) {
2016-01-13 00:20:21 +00:00
if res , err := DBExec ( "INSERT INTO exercices (id_theme, title, statement, hint, depend, gain, video_uri) VALUES (?, ?, ?, ?, ?, ?, ?)" , t . Id , title , statement , hint , depend . Id , gain , videoURI ) ; err != nil {
2016-01-07 17:43:02 +00:00
return Exercice { } , err
} else if eid , err := res . LastInsertId ( ) ; err != nil {
return Exercice { } , err
} else {
2016-01-13 00:20:21 +00:00
return Exercice { eid , title , statement , hint , depend . Id , int64 ( gain ) , videoURI } , nil
2016-01-07 17:43:02 +00:00
}
}
func ( e Exercice ) Update ( ) ( int64 , error ) {
2016-01-13 00:20:21 +00:00
if res , err := DBExec ( "UPDATE exercices SET title = ?, statement = ?, hint = ?, depend = ?, gain = ?, video_uri = ? WHERE id_exercice = ?" , e . Title , e . Statement , e . Hint , e . Depend , e . Gain , e . VideoURI , e . Id ) ; err != nil {
2016-01-07 17:43:02 +00:00
return 0 , err
} else if nb , err := res . RowsAffected ( ) ; err != nil {
return 0 , err
} else {
return nb , err
}
}
func ( e Exercice ) Delete ( ) ( int64 , error ) {
2016-01-13 00:20:21 +00:00
if res , err := DBExec ( "DELETE FROM exercices WHERE id_exercice = ?" , e . Id ) ; err != nil {
2016-01-07 17:43:02 +00:00
return 0 , err
} else if nb , err := res . RowsAffected ( ) ; err != nil {
return 0 , err
} else {
return nb , err
}
}
func ( e Exercice ) NewTry ( t Team ) error {
2016-01-13 00:20:21 +00:00
if _ , err := DBExec ( "INSERT INTO exercice_tries (id_exercice, id_team, time) VALUES (?, ?, ?)" , e . Id , t . Id , time . Now ( ) ) ; err != nil {
2016-01-07 17:43:02 +00:00
return err
} else {
return nil
}
}
func ( e Exercice ) Solved ( t Team ) error {
2016-01-13 00:20:21 +00:00
if _ , err := DBExec ( "INSERT INTO exercice_solved (id_exercice, id_team, time) VALUES (?, ?, ?)" , e . Id , t . Id , time . Now ( ) ) ; err != nil {
2016-01-07 17:43:02 +00:00
return err
} else {
return nil
}
}