Set up the backend for Reference Localities

This commit is contained in:
karilint
2025-03-10 17:27:07 +02:00
committed by juhanikat
parent 510240a4e2
commit e521ab672a
3 changed files with 33 additions and 0 deletions
+8
View File
@@ -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]),
+18
View File
@@ -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
+7
View File
@@ -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,