diff --git a/data/appUser.db b/data/appUser.db index dd835e3..ed60910 100644 Binary files a/data/appUser.db and b/data/appUser.db differ diff --git a/src/components/NavBar.tsx b/src/components/NavBar.tsx index 1f5f1bc..7e065e9 100644 --- a/src/components/NavBar.tsx +++ b/src/components/NavBar.tsx @@ -11,13 +11,13 @@ export default function NavBar() {
-
- 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 () => {