Skip to content

Commit

Permalink
Support page size spec and fetch all page flag
Browse files Browse the repository at this point in the history
  • Loading branch information
litencatt committed Jan 3, 2024
1 parent 5977e4b commit a5de34d
Showing 1 changed file with 54 additions and 24 deletions.
78 changes: 54 additions & 24 deletions src/commands/db/query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import * as notion from '../../notion'
import {
PageObjectResponse,
DatabaseObjectResponse,
QueryDatabaseResponse,
QueryDatabaseParameters,
} from '@notionhq/client/build/src/api-endpoints'
import * as fs from 'fs'
import * as path from 'path'
Expand All @@ -18,6 +20,7 @@ import {
getDbTitle,
getPageTitle,
} from '../../helper'
import { client } from '../../notion'

const prompts = require('prompts')

Expand Down Expand Up @@ -87,15 +90,31 @@ export default class DbQuery extends Command {
const { flags, args } = await this.parse(DbQuery)

let databaseId = args.database_id
let queryParams: QueryDatabaseParameters
try {
// If args is set, run as non-interactive mode.
// If args(database_id) is set, run as non-interactive mode.
if (Object.keys(args).length !== 0) {
if (flags.rawFilter != undefined) {
filter = JSON.parse(flags.rawFilter)
const filter = JSON.parse(flags.rawFilter)
queryParams = {
database_id: databaseId,
filter: filter as QueryDatabaseParameters['filter'],
page_size: flags.pageSize,
}
} else if (flags.fileFilter != undefined) {
const fp = path.join('./', flags.fileFilter)
const fj = fs.readFileSync(fp, { encoding: 'utf-8' })
filter = JSON.parse(fj)
const filter = JSON.parse(fj)
queryParams = {
database_id: databaseId,
filter: filter as QueryDatabaseParameters['filter'],
page_size: flags.pageSize,
}
} else {
queryParams = {
database_id: databaseId,
page_size: flags.pageSize,
}
}
} else {
// interactive mode start
Expand Down Expand Up @@ -255,6 +274,12 @@ export default class DbQuery extends Command {
}
}

queryParams = {
database_id: databaseId,
filter: filter as QueryDatabaseParameters['filter'],
page_size: flags.pageSize,
}

// save filter to file
if (filter != undefined) {
console.log('')
Expand Down Expand Up @@ -290,32 +315,37 @@ export default class DbQuery extends Command {
this.error(e, { exit: 1 })
}

let pages = []
if (flags.pageAll) {
pages = await notion.fetchAllPagesInDB(databaseId, queryParams.filter)
} else {
const res = await client.databases.query(queryParams)
pages.push(...res.results)
}

const res = await notion.queryDb(databaseId, filter)

// output
if (flags.raw) {
outputRawJson(res)
outputRawJson(pages)
this.exit(0)
}

const columns = {
title: {
get: (row: DatabaseObjectResponse | PageObjectResponse) => {
if (row.object == 'database') {
return getDbTitle(row)
}
return getPageTitle(row)
} else {
const columns = {
title: {
get: (row: DatabaseObjectResponse | PageObjectResponse) => {
if (row.object == 'database') {
return getDbTitle(row)
}
return getPageTitle(row)
},
},
},
object: {},
id: {},
url: {},
}
const options = {
printLine: this.log.bind(this),
...flags,
object: {},
id: {},
url: {},
}
const options = {
printLine: this.log.bind(this),
...flags,
}
ux.table(pages, columns, options)
}
ux.table(res, columns, options)
}
}

0 comments on commit a5de34d

Please sign in to comment.