74 lines
2.4 KiB
JavaScript
74 lines
2.4 KiB
JavaScript
import * as SQLite from "expo-sqlite";
|
|
const db = SQLite.openDatabase("lnreader.db");
|
|
|
|
const getLibraryQuery = (sort, filter) => `
|
|
SELECT novels.*, C.chaptersUnread, D.chaptersDownloaded
|
|
FROM novels
|
|
LEFT JOIN (
|
|
SELECT chapters.novelId, COUNT(*) AS chaptersUnread
|
|
FROM chapters
|
|
WHERE chapters.read = 0
|
|
GROUP BY chapters.novelId
|
|
) AS C
|
|
ON novels.novelId = C.novelId
|
|
LEFT JOIN (
|
|
SELECT chapters.novelId, COUNT(*) AS chaptersDownloaded
|
|
FROM chapters
|
|
WHERE chapters.downloaded = 1
|
|
GROUP BY chapters.novelId
|
|
) AS D
|
|
ON novels.novelId = D.novelId
|
|
WHERE novels.followed = 1 ${filter ? "AND " + filter : ""}
|
|
${sort ? "ORDER BY " + sort : ""}
|
|
`;
|
|
|
|
export const getLibrary = (sort, filter) => {
|
|
return new Promise((resolve, reject) =>
|
|
db.transaction((tx) => {
|
|
tx.executeSql(
|
|
getLibraryQuery(sort, filter),
|
|
null,
|
|
(txObj, { rows: { _array } }) => {
|
|
// console.log(_array);
|
|
resolve(_array);
|
|
},
|
|
(txObj, error) => console.log("Error ", error)
|
|
);
|
|
})
|
|
);
|
|
};
|
|
|
|
// const searchLibraryQuery = ``;
|
|
|
|
export const searchLibrary = (searchText) => {
|
|
return new Promise((resolve, reject) => {
|
|
db.transaction((tx) => {
|
|
tx.executeSql(
|
|
`
|
|
SELECT novels.*, C.chaptersUnread, D.chaptersDownloaded
|
|
FROM novels
|
|
LEFT JOIN (
|
|
SELECT chapters.novelId, COUNT(*) AS chaptersUnread
|
|
FROM chapters
|
|
WHERE chapters.read = 0
|
|
GROUP BY chapters.novelId
|
|
) AS C
|
|
ON novels.novelId = C.novelId
|
|
LEFT JOIN (
|
|
SELECT chapters.novelId, COUNT(*) AS chaptersDownloaded
|
|
FROM chapters
|
|
WHERE chapters.downloaded = 1
|
|
GROUP BY chapters.novelId
|
|
) AS D
|
|
ON novels.novelId = D.novelId
|
|
WHERE novels.followed = 1 AND novelName LIKE '%${searchText}%'
|
|
GROUP BY novels.novelId
|
|
`,
|
|
null,
|
|
(txObj, { rows: { _array } }) => resolve(_array),
|
|
(txObj, error) => console.log("Error ", error)
|
|
);
|
|
});
|
|
});
|
|
};
|