admin: Use gin-gonic as router
This commit is contained in:
parent
83468ad723
commit
8b3fbdb64a
32 changed files with 2785 additions and 1635 deletions
|
@ -74,6 +74,12 @@ func GetFile(id int64) (f *EFile, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func (e *Exercice) GetFile(id int64) (f *EFile, err error) {
|
||||
f = &EFile{}
|
||||
err = DBQueryRow("SELECT id_file, origin, path, name, cksum, size FROM exercice_files WHERE id_file = ? AND id_exercice = ?", id, e.Id).Scan(&f.Id, &f.origin, &f.Path, &f.Name, &f.Checksum, &f.Size)
|
||||
return
|
||||
}
|
||||
|
||||
// GetFileByPath retrieves the file that should be found at the given location.
|
||||
func GetFileByPath(path string) (*EFile, error) {
|
||||
path = strings.TrimPrefix(path, FilesDir)
|
||||
|
|
|
@ -78,6 +78,13 @@ func GetFlagKey(id int) (k *FlagKey, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
// GetFlagKey returns a flag.
|
||||
func (e *Exercice) GetFlagKey(id int) (k *FlagKey, err error) {
|
||||
k = &FlagKey{}
|
||||
err = DBQueryRow("SELECT id_flag, id_exercice, ordre, label, type, placeholder, help, unit, ignorecase, notrim, multiline, validator_regexp, sort_re_grps, cksum, choices_cost FROM exercice_flags WHERE id_flag = ? AND id_exercice = ?", id, e.Id).Scan(&k.Id, &k.IdExercice, &k.Order, &k.Label, &k.Type, &k.Placeholder, &k.Help, &k.Unit, &k.IgnoreCase, &k.NoTrim, &k.Multiline, &k.ValidatorRegexp, &k.SortReGroups, &k.Checksum, &k.ChoicesCost)
|
||||
return
|
||||
}
|
||||
|
||||
// GetFlagKeyByLabel returns a flag matching the given label.
|
||||
func (e *Exercice) GetFlagKeyByLabel(label string) (k *FlagKey, err error) {
|
||||
k = &FlagKey{}
|
||||
|
|
|
@ -46,6 +46,17 @@ func GetHint(id int64) (*EHint, error) {
|
|||
return h, nil
|
||||
}
|
||||
|
||||
// GetHint retrieves the hint with the given id.
|
||||
func (e *Exercice) GetHint(id int64) (*EHint, error) {
|
||||
h := &EHint{}
|
||||
if err := DBQueryRow("SELECT id_hint, id_exercice, title, content, cost FROM exercice_hints WHERE id_hint = ? AND id_exercice = ?", id, e.Id).Scan(&h.Id, &h.IdExercice, &h.Title, &h.Content, &h.Cost); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
treatHintContent(h)
|
||||
|
||||
return h, nil
|
||||
}
|
||||
|
||||
// GetHintByTitle retrieves the hint with the given id.
|
||||
func (e *Exercice) GetHintByTitle(id int64) (*EHint, error) {
|
||||
h := &EHint{}
|
||||
|
|
|
@ -31,7 +31,7 @@ type MCQ_entry struct {
|
|||
// GetMCQ returns a list of flags comming with the challenge.
|
||||
func GetMCQ(id int) (m *MCQ, err error) {
|
||||
m = &MCQ{}
|
||||
err = DBQueryRow("SELECT id_mcq, id_exercice, order, title FROM exercice_mcq WHERE id_mcq = ?", id).Scan(&m.Id, &m.IdExercice, &m.Order, &m.Title)
|
||||
err = DBQueryRow("SELECT id_mcq, id_exercice, ordre, title FROM exercice_mcq WHERE id_mcq = ?", id).Scan(&m.Id, &m.IdExercice, &m.Order, &m.Title)
|
||||
m.fillEntries()
|
||||
return
|
||||
}
|
||||
|
@ -84,6 +84,14 @@ func (e *Exercice) GetMCQ() ([]*MCQ, error) {
|
|||
}
|
||||
}
|
||||
|
||||
// GetMCQById returns a MCQs.
|
||||
func (e *Exercice) GetMCQById(id int) (m *MCQ, err error) {
|
||||
m = &MCQ{}
|
||||
err = DBQueryRow("SELECT id_mcq, id_exercice, ordre, title FROM exercice_mcq WHERE id_mcq = ? AND id_exercice = ?", id, e.Id).Scan(&m.Id, &m.IdExercice, &m.Order, &m.Title)
|
||||
m.fillEntries()
|
||||
return
|
||||
}
|
||||
|
||||
// GetMCQbyChoice returns the MCQ corresponding to a choice ID.
|
||||
func GetMCQbyChoice(cid int) (m *MCQ, c *MCQ_entry, err error) {
|
||||
m = &MCQ{}
|
||||
|
|
Reference in a new issue