Flag MCQ can now depend on MCQ
This commit is contained in:
parent
e937073588
commit
6921431a77
10
libfic/db.go
10
libfic/db.go
@ -261,6 +261,16 @@ CREATE TABLE IF NOT EXISTS exercice_flags_omcq_deps(
|
|||||||
FOREIGN KEY(id_flag) REFERENCES exercice_flags(id_flag),
|
FOREIGN KEY(id_flag) REFERENCES exercice_flags(id_flag),
|
||||||
FOREIGN KEY(id_mcq_dep) REFERENCES exercice_mcq(id_mcq)
|
FOREIGN KEY(id_mcq_dep) REFERENCES exercice_mcq(id_mcq)
|
||||||
) DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;
|
) DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;
|
||||||
|
`); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, err := db.Exec(`
|
||||||
|
CREATE TABLE IF NOT EXISTS exercice_mcq_omcq_deps(
|
||||||
|
id_mcq INTEGER NOT NULL,
|
||||||
|
id_mcq_dep INTEGER NOT NULL,
|
||||||
|
FOREIGN KEY(id_mcq) REFERENCES exercice_mcq(id_mcq),
|
||||||
|
FOREIGN KEY(id_mcq_dep) REFERENCES exercice_mcq(id_mcq)
|
||||||
|
) DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;
|
||||||
`); err != nil {
|
`); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -164,6 +164,10 @@ func (m MCQ) Delete() (int64, error) {
|
|||||||
return 0, err
|
return 0, err
|
||||||
} else if _, err := DBExec("DELETE FROM exercice_mcq_okey_deps WHERE id_mcq = ?", m.Id); err != nil {
|
} else if _, err := DBExec("DELETE FROM exercice_mcq_okey_deps WHERE id_mcq = ?", m.Id); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
|
} else if _, err := DBExec("DELETE FROM exercice_mcq_omcq_deps WHERE id_mcq = ?", m.Id); err != nil {
|
||||||
|
return 0, err
|
||||||
|
} else if _, err := DBExec("DELETE FROM exercice_mcq_omcq_deps WHERE id_mcq_dep = ?", m.Id); err != nil {
|
||||||
|
return 0, err
|
||||||
} else if _, err := DBExec("DELETE FROM exercice_flags_omcq_deps WHERE id_mcq_dep = ?", m.Id); err != nil {
|
} else if _, err := DBExec("DELETE FROM exercice_flags_omcq_deps WHERE id_mcq_dep = ?", m.Id); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
} else if res, err := DBExec("DELETE FROM exercice_mcq WHERE id_mcq = ?", m.Id); err != nil {
|
} else if res, err := DBExec("DELETE FROM exercice_mcq WHERE id_mcq = ?", m.Id); err != nil {
|
||||||
@ -219,6 +223,10 @@ func (e Exercice) WipeMCQs() (int64, error) {
|
|||||||
return 0, err
|
return 0, err
|
||||||
} else if _, err := DBExec("DELETE FROM exercice_mcq_okey_deps WHERE id_mcq IN (SELECT id_mcq FROM exercice_mcq WHERE id_exercice = ?);", e.Id); err != nil {
|
} else if _, err := DBExec("DELETE FROM exercice_mcq_okey_deps WHERE id_mcq IN (SELECT id_mcq FROM exercice_mcq WHERE id_exercice = ?);", e.Id); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
|
} else if _, err := DBExec("DELETE FROM exercice_mcq_omcq_deps WHERE id_mcq IN (SELECT id_mcq FROM exercice_mcq WHERE id_exercice = ?);", e.Id); err != nil {
|
||||||
|
return 0, err
|
||||||
|
} else if _, err := DBExec("DELETE FROM exercice_mcq_omcq_deps WHERE id_mcq_dep IN (SELECT id_mcq FROM exercice_mcq WHERE id_exercice = ?);", e.Id); err != nil {
|
||||||
|
return 0, err
|
||||||
} else if res, err := DBExec("DELETE FROM exercice_mcq WHERE id_exercice = ?;", e.Id); err != nil {
|
} else if res, err := DBExec("DELETE FROM exercice_mcq WHERE id_exercice = ?;", e.Id); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
} else if nb, err := res.RowsAffected(); err != nil {
|
} else if nb, err := res.RowsAffected(); err != nil {
|
||||||
@ -232,6 +240,8 @@ func (e Exercice) WipeMCQs() (int64, error) {
|
|||||||
func (m MCQ) AddDepend(j Flag) (err error) {
|
func (m MCQ) AddDepend(j Flag) (err error) {
|
||||||
if d, ok := j.(FlagKey); ok {
|
if d, ok := j.(FlagKey); ok {
|
||||||
_, err = DBExec("INSERT INTO exercice_mcq_okey_deps (id_mcq, id_flag_dep) VALUES (?, ?)", m.Id, d.Id)
|
_, err = DBExec("INSERT INTO exercice_mcq_okey_deps (id_mcq, id_flag_dep) VALUES (?, ?)", m.Id, d.Id)
|
||||||
|
} else if d, ok := j.(MCQ); ok {
|
||||||
|
_, err = DBExec("INSERT INTO exercice_mcq_omcq_deps (id_mcq, id_mcq_dep) VALUES (?, ?)", m.Id, d.Id)
|
||||||
} else {
|
} else {
|
||||||
err = errors.New("Dependancy type not implemented for this flag.")
|
err = errors.New("Dependancy type not implemented for this flag.")
|
||||||
}
|
}
|
||||||
@ -240,12 +250,13 @@ func (m MCQ) AddDepend(j Flag) (err error) {
|
|||||||
|
|
||||||
// GetDepends retrieve the flag's dependency list.
|
// GetDepends retrieve the flag's dependency list.
|
||||||
func (m MCQ) GetDepends() ([]Flag, error) {
|
func (m MCQ) GetDepends() ([]Flag, error) {
|
||||||
|
var deps = make([]Flag, 0)
|
||||||
|
|
||||||
if rows, err := DBQuery("SELECT id_flag_dep FROM exercice_mcq_okey_deps WHERE id_mcq = ?", m.Id); err != nil {
|
if rows, err := DBQuery("SELECT id_flag_dep FROM exercice_mcq_okey_deps WHERE id_mcq = ?", m.Id); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
|
|
||||||
var deps = make([]Flag, 0)
|
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var d int64
|
var d int64
|
||||||
if err := rows.Scan(&d); err != nil {
|
if err := rows.Scan(&d); err != nil {
|
||||||
@ -257,8 +268,27 @@ func (m MCQ) GetDepends() ([]Flag, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return deps, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if rows, err := DBQuery("SELECT id_mcq_dep FROM exercice_mcq_omcq_deps WHERE id_mcq = ?", m.Id); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
for rows.Next() {
|
||||||
|
var d int64
|
||||||
|
if err := rows.Scan(&d); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
deps = append(deps, MCQ{Id: d, IdExercice: m.IdExercice})
|
||||||
|
}
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return deps, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetJustifiedFlag searchs for a flag in the scope of the given exercice.
|
// GetJustifiedFlag searchs for a flag in the scope of the given exercice.
|
||||||
|
@ -50,6 +50,7 @@ func ResetExercices() (error) {
|
|||||||
"flag_found",
|
"flag_found",
|
||||||
"exercice_flags_omcq_deps",
|
"exercice_flags_omcq_deps",
|
||||||
"exercice_mcq_okey_deps",
|
"exercice_mcq_okey_deps",
|
||||||
|
"exercice_mcq_omcq_deps",
|
||||||
"exercice_flags_deps",
|
"exercice_flags_deps",
|
||||||
"exercice_hints_deps",
|
"exercice_hints_deps",
|
||||||
"flag_choices",
|
"flag_choices",
|
||||||
|
Loading…
Reference in New Issue
Block a user