Rebase dengan menggunakan sqlite

This commit is contained in:
Otang45
2024-12-08 19:38:53 +07:00
parent 0f93ba721f
commit 661da7a0fe
83 changed files with 31217 additions and 762244 deletions

17
routes/index.js Normal file
View File

@@ -0,0 +1,17 @@
const express = require("express");
const router = express.Router();
router.get("/", (req, res) => {
res.render("api/index", {
title: "Otang | Rest Api Muslim",
});
});
router.get("/other", (req, res, next) => {
res.render("api/other", {
title: "Otang | Lainnya",
layout: "./layouts/api",
});
});
module.exports = router;

37
routes/muslim/v1/asbab.js Normal file
View File

@@ -0,0 +1,37 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", (req, res) => {
try {
const id = req.query.id;
if (id == null) {
db.all(
"SELECT * FROM asbab_nuzul ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
db.get("SELECT * FROM asbab_nuzul WHERE id = " + id, (err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: {} });
} else {
res.status(200).json({ status: 200, data: data });
}
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

24
routes/muslim/v1/asma.js Normal file
View File

@@ -0,0 +1,24 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
db.all(
"SELECT * FROM asmaul_husna ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

203
routes/muslim/v1/ayah.js Normal file
View File

@@ -0,0 +1,203 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
db.all(
"SELECT * FROM ayah ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/range", async (req, res) => {
try {
const surahId = req.query.surahId;
const start = req.query.start;
const end = req.query.end;
if (surahId != null && start != null && end != null) {
db.all(
"SELECT * FROM ayah WHERE surah = " +
surahId +
" AND ayah BETWEEN CAST(" +
start +
" as INTEGER) and CAST(" +
end +
" as INTEGER) ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res.status(500).json({
status: 500,
message: "Parameter di perlukan (surahId, start, end).",
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/surah", async (req, res) => {
try {
const id = req.query.id;
if (id != null) {
db.all(
"SELECT * FROM ayah WHERE surah = " +
id +
" ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res.status(500).json({
status: 500,
message: "Parameter di perlukan (id).",
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/juz", async (req, res) => {
try {
const id = req.query.id;
if (id != null) {
db.all(
"SELECT * FROM ayah WHERE juz = " +
id +
" ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res.status(500).json({
status: 500,
message: "Parameter di perlukan (id).",
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/page", async (req, res) => {
try {
const id = req.query.id;
if (id != null) {
db.all(
"SELECT * FROM ayah WHERE page = " +
id +
" ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res.status(500).json({
status: 500,
message: "Parameter di perlukan (id).",
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/specific", async (req, res) => {
try {
const surahId = req.query.surahId;
const ayahId = req.query.ayahId;
if (surahId != null && ayahId != null) {
db.get(
"SELECT * FROM ayah WHERE surah = " + surahId + " AND ayah = " + ayahId,
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: {} });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res.status(500).json({
status: 500,
message: "Parameter di perlukan (surahId, ayahId).",
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/find", async (req, res) => {
try {
const query = req.query.query;
if (query != null && query.length > 3) {
db.all(
"SELECT * FROM ayah WHERE text LIKE '%" +
query +
"%' ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res.status(500).json({
status: 500,
message: "Parameter di perlukan (query). Harus lebih dari 3 karakter.",
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

66
routes/muslim/v1/doa.js Normal file
View File

@@ -0,0 +1,66 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
const source = req.query.source;
if (source != null) {
db.all(
"SELECT * FROM doa WHERE source = '" + source + "' ORDER BY judul ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
db.all("SELECT * FROM doa ORDER BY judul ASC", (err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/find", async (req, res) => {
try {
const query = req.query.query;
if (query != null) {
db.all(
"SELECT * FROM doa WHERE judul LIKE '%" +
query +
"%' ORDER BY judul ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res.status(500).json({
status: 500,
message: "Parameter di perlukan (query).",
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

View File

@@ -0,0 +1,37 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
const type = req.query.type;
if (type != null) {
db.all(
"SELECT * FROM dzikir WHERE type = '" + type + "'",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
db.all("SELECT * FROM dzikir", (err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

View File

@@ -0,0 +1,66 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
const nomor = req.query.nomor;
if (nomor != null) {
db.get("SELECT * FROM hadits WHERE no = " + nomor, (err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: {} });
} else {
res.status(200).json({ status: 200, data: data });
}
});
} else {
db.all(
"SELECT * FROM hadits ORDER BY CAST(no as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/find", async (req, res) => {
try {
const query = req.query.query;
if (query != null) {
db.all(
"SELECT * FROM hadits WHERE judul LIKE '%" +
query +
"%' ORDER BY CAST(no as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res.status(500).json({
status: 500,
message: "Parameter di perlukan (query).",
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

165
routes/muslim/v1/index.js Normal file
View File

@@ -0,0 +1,165 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
const asbab = require("./asbab");
const asma = require("./asma");
const ayah = require("./ayah");
const doa = require("./doa");
const dzikir = require("./dzikir");
const hadits = require("./hadits");
const juz = require("./juz");
const surah = require("./surah");
const tafsir = require("./tafsir");
const theme = require("./theme");
const word = require("./word");
router.get("/", (req, res) => {
res.status(200).send({
quran: {
surah: {
daftarSurah: {
pattern: "/surah",
},
infoSurah: {
pattern: "/surah?surahId={surahId}",
contoh: "/surah?surahId=114",
},
},
juz: {
daftarJuz: {
pattern: "/juz",
},
infoJuz: {
pattern: "/juz?juzId={juzId}",
contoh: "/juz?juzId=30",
},
},
ayat: {
semuaAyat: {
pattern: "/ayah",
},
spesifikSurah: {
pattern: "/ayah/surah?surahId={surahId}",
contoh: "/ayah/surah?surahId=114",
},
spesifikAyat: {
pattern: "/ayah/surah?surahId={surahId}&ayahId={ayahId}",
contoh: "/ayah/surah?surahId=114&ayahId=1",
},
spesifikJuz: {
pattern: "/ayah/juz?juzId={juzId}",
contoh: "/ayah/juz?juzId=30",
},
spesifikHalaman: {
pattern: "/ayah/page?pageId={pageId}",
contoh: "/ayah/page?pageId=604",
},
ayatRange: {
pattern: "/ayah/range?surahId={surahId}&start={start}&end={end}",
contoh: "/ayah/range?surahId=1&start=3&end=5",
},
},
asbabNujul: {
semua: {
pattern: "/asbab",
},
spesifik: {
pattern: "/asbab?asbabId={id}",
contoh: "/asbab?asbabId=1",
},
},
asmaulHusna: {
pattern: "/asma",
},
tafsir: {
semua: {
pattern: "/tafsir",
},
spesifik: {
pattern: "/tafsir?tafsirId={id}",
contoh: "/tafsir?tafsirId=1",
},
},
tema: {
semua: {
pattern: "/theme",
},
spesifik: {
pattern: "/theme?themeId={id}",
contoh: "/theme?themeId=1",
},
},
kataPerKata: {
semua: {
pattern: "/word",
},
spesifikSurah: {
pattern: "/word?surahId={surahId}",
contoh: "/word?surahId=1",
},
spesifikAyat: {
pattern: "/word?surahId={surahId}&ayahId={ayahId}",
contoh: "/word?surahId=1&ayahId=1",
},
},
},
doa: {
semua: {
pattern: "/doa",
},
spesifik: {
pattern: "/doa?source={source}",
source: "quran, hadits, pilihan, harian, ibadah, haji, lainnya",
contoh: "/doa?source=harian",
},
},
dzikir: {
pattern: "/dzikir?type={sumber}",
type: "pagi, sore, solat",
contoh: "/dzikir?type=pagi",
},
hadits: {
semua: {
pattern: "/hadits",
},
spesifik: {
pattern: "/hadits?nomor={nomor}",
contoh: "/hadits?nomor=1",
},
},
maintaner: "Otang45",
});
});
router.use("/quran/asbab", asbab);
router.use("/quran/asma", asma);
router.use("/quran/ayah", ayah);
router.use("/doa", doa);
router.use("/dzikir", dzikir);
router.use("/hadits", hadits);
router.use("/quran/juz", juz);
router.use("/quran/surah", surah);
router.use("/quran/tafsir", tafsir);
router.use("/quran/theme", theme);
router.use("/quran/word", word);
const closeDb = () => {
db.close((err) => {
if (err) {
console.error("Error closeing database.", err.message);
} else {
console.log("Database closed.");
}
process.exit(0);
});
};
process.on("SIGINT", closeDb);
process.on("SIGTERM", closeDb);
process.on("uncaughtException", (err) => {
console.log("Uncaught Exception: ", err);
closeDb();
});
module.exports = router;

37
routes/muslim/v1/juz.js Normal file
View File

@@ -0,0 +1,37 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
const juzId = req.query.id;
if (juzId != null) {
db.get("SELECT * FROM juz WHERE number = " + juzId, (err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: {} });
} else {
res.status(200).json({ status: 200, data: data });
}
});
} else {
db.all(
"SELECT * FROM juz ORDER BY CAST (number as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

37
routes/muslim/v1/surah.js Normal file
View File

@@ -0,0 +1,37 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
const surahId = req.query.id;
if (surahId != null) {
db.get("SELECT * FROM surah WHERE number = " + surahId, (err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: {} });
} else {
res.status(200).json({ status: 200, data: data });
}
});
} else {
db.all(
"SELECT * FROM surah ORDER BY CAST(number as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

View File

@@ -0,0 +1,37 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
const tafsirId = req.query.id;
if (tafsirId != null) {
db.get("SELECT * FROM tafsir WHERE id = " + tafsirId, (err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: {} });
} else {
res.status(200).json({ status: 200, data: data });
}
});
} else {
db.all(
"SELECT * FROM tafsir ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

37
routes/muslim/v1/theme.js Normal file
View File

@@ -0,0 +1,37 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
const themeId = req.query.id;
if (themeId != null) {
db.get("SELECT * FROM theme WHERE id = " + themeId, (err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: {} });
} else {
res.status(200).json({ status: 200, data: data });
}
});
} else {
db.all(
"SELECT * FROM theme ORDER BY CAST(id as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;

84
routes/muslim/v1/word.js Normal file
View File

@@ -0,0 +1,84 @@
const express = require("express");
const router = express.Router();
const db = require("../../../database/config");
router.get("/", async (req, res) => {
try {
db.all(
"SELECT * FROM word ORDER BY CAST(surah as INTEGER), CAST(ayah as INTEGER), CAST(word as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/surah", async (req, res) => {
try {
const surahId = req.query.id;
if (surahId != null) {
db.all(
"SELECT * FROM word WHERE surah = " +
surahId +
" ORDER BY CAST(surah as INTEGER), CAST(ayah as INTEGER), CAST(word as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res
.status(500)
.json({ status: 500, message: "Parameter di perlukan (id)." });
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
router.get("/ayah", async (req, res) => {
try {
const surahId = req.query.surahId;
const ayahId = req.query.ayahId;
if (surahId != null && ayahId != null) {
db.all(
"SELECT * FROM word WHERE surah = " +
surahId +
" AND ayah = " +
ayahId +
" ORDER BY CAST(surah as INTEGER), CAST(ayah as INTEGER), CAST(word as INTEGER) ASC",
(err, data) => {
if (err) {
res.status(500).json({ status: 500, message: err.message });
} else if (!data) {
res.status(404).json({ status: 404, data: [] });
} else {
res.status(200).json({ status: 200, data: data });
}
}
);
} else {
res.status(500).json({
status: 500,
message: "Parameter di perlukan (surahId, ayahId).",
});
}
} catch (error) {
res.status(500).json({ status: 500, message: error.message });
}
});
module.exports = router;