50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
const db = require('./db')
|
|
|
|
const DemoPaginacija = {}
|
|
|
|
// Metoda za generacijo demo podatkov.
|
|
DemoPaginacija.initDemoData = async () => {
|
|
await db.query(`
|
|
CREATE TABLE IF NOT EXISTS demo_paginacija (zanimivo TEXT, nezanimivo1 TEXT, nezanimivo2 TEXT);
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF (SELECT COUNT(*) FROM demo_paginacija) = 0 THEN
|
|
FOR stevec IN 1..9993 LOOP
|
|
INSERT INTO demo_paginacija VALUES ('vrednost' || stevec, 'brezveze', 'tega res ne rabimo');
|
|
END LOOP;
|
|
END IF;
|
|
END $$`)
|
|
}
|
|
|
|
// Metoda za poizvedbo demo podatkov za določeno stran.
|
|
DemoPaginacija.fetch = async (resultsPerPage, page) => {
|
|
const {
|
|
rows: [{ result }]
|
|
} = await db.query(
|
|
`
|
|
SELECT jsonb_build_object(
|
|
'pages_total', (
|
|
SELECT CEIL(COUNT(*) / $1::float)
|
|
FROM demo_paginacija
|
|
),
|
|
'results', ARRAY(
|
|
SELECT jsonb_build_object(
|
|
'zanimivo', zanimivo,
|
|
'nezanimivo1', nezanimivo1,
|
|
'nezanimivo2', nezanimivo2
|
|
)
|
|
FROM demo_paginacija
|
|
LIMIT $1
|
|
OFFSET $2
|
|
)
|
|
) result
|
|
`,
|
|
[resultsPerPage, resultsPerPage * (page - 1)]
|
|
)
|
|
|
|
return result
|
|
}
|
|
|
|
module.exports = DemoPaginacija
|