From 58fac72355f866e836d60fb4972ad144ed504419 Mon Sep 17 00:00:00 2001 From: Rakantor Date: Fri, 28 Oct 2022 21:47:02 +0200 Subject: [PATCH] Add plugin --- nuxt.config.js | 4 ++++ plugins/closed-ended-question.js | 31 ++++++++++++++++++++++++++ plugins/game.js | 37 ++++++++++++++++++++++++++++++++ plugins/open-ended-question.js | 29 +++++++++++++++++++++++++ plugins/user.js | 27 +++++++++++++++++++++++ 5 files changed, 128 insertions(+) create mode 100644 plugins/closed-ended-question.js create mode 100644 plugins/game.js create mode 100644 plugins/open-ended-question.js create mode 100644 plugins/user.js diff --git a/nuxt.config.js b/nuxt.config.js index 2099e76..e642c85 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -61,6 +61,10 @@ export default { firebaseAppCheckDebugToken: process.env.NODE_ENV !== 'production' }, + publicRuntimeConfig: { + NODE_ENV: process.env.NODE_ENV + }, + // Vuetify module configuration: https://go.nuxtjs.dev/config-vuetify vuetify: { customVariables: ['~/assets/variables.scss'], diff --git a/plugins/closed-ended-question.js b/plugins/closed-ended-question.js new file mode 100644 index 0000000..8d56c7d --- /dev/null +++ b/plugins/closed-ended-question.js @@ -0,0 +1,31 @@ +export class ClosedEndedQuestion { + constructor (id, question, answers, correctAnswer, creator, created, comments, status) { + this.id = id + this.question = question + this.answers = answers + this.correctAnswer = correctAnswer + this.creator = creator + this.created = created + this.comments = comments + this.status = status + } +} + +// Firestore data converter +export const ClosedEndedQuestionConverter = { + toFirestore: (closedEndedQuestion) => { + return { + frage: closedEndedQuestion.question, + antworten: closedEndedQuestion.answers, + richtig: closedEndedQuestion.correctAnswer, + ersteller: closedEndedQuestion.creator, + erstellt: closedEndedQuestion.created, + kommentare: closedEndedQuestion.comments, + status: closedEndedQuestion.status + } + }, + fromFirestore: (snapshot, options) => { + const data = snapshot.data(options) + return new ClosedEndedQuestion(snapshot.id, data.frage, data.antworten, data.richtig, data.ersteller, data.erstellt, data.kommentare, data.status) + } +} \ No newline at end of file diff --git a/plugins/game.js b/plugins/game.js new file mode 100644 index 0000000..5af7e65 --- /dev/null +++ b/plugins/game.js @@ -0,0 +1,37 @@ +export class Game { + constructor (id, questions, created, player1id, player1name, player1answers, player2id, player2name, player2answers) { + this.id = id + this.questions = questions + this.created = created + this.player1id = player1id + this.player1name = player1name + this.player1answers = player1answers + this.player2id = player2id + this.player2name = player2name + this.player2answers = player2answers + } +} + +// Firestore data converter +export const GameConverter = { + toFirestore: (game) => { + return { + fragen: game.questions, + erstellt: game.created, + spieler1id: game.player1id, + spieler1name: game.player1name, + spieler1antworten: game.player1answers, + spieler2id: game.player2id, + spieler2name: game.player2name, + spieler2antworten: game.player2answers + } + }, + fromFirestore: (snapshot, options) => { + const data = snapshot.data(options) + return new Game( + snapshot.id, data.fragen, data.erstellt, + data.spieler1id, data.spieler1name, data.spieler1antworten, + data.spieler2id, data.spieler2name, data.spieler2antworten + ) + } +} \ No newline at end of file diff --git a/plugins/open-ended-question.js b/plugins/open-ended-question.js new file mode 100644 index 0000000..71a3012 --- /dev/null +++ b/plugins/open-ended-question.js @@ -0,0 +1,29 @@ +export class OpenEndedQuestion { + constructor (id, question, solution, creator, created, ratings, difficulty) { + this.id = id + this.question = question + this.solution = solution + this.creator = creator + this.created = created + this.ratings = ratings + this.difficulty = difficulty + } +} + +// Firestore data converter +export const OpenEndedQuestionConverter = { + toFirestore: (openEndedQuestion) => { + return { + frage: openEndedQuestion.question, + musterloesung: openEndedQuestion.solution, + ersteller: openEndedQuestion.creator, + erstellt: openEndedQuestion.created, + bewertungen: openEndedQuestion.ratings, + schwierigkeit: openEndedQuestion.difficulty + } + }, + fromFirestore: (snapshot, options) => { + const data = snapshot.data(options) + return new OpenEndedQuestion(snapshot.id, data.frage, data.musterloesung, data.ersteller, data.erstellt, data.bewertungen, data.schwierigkeit) + } +} \ No newline at end of file diff --git a/plugins/user.js b/plugins/user.js new file mode 100644 index 0000000..93e616f --- /dev/null +++ b/plugins/user.js @@ -0,0 +1,27 @@ +export class User { + constructor (gamesStarted) { + this.gamesStarted = [] + + gamesStarted.forEach(e => { + this.gamesStarted.push({ course: e.kurs, game: e.spiel }) + }) + } +} + +// Firestore data converter +export const UserConverter = { + toFirestore: (user) => { + const spieleBegonnen = [] + user.gamesStarted.forEach(e => { + spieleBegonnen.push({ kurs: e.course, spiel: e.game }) + }) + + return { + spieleBegonnen + } + }, + fromFirestore: (snapshot, options) => { + const data = snapshot.data(options) + return new User(data.spieleBegonnen) + } +} \ No newline at end of file