Skip to content

Commit d876590

Browse files
committed
feat: switch to dynamic elasticsearch index flag
1 parent ec97fe5 commit d876590

File tree

6 files changed

+57
-34
lines changed

6 files changed

+57
-34
lines changed

cypress/component/DataSearch/dataset_search_table.spec.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const datasets = [
2323
]
2424

2525
const assembleFullQuery = (isSigningOfficial, isInstitutionQuery, subQuery) => {
26-
const base = [{ match: { _type: 'dataset' } }, { exists: { field: 'study' } }]
26+
const base = []
2727
if (!isSigningOfficial || !isInstitutionQuery) base.push({ term: { 'study.publicVisibility': true } })
2828
if (subQuery) base.push(subQuery)
2929
return { from: 0, size: 10000, query: { bool: { must: base } } }

src/components/study_details/StudyDetails.tsx

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { EnumerateSnapshotModel, SnapshotSummaryModel } from 'src/types/tdrModel
1212
import { DatasetSearchFooter } from 'src/components/data_search/DatasetSearchFooter'
1313
import { applyForAccess } from 'src/utils/accessUtils'
1414
import { usePageTitle } from 'src/hooks/usePageTitle'
15+
import { getFlagEsIndexKeyName } from 'src/libs/ajax/FeatureFlag'
1516

1617
interface SectionProps {
1718
style?: React.CSSProperties
@@ -84,35 +85,39 @@ export const StudyDetails = () => {
8485
}
8586

8687
useEffect(() => {
87-
const query = {
88-
from: 0,
89-
size: 10000,
90-
query: {
91-
bool: {
92-
must: [
93-
{
94-
match: {
95-
_type: 'dataset',
88+
const init = async () => {
89+
const esIndexKeyName = await getFlagEsIndexKeyName()
90+
const query = {
91+
from: 0,
92+
size: 10000,
93+
query: {
94+
bool: {
95+
must: [
96+
{
97+
match: {
98+
[esIndexKeyName]: 'dataset',
99+
},
96100
},
97-
},
98-
{
99-
match: {
100-
'study.studyId': studyId,
101+
{
102+
match: {
103+
'study.studyId': studyId,
104+
},
101105
},
102-
},
103-
{
104-
exists: {
105-
field: 'study',
106+
{
107+
exists: {
108+
field: 'study',
109+
},
106110
},
107-
},
108-
],
111+
],
112+
},
109113
},
110-
},
114+
}
115+
DataSet.searchDatasetIndex(query).then((datasets) => {
116+
setDatasets(datasets)
117+
setLoading(false)
118+
})
111119
}
112-
DataSet.searchDatasetIndex(query).then((datasets) => {
113-
setDatasets(datasets)
114-
setLoading(false)
115-
})
120+
init()
116121
}, [studyId, setDatasets])
117122

118123
useEffect(() => {

src/pages/DatasetSearch.jsx

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ import { Metrics } from 'src/libs/ajax/Metrics'
1010
import eventList from 'src/libs/events'
1111
import { useParams, useNavigate } from 'react-router-dom'
1212
import { usePageTitle } from 'src/hooks/usePageTitle'
13-
import { getFlagNhgriDacId } from 'src/libs/ajax/FeatureFlag.ts'
13+
import { getFlagEsIndexKeyName, getFlagNhgriDacId } from 'src/libs/ajax/FeatureFlag'
1414

15-
const assembleFullQuery = (isSigningOfficial, isInstitutionQuery, subQuery, nhgriDacId) => {
15+
const assembleFullQuery = (isSigningOfficial, isInstitutionQuery, subQuery, nhgriDacId, esIndexKeyName) => {
1616
const queryChunks = [
1717
{
1818
match: {
19-
_type: 'dataset',
19+
[esIndexKeyName]: 'dataset',
2020
},
2121
},
2222
{
@@ -93,6 +93,7 @@ export const DatasetSearch = (props) => {
9393
const [queryState, setQueryState] = useState(query)
9494
const [loading, setLoading] = useState(true)
9595
const [nhgriDacId, setNhgriDacId] = useState(null)
96+
const [esIndexKeyName, setEsIndexKeyName] = useState(null)
9697
const user = Storage.getCurrentUser()
9798

9899
const isSigningOfficial = user.isSigningOfficial
@@ -112,14 +113,25 @@ export const DatasetSearch = (props) => {
112113

113114
// Memoize fullQuery to prevent recreation on every render
114115
const fullQuery = useMemo(
115-
() => assembleFullQuery(isSigningOfficial, isInstitutionQuery, version.query, nhgriDacId),
116-
[isSigningOfficial, isInstitutionQuery, version.query, nhgriDacId],
116+
() => {
117+
if (!esIndexKeyName) return null
118+
return assembleFullQuery(isSigningOfficial, isInstitutionQuery, version.query, nhgriDacId, esIndexKeyName)
119+
},
120+
[isSigningOfficial, isInstitutionQuery, version.query, nhgriDacId, esIndexKeyName],
117121
)
118122

119123
const isInstitutionSet = institutionId === undefined && isInstitutionQuery
120124

121125
const hasChangedPage = query !== queryState
122126

127+
useEffect(() => {
128+
const init = async () => {
129+
const keyName = await getFlagEsIndexKeyName()
130+
setEsIndexKeyName(keyName)
131+
}
132+
init()
133+
}, [])
134+
123135
useEffect(() => {
124136
const init = async () => {
125137
if (key === '/datalibrary') {
@@ -137,7 +149,7 @@ export const DatasetSearch = (props) => {
137149

138150
useEffect(() => {
139151
const init = async () => {
140-
if (loading || hasChangedPage) {
152+
if ((loading || hasChangedPage) && fullQuery) {
141153
if (isInstitutionSet) {
142154
Notifications.showError({ text: 'You must set an institution in your profile to view the `myinstitution` data library' })
143155
navigate('/profile')

src/pages/DatasetStatistics.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { getDataLocationLink } from 'src/utils/DataLocationUtils'
1616
import { createDataUseDisplay } from 'src/utils/DataUseUtils'
1717
import { useParams, useNavigate } from 'react-router-dom'
1818
import { usePageTitle } from 'src/hooks/usePageTitle'
19+
import { getFlagEsIndexKeyName } from 'src/libs/ajax/FeatureFlag'
1920

2021
const LINE = <div style={{ borderTop: '1px solid #BABEC1', height: 0 }} />
2122

@@ -94,12 +95,13 @@ export default function DatasetStatistics() {
9495
useEffect(() => {
9596
const init = async () => {
9697
try {
98+
const esIndexKeyName = await getFlagEsIndexKeyName()
9799
const datasetTerms: DatasetTerm[] = await DataSet.searchDatasetIndex({ query: {
98100
bool: {
99101
must: [
100102
{
101103
match: {
102-
_type: 'dataset',
104+
[esIndexKeyName]: 'dataset',
103105
},
104106
},
105107
{

src/pages/researcher_console/DatasetSubmissions.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { Storage } from 'src/libs/storage'
1010
import styles from './DatasetTerms.module.css'
1111
import TableHeaderSection from 'src/components/TableHeaderSection'
1212
import AddObjectButton from 'src/components/AddObjectButton.tsx'
13+
import { getFlagEsIndexKeyName } from 'src/libs/ajax/FeatureFlag'
1314

1415
export default function DatasetSubmissions() {
1516
const [terms, setTerms] = useState([])
@@ -23,6 +24,7 @@ export default function DatasetSubmissions() {
2324
const init = async () => {
2425
const user = Storage.getCurrentUser()
2526
setCurrentUser(user)
27+
const esIndexKeyName = await getFlagEsIndexKeyName()
2628
const query = {
2729
from: 0,
2830
size: 10000,
@@ -31,7 +33,7 @@ export default function DatasetSubmissions() {
3133
must: [
3234
{
3335
match: {
34-
_type: 'dataset',
36+
[esIndexKeyName]: 'dataset',
3537
},
3638
},
3739
{

src/utils/BucketUtils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
import { Notifications } from 'src/libs/utils'
2121
import { extractError } from 'src/utils/ErrorUtils'
2222
import { ControlledAccessType } from 'src/libs/dataUseTranslation'
23+
import { getFlagEsIndexKeyName } from 'src/libs/ajax/FeatureFlag'
2324

2425
export interface Bucket {
2526
key: string
@@ -334,6 +335,7 @@ const createRpVoteStructureFromBuckets = (buckets: Bucket[]): Array<{ rp: VoteGr
334335
* data use information so the UI doesn't have to reprocess it.
335336
*/
336337
const getDatasetTerms = async (datasets: Dataset[]): Promise<DatasetTerm[]> => {
338+
const esIndexKeyName = await getFlagEsIndexKeyName()
337339
const datasetQuery = DataSet.searchDatasetIndex({
338340
from: 0,
339341
size: 10000,
@@ -342,7 +344,7 @@ const getDatasetTerms = async (datasets: Dataset[]): Promise<DatasetTerm[]> => {
342344
must: [
343345
{
344346
match: {
345-
_type: 'dataset',
347+
[esIndexKeyName]: 'dataset',
346348
},
347349
},
348350
{

0 commit comments

Comments
 (0)