qa: New field to save exported state of qa

This commit is contained in:
nemunaire 2023-11-26 12:15:51 +01:00
parent 563cf14adc
commit 334512ef0d
3 changed files with 14 additions and 11 deletions

View File

@ -499,6 +499,7 @@ CREATE TABLE IF NOT EXISTS exercices_qa(
state VARCHAR(255) NOT NULL,
solved TIMESTAMP NULL,
closed TIMESTAMP NULL,
exported INTEGER NULL,
FOREIGN KEY(id_exercice) REFERENCES exercices(id_exercice),
FOREIGN KEY(id_team) REFERENCES teams(id_team)
) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

View File

@ -16,26 +16,27 @@ type QAQuery struct {
Subject string `json:"subject"`
Solved *time.Time `json:"solved,omitempty"`
Closed *time.Time `json:"closed,omitempty"`
Exported *int64 `json:"exported,omitempty"`
}
// GetQAQuery retrieves the query with the given identifier.
func GetQAQuery(id int64) (q *QAQuery, err error) {
q = &QAQuery{}
err = DBQueryRow("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed FROM exercices_qa WHERE id_qa = ?", id).Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed)
err = DBQueryRow("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed, exported FROM exercices_qa WHERE id_qa = ?", id).Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed, &q.Exported)
return
}
// GetQAQueries returns a list of all QAQuery registered in the database.
func GetQAQueries() (res []*QAQuery, err error) {
var rows *sql.Rows
if rows, err = DBQuery("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed FROM exercices_qa"); err != nil {
if rows, err = DBQuery("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed, exported FROM exercices_qa"); err != nil {
return
}
defer rows.Close()
for rows.Next() {
q := &QAQuery{}
if err = rows.Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed); err != nil {
if err = rows.Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed, &q.Exported); err != nil {
return
}
res = append(res, q)
@ -48,14 +49,14 @@ func GetQAQueries() (res []*QAQuery, err error) {
// GetQAQueries returns a list of all QAQuery registered for the Exercice.
func (e *Exercice) GetQAQueries() (res []*QAQuery, err error) {
var rows *sql.Rows
if rows, err = DBQuery("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed FROM exercices_qa WHERE id_exercice = ?", e.Id); err != nil {
if rows, err = DBQuery("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed, exported FROM exercices_qa WHERE id_exercice = ?", e.Id); err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
q := &QAQuery{}
if err = rows.Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed); err != nil {
if err = rows.Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed, &q.Exported); err != nil {
return
}
res = append(res, q)
@ -68,14 +69,14 @@ func (e *Exercice) GetQAQueries() (res []*QAQuery, err error) {
// GetQAQueries returns a list of all QAQuery registered for the Exercice.
func (t *Team) GetQAQueries() (res []*QAQuery, err error) {
var rows *sql.Rows
if rows, err = DBQuery("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed FROM exercices_qa WHERE id_team = ?", t.Id); err != nil {
if rows, err = DBQuery("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed, exported FROM exercices_qa WHERE id_team = ?", t.Id); err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
q := &QAQuery{}
if err = rows.Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed); err != nil {
if err = rows.Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed, &q.Exported); err != nil {
return
}
res = append(res, q)
@ -88,7 +89,7 @@ func (t *Team) GetQAQueries() (res []*QAQuery, err error) {
// GetQAQuery retrieves the query with the given identifier.
func (e *Exercice) GetQAQuery(id int64) (q *QAQuery, err error) {
q = &QAQuery{}
err = DBQueryRow("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed FROM exercices_qa WHERE id_qa = ? AND id_exercice = ?", id, e.Id).Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed)
err = DBQueryRow("SELECT id_qa, id_exercice, id_team, authuser, creation, state, subject, solved, closed, exported FROM exercices_qa WHERE id_qa = ? AND id_exercice = ?", id, e.Id).Scan(&q.Id, &q.IdExercice, &q.IdTeam, &q.User, &q.Creation, &q.State, &q.Subject, &q.Solved, &q.Closed, &q.Exported)
return
}
@ -99,13 +100,13 @@ func (e *Exercice) NewQAQuery(subject string, teamId *int64, user string, state
} else if qid, err := res.LastInsertId(); err != nil {
return nil, err
} else {
return &QAQuery{qid, e.Id, teamId, user, time.Now(), state, subject, solved, nil}, nil
return &QAQuery{qid, e.Id, teamId, user, time.Now(), state, subject, solved, nil, nil}, nil
}
}
// Update applies modifications back to the database.
func (q *QAQuery) Update() (int64, error) {
if res, err := DBExec("UPDATE exercices_qa SET subject = ?, id_team = ?, authuser = ?, id_exercice = ?, creation = ?, state = ?, solved = ?, closed = ? WHERE id_qa = ?", q.Subject, q.IdTeam, q.User, q.IdExercice, q.Creation, q.State, q.Solved, q.Closed, q.Id); err != nil {
if res, err := DBExec("UPDATE exercices_qa SET subject = ?, id_team = ?, authuser = ?, id_exercice = ?, creation = ?, state = ?, solved = ?, closed = ?, exported = ? WHERE id_qa = ?", q.Subject, q.IdTeam, q.User, q.IdExercice, q.Creation, q.State, q.Solved, q.Closed, q.Exported, q.Id); err != nil {
return 0, err
} else if nb, err := res.RowsAffected(); err != nil {
return 0, err

View File

@ -20,7 +20,7 @@ export class QAQuery {
}
}
update({ id, id_exercice, id_team, user, creation, state, subject, solved, closed }) {
update({ id, id_exercice, id_team, user, creation, state, subject, solved, closed, exported }) {
this.id = id;
this.id_team = id_team;
this.id_exercice = id_exercice;
@ -30,6 +30,7 @@ export class QAQuery {
this.subject = subject;
this.solved = solved;
this.closed = closed;
this.exported = exported;
}
async delete() {