Skip to content

Commit

Permalink
Append arbitraries expressions to Zenodo queries
Browse files Browse the repository at this point in the history
  • Loading branch information
thewilkybarkid committed Jun 10, 2024
1 parent b6eafdf commit dd12c3b
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
8 changes: 7 additions & 1 deletion src/zenodo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ import {
fromUrl,
} from './types/preprint-id'
import type { ProfileId } from './types/profile-id'
import type { NonEmptyString } from './types/string'
import { isSubfieldId } from './types/subfield'
import type { User } from './user'
import type { NewPrereview } from './write-review'
Expand Down Expand Up @@ -120,16 +121,19 @@ export const getRecentPrereviewsFromZenodo = ({
field,
language,
page,
query,
}: {
field?: FieldId
language?: LanguageCode
page: number
query?: NonEmptyString
}) =>
pipe(
RTE.Do,
RTE.let('currentPage', () => page),
RTE.let('field', () => field),
RTE.let('language', () => language),
RTE.let('query', () => query),
RTE.filterOrElse(
({ currentPage }) => currentPage > 0,
() => 'not-found' as const,
Expand All @@ -146,6 +150,7 @@ export const getRecentPrereviewsFromZenodo = ({
q: [
field ? `custom_fields.legacy\\:subjects.identifier:"https://openalex.org/fields/${field}"` : '',
language ? `language:"${iso6391To3(language)}"` : '',
query ?? '',
]
.filter(a => a !== '')
.join(' AND '),
Expand Down Expand Up @@ -192,10 +197,11 @@ export const getRecentPrereviewsFromZenodo = ({
match(error)
.with('not-found', identity)
.otherwise(() => 'unavailable' as const),
({ currentPage, recentPrereviews, field, language, records }) => ({
({ currentPage, recentPrereviews, field, language, records, query }) => ({
currentPage,
field,
language,
query,
recentPrereviews,
totalPages: Math.ceil(records.hits.total / 5),
}),
Expand Down
10 changes: 7 additions & 3 deletions test/zenodo.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,10 @@ describe('getRecentPrereviewsFromZenodo', () => {
fc.integer({ min: 1 }),
fc.option(fc.fieldId(), { nil: undefined }),
fc.option(fc.languageCode(), { nil: undefined }),
fc.option(fc.nonEmptyString(), { nil: undefined }),
fc.preprintTitle(),
fc.preprintTitle(),
])('when the PREreviews can be loaded', async (page, field, language, preprint1, preprint2) => {
])('when the PREreviews can be loaded', async (page, field, language, query, preprint1, preprint2) => {
const records: Records = {
hits: {
total: 2,
Expand Down Expand Up @@ -183,7 +184,7 @@ describe('getRecentPrereviewsFromZenodo', () => {
},
}

const actual = await _.getRecentPrereviewsFromZenodo({ field, language, page })({
const actual = await _.getRecentPrereviewsFromZenodo({ field, language, page, query })({
clock: SystemClock,
fetch: fetchMock.sandbox().getOnce(
{
Expand All @@ -195,7 +196,7 @@ describe('getRecentPrereviewsFromZenodo', () => {
resource_type: 'publication::publication-peerreview',
q: `${
field ? `custom_fields.legacy\\:subjects.identifier:"https://openalex.org/fields/${field}"` : ''
}${field && language ? ' AND ' : ''}${language ? `language:"${iso6391To3(language)}"` : ''}`,
}${field && language ? ' AND ' : ''}${language ? `language:"${iso6391To3(language)}"` : ''}${(field || language) && query ? ' AND ' : ''}${query ?? ''}`,
},
},
{
Expand All @@ -217,6 +218,7 @@ describe('getRecentPrereviewsFromZenodo', () => {
currentPage: page,
field,
language,
query,
recentPrereviews: [
{
club: undefined,
Expand Down Expand Up @@ -336,6 +338,7 @@ describe('getRecentPrereviewsFromZenodo', () => {
currentPage: page,
field: undefined,
language: undefined,
query: undefined,
recentPrereviews: [
{
club: undefined,
Expand Down Expand Up @@ -477,6 +480,7 @@ describe('getRecentPrereviewsFromZenodo', () => {
currentPage: page,
field: undefined,
language: undefined,
query: undefined,
recentPrereviews: [
{
club: undefined,
Expand Down

0 comments on commit dd12c3b

Please sign in to comment.