diff --git a/pkg/model/ent/schema/session.go b/pkg/model/ent/schema/session.go index 1640e65..da4bf80 100644 --- a/pkg/model/ent/schema/session.go +++ b/pkg/model/ent/schema/session.go @@ -15,7 +15,7 @@ func (Session) Fields() []ent.Field { return []ent.Field{ field.UUID("id", uuid.Nil).Immutable(), field.Time("created").Immutable(), - field.Time("started").Nillable().Optional(), // TODO remove? + field.Time("started").Nillable().Optional(), field.String("code").MinLen(6).MaxLen(6).Immutable().Unique(), } } diff --git a/pkg/model/model.go b/pkg/model/model.go index 206720d..533ec75 100644 --- a/pkg/model/model.go +++ b/pkg/model/model.go @@ -188,6 +188,10 @@ func (m *Model) NextQuestion(sessionId uuid.UUID, now time.Time, c context.Conte // TODO rollback only if not yet committed defer tx.Rollback() + if err := tx.Session.Update().Where(session.ID(sessionId)).Where(session.StartedIsNil()).SetStarted(now).Exec(c); err != nil { + return err + } + var query = tx.Question.Query().Where(question.HasGameWith(game.HasSessionsWith(session.ID(sessionId)))).Order(ent.Asc(question.FieldOrder)) if current, err := tx.AskedQuestion.Query().Where(askedquestion.HasSessionWith(session.ID(sessionId))).WithQuestion().Order(ent.Desc(askedquestion.FieldAsked)).First(c); err == nil {