41 lines
888 B
Go
41 lines
888 B
Go
package adlin
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type Pong struct {
|
|
Date time.Time
|
|
Count uint
|
|
State bool
|
|
}
|
|
|
|
func (s *Student) LastPongs() (pongs []*Pong, err error) {
|
|
if rows, errr := DBQuery("SELECT last, count, state FROM student_pong WHERE id_student = ? ORDER BY last DESC", s.Id); errr != nil {
|
|
return nil, errr
|
|
} else {
|
|
defer rows.Close()
|
|
|
|
for rows.Next() {
|
|
p := &Pong{}
|
|
if err = rows.Scan(&p.Date, &p.Count, &p.State); err != nil {
|
|
return
|
|
}
|
|
pongs = append(pongs, p)
|
|
}
|
|
if err = rows.Err(); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
}
|
|
|
|
func (s *Student) OnPong(state bool) (err error) {
|
|
_, err = DBExec("INSERT INTO student_pong (id_student, last, state) VALUES (?, ?, ?)", s.Id, time.Now(), state)
|
|
if err != nil {
|
|
_, err = DBExec("UPDATE student_pong SET last = CURRENT_TIMESTAMP, count = count + 1 WHERE id_student = ? AND state = ?", s.Id, state)
|
|
}
|
|
return
|
|
}
|