mirror of
https://github.com/randyjc/Rahoot.git
synced 2026-03-13 20:15:35 +01:00
111 lines
2.7 KiB
TypeScript
111 lines
2.7 KiB
TypeScript
import { QuizzWithId } from "@rahoot/common/types/game"
|
|
import fs from "fs"
|
|
import { resolve } from "path"
|
|
|
|
const getPath = (path: string) => resolve(process.cwd(), "../../config", path)
|
|
|
|
class Config {
|
|
static init() {
|
|
const isGameConfigExists = fs.existsSync(getPath("game.json"))
|
|
if (!isGameConfigExists) {
|
|
fs.writeFileSync(
|
|
getPath("game.json"),
|
|
JSON.stringify(
|
|
{
|
|
managerPassword: "PASSWORD",
|
|
music: true,
|
|
},
|
|
null,
|
|
2
|
|
)
|
|
)
|
|
}
|
|
|
|
const isQuizzExists = fs.existsSync(getPath("quizz"))
|
|
if (!isQuizzExists) {
|
|
fs.mkdirSync(getPath("quizz"))
|
|
|
|
fs.writeFileSync(
|
|
getPath("quizz/example.json"),
|
|
JSON.stringify(
|
|
{
|
|
subject: "Example Quizz",
|
|
questions: [
|
|
{
|
|
question: "What is good answer ?",
|
|
answers: ["No", "Good answer", "No", "No"],
|
|
solution: 1,
|
|
cooldown: 5,
|
|
time: 15,
|
|
},
|
|
{
|
|
question: "What is good answer with image ?",
|
|
answers: ["No", "No", "No", "Good answer"],
|
|
image: "https://placehold.co/600x400.png",
|
|
solution: 3,
|
|
cooldown: 5,
|
|
time: 20,
|
|
},
|
|
{
|
|
question: "What is good answer with two answers ?",
|
|
answers: ["Good answer", "No"],
|
|
image: "https://placehold.co/600x400.png",
|
|
solution: 0,
|
|
cooldown: 5,
|
|
time: 20,
|
|
},
|
|
],
|
|
},
|
|
null,
|
|
2
|
|
)
|
|
)
|
|
}
|
|
}
|
|
|
|
static game() {
|
|
const isExists = fs.existsSync(getPath("game.json"))
|
|
if (!isExists) {
|
|
throw new Error("Game config not found")
|
|
}
|
|
|
|
try {
|
|
const config = fs.readFileSync(getPath("game.json"), "utf-8")
|
|
return JSON.parse(config)
|
|
} catch (error) {
|
|
console.error("Failed to read game config:", error)
|
|
}
|
|
}
|
|
|
|
static quizz() {
|
|
const isExists = fs.existsSync(getPath("quizz"))
|
|
if (!isExists) {
|
|
return []
|
|
}
|
|
|
|
try {
|
|
const files = fs
|
|
.readdirSync(getPath("quizz"))
|
|
.filter((file) => file.endsWith(".json"))
|
|
|
|
const quizz: QuizzWithId[] = files.map((file) => {
|
|
const data = fs.readFileSync(getPath(`quizz/${file}`), "utf-8")
|
|
const config = JSON.parse(data)
|
|
|
|
const id = file.replace(".json", "")
|
|
|
|
return {
|
|
id,
|
|
...config,
|
|
}
|
|
})
|
|
return quizz || []
|
|
} catch (error) {
|
|
console.error("Failed to read quizz config:", error)
|
|
return []
|
|
}
|
|
}
|
|
}
|
|
|
|
export default Config
|