Use pointer instead of struct

This commit is contained in:
nemunaire 2021-03-07 12:39:38 +01:00
parent 853477e54a
commit 6d8f38d749
18 changed files with 187 additions and 142 deletions

View file

@ -16,14 +16,14 @@ type StudentKey struct {
Time time.Time `json:"time"`
}
func GetStudentKeys() (keys []StudentKey, err error) {
func GetStudentKeys() (keys []*StudentKey, err error) {
if rows, errr := DBQuery("SELECT id_key, id_student, sshkey, time FROM student_keys"); errr != nil {
return nil, errr
} else {
defer rows.Close()
for rows.Next() {
var k StudentKey
k := &StudentKey{}
if err = rows.Scan(&k.Id, &k.IdStudent, &k.Key, &k.Time); err != nil {
return
}
@ -37,14 +37,14 @@ func GetStudentKeys() (keys []StudentKey, err error) {
}
}
func (s Student) GetKeys() (keys []StudentKey, err error) {
func (s *Student) GetKeys() (keys []*StudentKey, err error) {
if rows, errr := DBQuery("SELECT id_key, id_student, sshkey, time FROM student_keys WHERE id_student = ?", s.Id); errr != nil {
return nil, errr
} else {
defer rows.Close()
for rows.Next() {
var k StudentKey
k := &StudentKey{}
if err = rows.Scan(&k.Id, &k.IdStudent, &k.Key, &k.Time); err != nil {
return
}
@ -58,12 +58,13 @@ func (s Student) GetKeys() (keys []StudentKey, err error) {
}
}
func getStudentKey(id int) (k StudentKey, err error) {
func getStudentKey(id int) (k *StudentKey, err error) {
k = new(StudentKey)
err = DBQueryRow("SELECT id_key, id_student, sshkey, time FROM student_keys WHERE id_key=?", id).Scan(&k.Id, &k.IdStudent, &k.Key, &k.Time)
return
}
func (s Student) NewKey(key string) (k StudentKey, err error) {
func (s *Student) NewKey(key string) (k *StudentKey, err error) {
// Check key before importing it
cmd := exec.Command("ssh-keygen", "-l", "-f", "-")
cmd.Stdin = strings.NewReader(key)
@ -101,20 +102,20 @@ func (s Student) NewKey(key string) (k StudentKey, err error) {
key = keyf[0] + " " + keyf[1]
if res, err := DBExec("INSERT INTO student_keys (id_student, sshkey, time) VALUES (?, ?, ?)", s.Id, key, time.Now()); err != nil {
return StudentKey{}, err
return nil, err
} else if kid, err := res.LastInsertId(); err != nil {
return StudentKey{}, err
return nil, err
} else {
s.UnlockNewChallenge(11, "")
return StudentKey{kid, s.Id, key, time.Now()}, nil
return &StudentKey{kid, s.Id, key, time.Now()}, nil
}
}
func (k StudentKey) GetStudent() (Student, error) {
func (k *StudentKey) GetStudent() (*Student, error) {
return GetStudent(int(k.IdStudent))
}
func (k StudentKey) Update() (int64, error) {
func (k *StudentKey) Update() (int64, error) {
if res, err := DBExec("UPDATE student_keys SET id_student = ?, sshkey = ?, time = ? WHERE id_key = ?", k.IdStudent, k.Key, k.Time, k.Id); err != nil {
return 0, err
} else if nb, err := res.RowsAffected(); err != nil {
@ -124,7 +125,7 @@ func (k StudentKey) Update() (int64, error) {
}
}
func (k StudentKey) Delete() (int64, error) {
func (k *StudentKey) Delete() (int64, error) {
if res, err := DBExec("DELETE FROM student_keys WHERE id_key = ?", k.Id); err != nil {
return 0, err
} else if nb, err := res.RowsAffected(); err != nil {