From 23ef8d98035b176bd64f379883934bd541aa27c6 Mon Sep 17 00:00:00 2001 From: Kar Date: Sun, 21 May 2023 23:40:30 +0530 Subject: [PATCH] pagination --- data/appUser.db | Bin 24576 -> 24576 bytes src/components/NavBar.tsx | 14 ++--- src/pages/api/listUsers copy.js | 91 ++++++++++++++++++++++++++++++++ src/pages/api/listUsers.js | 26 +++++++-- src/pages/user-list.jsx | 40 ++++++++++---- 5 files changed, 149 insertions(+), 22 deletions(-) create mode 100644 src/pages/api/listUsers copy.js diff --git a/data/appUser.db b/data/appUser.db index dd835e3c7e2a00b273b798b5a474611d8f28917a..ed60910d3814eadbc0a4f8422633df9c69e2f0d2 100644 GIT binary patch delta 1878 zcmai!OH30%7{_P(fbH&1>$2FU#X<>mMGP7=En)kD&|)Hxc<@PrqKM@!D6e?xo=iN^ zOrnXJcf znJR(P0DuDg-~FYl>X_--&KIX^CarjZaqMK53miK_E1%>BZ2j!8HDmQyQsxbFvuVau z%uInT(2-Vai&R&)8@S7$8%pKnP=XZ@1tW2^7DZD7da2$ONCq(ZJy0R3Aqn==k=(TP;jG;d%TolBz@gaB z!*-#MAK}JrW9$R0Vx{Gg`Mddo>5ZwBdB!jxiB*(gGkBVn8~_#4dP+wnsX`Q8F%~sM z6s)Y`$MSPIT%bjk@NXAK;#nsO#Qa$Cdf8MA_`MD=L2EBL91g!ImOvJTqK()EuWXvp zKR_EoKER^SK?Pe=FPocnoHogT`(g^V3*#FEhqQ5q(oA!i}NX< zU|$<#tB2r_w%9OT(~=z~xIp_(_HNV?UxIfg!PZaOhER3b!>}k3UOmnYkmb>K&%R)& zZTmL62KgjmhpwTMVK<)95Lp$3RSJ@dRDcV?0imv=}pE`5p}KDBVK>exI(8fZwAlxq!>I zheUfgLP3Vhqg_qTM{r@7#*L=z<%D~y<9GApT2A?UK!0=W>pI?(AJ?>W Wbn03r|F0zuoA$y=cj)N{wEPP&CsaBB delta 209 zcmZoTz}Rqrae_2&9|Hpe8x%85)G%l4+n6w4-!g`meGLOA(-&qg4z36M%xs(Z
-
- Add School | - School List| - Add User | - Upload User | - User List | - +
+ Add School + School List + Add User + Upload User + User List + signOut()}>Sign out
diff --git a/src/pages/api/listUsers copy.js b/src/pages/api/listUsers copy.js new file mode 100644 index 0000000..2c8f243 --- /dev/null +++ b/src/pages/api/listUsers copy.js @@ -0,0 +1,91 @@ +import csv from 'csv-parser'; +import fs from 'fs'; +import sqlite3 from 'sqlite3'; + +export default function handler(req,res) { + +console.log(req.body.school) +// const { +// query: { name, keyword }, +// method, +// } = req; +// console.log(name, keyword, method); + + const DB_NAME = 'data/appUser.db'; + const TABLE_NAME = 'user'; + + // Open a connection to the SQLite database + const db = new sqlite3.Database(DB_NAME); + + const query = `SELECT * FROM ${TABLE_NAME}`; + + function getAllRows(tableName) { + return new Promise((resolve, reject) => { + + db.get(`SELECT COUNT(*) AS count FROM ${tableName}`, (err, row) => { + if (err) { + console.error(err.message); + return; + } + + // Access the row count + const rowCount = row.count; + // console.log(`Row count: ${rowCount}`); + const pageNo=0; + const perPage=5; + let noOfPage= Math.floor(rowCount/perPage); if((rowCount % perPage) !=0) noOfPage++; + console.log(`noOfPage: ${noOfPage}`); + const offset=(rowCount-5*perPage*pageNo)-1; + const sql = `SELECT * FROM ${tableName} ORDER BY id DESC LIMIT 5 OFFSET ${rowCount-1}`; + db.all(sql, [], (err, rows) => { + if (err) { + reject(err); + return; + } + const data = rows; + resolve(data); + }); + }); + + + }); + }; + async function doSomething() { + try { + const returnData = await getAllRows('user'); + res.setHeader('Content-Type', 'application/json') + res.status(200).json(returnData) + // console.log(data); + } catch (err) { + console.error(err); + } + } + + doSomething(); +// const returnData = getAllRows('user'); +// console.log(getAllRows('user')); +// const returnData= db.run('SELECT * FROM user'); + +// fs.createReadStream('data/user.csv') +// .pipe(csv()) +// .on('data', (data) => { +// const values = Object.values(data); +// const placeholders = values.map(() => '?').join(','); +// const sql = `INSERT INTO ${TABLE_NAME} (${Object.keys(data).join(',')}) VALUES (${placeholders})`; +// db.run(sql, values, (err) => { +// if (err) { +// console.error(err); +// } +// }); +// }) +// .on('end', () => { +// console.log(`Data inserted successfully into table ${TABLE_NAME}`); + +// // Close the database connection +// db.close(); +// }); + + + +} + diff --git a/src/pages/api/listUsers.js b/src/pages/api/listUsers.js index d78ecaa..dc02289 100644 --- a/src/pages/api/listUsers.js +++ b/src/pages/api/listUsers.js @@ -19,22 +19,40 @@ console.log(req.body.school) const query = `SELECT * FROM ${TABLE_NAME}`; - function getAllRows(tableName) { + function getAllRows(tableName, pageNumber, pageSize) { + const offset = (pageNumber - 1) * pageSize; + const sql = `SELECT * FROM ${tableName} LIMIT ${pageSize} OFFSET ${offset}`; + return new Promise((resolve, reject) => { - const sql = `SELECT * FROM ${tableName}`; db.all(sql, [], (err, rows) => { if (err) { reject(err); return; } - const data = rows; + db.get(`SELECT COUNT(*) AS count FROM ${tableName}`, (err, row) => { + if (err) { + console.error(err.message); + return; + } + + // Access the row count + const rowCount = row.count; + console.log(`Row count: ${rowCount}`); + const maxPageNumber = Math.ceil(rowCount / pageSize); + const pages = Array.from({ length: maxPageNumber }, (_, index) => index + 1); + let tData={data:rows,maxPageNumber:pages} + const data = tData; resolve(data); + }); + // let tData={data:rows,page:7} + // const data = tData; + // resolve(data); }); }); }; async function doSomething() { try { - const returnData = await getAllRows('user'); + const returnData = await getAllRows('user',4,10); res.setHeader('Content-Type', 'application/json') res.status(200).json(returnData) // console.log(data); diff --git a/src/pages/user-list.jsx b/src/pages/user-list.jsx index a30a2c2..35d48e4 100644 --- a/src/pages/user-list.jsx +++ b/src/pages/user-list.jsx @@ -3,11 +3,13 @@ import Link from 'next/link' import NavBar from '../components/NavBar' export default function Modal() { const [user, setUser] = useState([]); + const [maxPageNumber, setMaxPageNumber] = useState([]); const fetchData = async () => { const response = await fetch("/api/listUsers"); const data = await response.json(); - // console.log(data) - return setUser(data); + console.log(data) + setMaxPageNumber(data.maxPageNumber); + return setUser(data.data); } // console.log(user) @@ -21,6 +23,28 @@ const fetchData = async () => {