mirror of
https://github.com/nowcommunity/nowdatabase.git
synced 2026-10-12 19:13:52 +03:00
Set up the backend for Reference Localities
This commit is contained in:
@@ -5,6 +5,7 @@ import {
|
||||
getReferenceTypes,
|
||||
getReferenceAuthors,
|
||||
getReferenceJournals,
|
||||
getReferenceLocalities,
|
||||
validateEntireReference,
|
||||
getAuthorsOfReference,
|
||||
getJournalById,
|
||||
@@ -12,6 +13,7 @@ import {
|
||||
import { requireOneOf } from '../middlewares/authorizer'
|
||||
import { Role, EditMetaData, ReferenceDetailsType, EditDataType } from '../../../frontend/src/shared/types'
|
||||
import { deleteReference, writeReference } from '../services/write/reference'
|
||||
import { fixBigInt } from '../utils/common'
|
||||
|
||||
const router = Router()
|
||||
|
||||
@@ -57,6 +59,12 @@ router.get('/:id', async (req, res) => {
|
||||
return res.status(200).send(reference)
|
||||
})
|
||||
|
||||
router.get('/localities/:id', async (req, res) => {
|
||||
const id = req.params.id
|
||||
const localities = await getReferenceLocalities(id)
|
||||
return res.status(200).send(fixBigInt(localities))
|
||||
})
|
||||
|
||||
router.put(
|
||||
'/',
|
||||
requireOneOf([Role.Admin, Role.EditUnrestricted]),
|
||||
|
||||
@@ -56,6 +56,24 @@ export const getReferenceDetails = async (id: number) => {
|
||||
return result
|
||||
}
|
||||
|
||||
// Fetch localities that have been updated by the given reference id
|
||||
export const getReferenceLocalities = async (id: string) => {
|
||||
// TODO: Check if user has access
|
||||
const result = await nowDb.now_loc.findMany({
|
||||
where: {
|
||||
now_lau: {
|
||||
some: {
|
||||
now_lr: {
|
||||
some: { rid: parseInt(id) }
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
export const getReferenceTypes = async () => {
|
||||
const referenceTypes = await nowDb.ref_ref_type.findMany({ include: { ref_field_name: true } })
|
||||
return referenceTypes
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { api } from './api'
|
||||
import {
|
||||
EditDataType,
|
||||
Locality,
|
||||
Reference,
|
||||
ReferenceAuthorType,
|
||||
ReferenceDetailsType,
|
||||
@@ -22,6 +23,11 @@ const referencesApi = api.injectEndpoints({
|
||||
}),
|
||||
providesTags: result => (result ? [{ type: 'reference', id: result.rid }] : []),
|
||||
}),
|
||||
getReferenceLocalities: builder.query<Locality[], string>({
|
||||
query: id => ({
|
||||
url: `/reference/localities/${id}`,
|
||||
}),
|
||||
}),
|
||||
getReferenceTypes: builder.query<ReferenceType[], void>({
|
||||
query: () => ({
|
||||
url: 'reference/types',
|
||||
@@ -58,6 +64,7 @@ const referencesApi = api.injectEndpoints({
|
||||
export const {
|
||||
useGetAllReferencesQuery,
|
||||
useGetReferenceDetailsQuery,
|
||||
useGetReferenceLocalitiesQuery,
|
||||
useGetReferenceTypesQuery,
|
||||
useGetReferenceAuthorsQuery,
|
||||
useGetReferenceJournalsQuery,
|
||||
|
||||
Reference in New Issue
Block a user