From 9a2543bec6eca4fa432494465f97e306e4e3c921 Mon Sep 17 00:00:00 2001 From: arttu Date: Sun, 8 Dec 2024 15:10:56 +0200 Subject: [PATCH] move validators to shared --- README.md | 2 +- backend/dev.Dockerfile | 2 +- backend/src/services/locality.ts | 4 ++-- backend/src/services/reference.ts | 4 ++-- backend/src/services/species.ts | 4 ++-- backend/src/services/timeBound.ts | 4 ++-- backend/src/services/timeUnit.ts | 4 ++-- documentation/components/frontend.md | 2 +- .../functionality/put_requests_for_db_entries.md | 2 +- .../components/DetailView/Context/DetailContext.tsx | 2 +- frontend/src/components/DetailView/DetailView.tsx | 2 +- .../components/DetailView/common/checkFieldErrors.tsx | 2 +- frontend/src/components/DetailView/components.tsx | 2 +- frontend/src/components/Locality/LocalityDetails.tsx | 2 +- frontend/src/components/Locality/Tabs/LocalityTab.tsx | 2 +- frontend/src/components/Reference/ReferenceDetails.tsx | 2 +- frontend/src/components/Species/SpeciesDetails.tsx | 2 +- frontend/src/components/TimeBound/TimeBoundDetails.tsx | 10 +++++----- frontend/src/components/TimeUnit/TimeUnitDetails.tsx | 2 +- frontend/src/{ => shared}/validators/README.md | 0 frontend/src/{ => shared}/validators/calc.ts | 0 frontend/src/{ => shared}/validators/countryList.ts | 0 frontend/src/{ => shared}/validators/locality.ts | 2 +- frontend/src/{ => shared}/validators/reference.ts | 2 +- frontend/src/{ => shared}/validators/species.ts | 2 +- frontend/src/{ => shared}/validators/timeBound.ts | 2 +- frontend/src/{ => shared}/validators/timeUnit.ts | 2 +- frontend/src/{ => shared}/validators/validator.ts | 0 28 files changed, 33 insertions(+), 33 deletions(-) rename frontend/src/{ => shared}/validators/README.md (100%) rename frontend/src/{ => shared}/validators/calc.ts (100%) rename frontend/src/{ => shared}/validators/countryList.ts (100%) rename frontend/src/{ => shared}/validators/locality.ts (98%) rename frontend/src/{ => shared}/validators/reference.ts (99%) rename frontend/src/{ => shared}/validators/species.ts (92%) rename frontend/src/{ => shared}/validators/timeBound.ts (89%) rename frontend/src/{ => shared}/validators/timeUnit.ts (96%) rename frontend/src/{ => shared}/validators/validator.ts (100%) diff --git a/README.md b/README.md index 731ffefd..37e2b02f 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ Docker: :memo: [Frontend](documentation/components/frontend.md) Explanation of the frontend logic and how to add views -:mag_right: [Validators](frontend/src/validators/) The [readme](frontend/src/validators/README.md) explains how validators are written +:mag_right: [Validators](frontend/src/shared/validators/) The [readme](frontend/src/shared/validators/README.md) explains how validators are written :mag_right: [Class diagram](documentation/class_diagram.md) See the relations of relevant tables. Notice that it omits some unimportant tables and does not show most columns. diff --git a/backend/dev.Dockerfile b/backend/dev.Dockerfile index 4112eed1..e5ad361f 100644 --- a/backend/dev.Dockerfile +++ b/backend/dev.Dockerfile @@ -8,7 +8,7 @@ RUN npm i -g npm USER node WORKDIR /usr/src/app -RUN mkdir -p /usr/src/app/frontend/src/validators +RUN mkdir -p /usr/src/app/frontend/src/shared/validators COPY --chown=node ./backend/package.json backend/ COPY --chown=node ./backend/package-lock.json backend/ diff --git a/backend/src/services/locality.ts b/backend/src/services/locality.ts index 1c3696ff..9c45d205 100644 --- a/backend/src/services/locality.ts +++ b/backend/src/services/locality.ts @@ -1,7 +1,7 @@ import { EditDataType, EditMetaData, LocalityDetailsType, User } from '../../../frontend/src/shared/types' import { Role } from '../../../frontend/src/types' -import { validateLocality } from '../../../frontend/src/validators/locality' -import { ValidationObject, referenceValidator } from '../../../frontend/src/validators/validator' +import { validateLocality } from '../../../frontend/src/shared/validators/locality' +import { ValidationObject, referenceValidator } from '../../../frontend/src/shared/validators/validator' import Prisma from '../../prisma/generated/now_test_client' import { AccessError } from '../middlewares/authorizer' import { fixBigInt } from '../utils/common' diff --git a/backend/src/services/reference.ts b/backend/src/services/reference.ts index 3fa107e9..737be1b1 100644 --- a/backend/src/services/reference.ts +++ b/backend/src/services/reference.ts @@ -1,7 +1,7 @@ import { nowDb } from '../utils/db' import { EditDataType, ReferenceDetailsType } from '../../../frontend/src/shared/types' -import { ValidationObject } from '../../../frontend/src/validators/validator' -import { validateReference } from '../../../frontend/src/validators/reference' +import { ValidationObject } from '../../../frontend/src/shared/validators/validator' +import { validateReference } from '../../../frontend/src/shared/validators/reference' import Prisma from '../../prisma/generated/now_test_client' export const getAllReferences = async () => { diff --git a/backend/src/services/species.ts b/backend/src/services/species.ts index 5cf07187..2d43c067 100644 --- a/backend/src/services/species.ts +++ b/backend/src/services/species.ts @@ -1,6 +1,6 @@ import { EditDataType, EditMetaData, SpeciesDetailsType } from '../../../frontend/src/shared/types' -import { validateSpecies } from '../../../frontend/src/validators/species' -import { ValidationObject, referenceValidator } from '../../../frontend/src/validators/validator' +import { validateSpecies } from '../../../frontend/src/shared/validators/species' +import { ValidationObject, referenceValidator } from '../../../frontend/src/shared/validators/validator' import Prisma from '../../prisma/generated/now_test_client' import { fixBigInt } from '../utils/common' import { logDb, nowDb } from '../utils/db' diff --git a/backend/src/services/timeBound.ts b/backend/src/services/timeBound.ts index daa8aba8..106cf8ec 100644 --- a/backend/src/services/timeBound.ts +++ b/backend/src/services/timeBound.ts @@ -1,8 +1,8 @@ import { logDb, nowDb } from '../utils/db' -import { validateTimeBound } from '../../../frontend/src/validators/timeBound' +import { validateTimeBound } from '../../../frontend/src/shared/validators/timeBound' import { TimeBoundDetailsType, EditDataType, EditMetaData } from '../../../frontend/src/shared/types' import Prisma from '../../prisma/generated/now_test_client' -import { ValidationObject, referenceValidator } from '../../../frontend/src/validators/validator' +import { ValidationObject, referenceValidator } from '../../../frontend/src/shared/validators/validator' import { getReferenceDetails } from './reference' export const getAllTimeBounds = async () => { diff --git a/backend/src/services/timeUnit.ts b/backend/src/services/timeUnit.ts index 2bc0f624..baab87d5 100644 --- a/backend/src/services/timeUnit.ts +++ b/backend/src/services/timeUnit.ts @@ -1,7 +1,7 @@ import { logDb, nowDb } from '../utils/db' import { EditDataType, TimeUnitDetailsType, EditMetaData } from '../../../frontend/src/shared/types' -import { ValidationObject, referenceValidator } from '../../../frontend/src/validators/validator' -import { validateTimeUnit } from '../../../frontend/src/validators/timeUnit' +import { ValidationObject, referenceValidator } from '../../../frontend/src/shared/validators/validator' +import { validateTimeUnit } from '../../../frontend/src/shared/validators/timeUnit' import { getReferenceDetails } from './reference' export const getAllTimeUnits = async () => { diff --git a/documentation/components/frontend.md b/documentation/components/frontend.md index 60842421..0e67f7aa 100644 --- a/documentation/components/frontend.md +++ b/documentation/components/frontend.md @@ -67,4 +67,4 @@ This ensures that when multiple components try to update the state at the same t **Documentation for validators** -[Validators](../../frontend/src/validators/README.md) +[Validators](../../frontend/src/shared/validators/README.md) diff --git a/documentation/functionality/put_requests_for_db_entries.md b/documentation/functionality/put_requests_for_db_entries.md index 4ecd1c7f..c9b71e2c 100644 --- a/documentation/functionality/put_requests_for_db_entries.md +++ b/documentation/functionality/put_requests_for_db_entries.md @@ -8,6 +8,6 @@ Both editing and creating new entries go via same route in the app. Following th - A validator and a write functions in [services](../../backend/src/services/species.ts) for the route to call. - Frontend: - - [Spesific validators](../../frontend/src/validators/species.ts) are defined here. + - [Spesific validators](../../frontend/src/shared/validators/species.ts) are defined here. - An api-endpoint for edit needs to be defined in [reducers](../../frontend/src/redux/speciesReducer.ts) (this serves for creating a new entry as well) - An onWrite-function needs to be defined with the help of the api-endpoint and call navigate-function to end up in the [details-view](../../frontend/src/components/Species/SpeciesDetails.tsx) of the edited/created entry. (At the moment there's a 15ms time-out before the navigation for species as sometimes it tried to navigate before knowing where to (no id yet). This could be investigated if this is a more general bug or something weird happening only in species) diff --git a/frontend/src/components/DetailView/Context/DetailContext.tsx b/frontend/src/components/DetailView/Context/DetailContext.tsx index 167c4516..059270dd 100644 --- a/frontend/src/components/DetailView/Context/DetailContext.tsx +++ b/frontend/src/components/DetailView/Context/DetailContext.tsx @@ -2,7 +2,7 @@ import { ReactNode, createContext, useState, JSX, useEffect, Context, useContext } from 'react' import { DropdownOption } from '../common/editingComponents' import { cloneDeep } from 'lodash-es' -import { ValidationObject } from '@/validators/validator' +import { ValidationObject } from '@/shared/validators/validator' import { EditDataType } from '@/shared/types' import { TextFieldOptions, diff --git a/frontend/src/components/DetailView/DetailView.tsx b/frontend/src/components/DetailView/DetailView.tsx index 4810137a..62ab9b14 100644 --- a/frontend/src/components/DetailView/DetailView.tsx +++ b/frontend/src/components/DetailView/DetailView.tsx @@ -14,7 +14,7 @@ import { import { DetailBrowser } from './DetailBrowser' import { StagingView } from './StagingView' import { ErrorBox, ReturnButton, WriteButton } from './components' -import { ValidationObject } from '@/validators/validator' +import { ValidationObject } from '@/shared/validators/validator' import { EditDataType } from '@/shared/types' import { usePageContext } from '../Page' diff --git a/frontend/src/components/DetailView/common/checkFieldErrors.tsx b/frontend/src/components/DetailView/common/checkFieldErrors.tsx index 5094d6b6..a98d2bb7 100644 --- a/frontend/src/components/DetailView/common/checkFieldErrors.tsx +++ b/frontend/src/components/DetailView/common/checkFieldErrors.tsx @@ -1,4 +1,4 @@ -import { ValidationObject } from '@/validators/validator' +import { ValidationObject } from '@/shared/validators/validator' import { FieldsWithErrorsType, SetFieldsWithErrorsType } from '../DetailView' export const checkFieldErrors = ( diff --git a/frontend/src/components/DetailView/components.tsx b/frontend/src/components/DetailView/components.tsx index e80b6db9..f530089d 100644 --- a/frontend/src/components/DetailView/components.tsx +++ b/frontend/src/components/DetailView/components.tsx @@ -7,7 +7,7 @@ import { usePageContext } from '../Page' import { useDetailContext } from './Context/DetailContext' import { EditDataType, Editable, Reference } from '@/shared/types' import { useState, useEffect, Fragment } from 'react' -import { referenceValidator } from '@/validators/validator' +import { referenceValidator } from '@/shared/validators/validator' export const WriteButton = ({ onWrite, diff --git a/frontend/src/components/Locality/LocalityDetails.tsx b/frontend/src/components/Locality/LocalityDetails.tsx index b1323c87..1ec7d95b 100644 --- a/frontend/src/components/Locality/LocalityDetails.tsx +++ b/frontend/src/components/Locality/LocalityDetails.tsx @@ -17,7 +17,7 @@ import { ProjectTab } from './Tabs/ProjectTab' import { SpeciesTab } from './Tabs/SpeciesTab' import { TaphonomyTab } from './Tabs/TaphonomyTab' import { EditDataType, LocalityDetailsType, ValidationErrors } from '@/shared/types' -import { validateLocality } from '@/validators/locality' +import { validateLocality } from '@/shared/validators/locality' import { UpdateTab } from '../DetailView/common/UpdateTab' import { emptyLocality } from '../DetailView/common/defaultValues' import { useNotify } from '@/hooks/notification' diff --git a/frontend/src/components/Locality/Tabs/LocalityTab.tsx b/frontend/src/components/Locality/Tabs/LocalityTab.tsx index 557a8bae..1eec40b4 100644 --- a/frontend/src/components/Locality/Tabs/LocalityTab.tsx +++ b/frontend/src/components/Locality/Tabs/LocalityTab.tsx @@ -10,7 +10,7 @@ import { emptyOption } from '@/components/DetailView/common/misc' import { CoordinateSelectionMap } from '@/components/Map/CoordinateSelectionMap' import { useState } from 'react' import { convertDmsToDec, convertDecToDms } from '@/util/coordinateConversion' -import { validCountries } from '@/validators/countryList' +import { validCountries } from '@/shared/validators/countryList' export const LocalityTab = () => { const { textField, radioSelection, dropdown, dropdownWithSearch, mode, bigTextField } = diff --git a/frontend/src/components/Reference/ReferenceDetails.tsx b/frontend/src/components/Reference/ReferenceDetails.tsx index 56e8cf7a..4b03fb78 100644 --- a/frontend/src/components/Reference/ReferenceDetails.tsx +++ b/frontend/src/components/Reference/ReferenceDetails.tsx @@ -9,7 +9,7 @@ import { } from '@/redux/referenceReducer' import { EditDataType, ReferenceDetailsType, ValidationErrors } from '@/shared/types' import { emptyReference } from '../DetailView/common/defaultValues' -import { validateReference } from '@/validators/reference' +import { validateReference } from '@/shared/validators/reference' import { useNotify } from '@/hooks/notification' import { useEffect } from 'react' diff --git a/frontend/src/components/Species/SpeciesDetails.tsx b/frontend/src/components/Species/SpeciesDetails.tsx index be1ef477..600da64c 100644 --- a/frontend/src/components/Species/SpeciesDetails.tsx +++ b/frontend/src/components/Species/SpeciesDetails.tsx @@ -12,7 +12,7 @@ import { TaxonomyTab } from './Tabs/TaxonomyTab' import { TeethTab } from './Tabs/TeethTab' import { UpdateTab } from '../DetailView/common/UpdateTab' import { EditDataType, SpeciesDetailsType, ValidationErrors } from '@/shared/types' -import { validateSpecies } from '@/validators/species' +import { validateSpecies } from '@/shared/validators/species' import { emptySpecies } from '../DetailView/common/defaultValues' import { useNotify } from '@/hooks/notification' import { useEffect } from 'react' diff --git a/frontend/src/components/TimeBound/TimeBoundDetails.tsx b/frontend/src/components/TimeBound/TimeBoundDetails.tsx index 4380ce20..c5867984 100644 --- a/frontend/src/components/TimeBound/TimeBoundDetails.tsx +++ b/frontend/src/components/TimeBound/TimeBoundDetails.tsx @@ -1,4 +1,4 @@ -import { EditDataType, TimeBoundDetailsType, ValidationErrors } from '@/shared/types.js' +import { EditDataType, TimeBoundDetailsType, ValidationErrors } from '@/shared/types' import { useNotify } from '@/hooks/notification.ts' import { CircularProgress } from '@mui/material' import { useEffect } from 'react' @@ -8,12 +8,12 @@ import { useEditTimeBoundMutation, useGetTimeBoundDetailsQuery, } from '../../redux/timeBoundReducer' -import { emptyTimeBound } from '../DetailView/common/defaultValues.ts' -import { UpdateTab } from '../DetailView/common/UpdateTab.tsx' +import { emptyTimeBound } from '../DetailView/common/defaultValues' +import { UpdateTab } from '../DetailView/common/UpdateTab' import { DetailView, TabType } from '../DetailView/DetailView' import { BoundTab } from './Tabs/BoundTab' import { TimeUnitTab } from './Tabs/TimeUnitTab.tsx' -import { validateTimeBound } from '@/validators/timeBound.ts' +import { validateTimeBound } from '@/shared/validators/timeBound' export const TimeBoundDetails = () => { const { id } = useParams() @@ -97,7 +97,7 @@ export const TimeBoundDetails = () => { ] return ( - tabs={tabs} data={isNew ? emptyTimeBound : data!} hasStagingMode diff --git a/frontend/src/components/TimeUnit/TimeUnitDetails.tsx b/frontend/src/components/TimeUnit/TimeUnitDetails.tsx index a4018ead..e8873b40 100644 --- a/frontend/src/components/TimeUnit/TimeUnitDetails.tsx +++ b/frontend/src/components/TimeUnit/TimeUnitDetails.tsx @@ -13,7 +13,7 @@ import { UpdateTab } from '../DetailView/common/UpdateTab' import { DetailView, TabType } from '../DetailView/DetailView' import { LocalityTab } from './Tabs/LocalityTab' import { TimeUnitTab } from './Tabs/TimeUnitTab' -import { validateTimeUnit } from '@/validators/timeUnit' +import { validateTimeUnit } from '@/shared/validators/timeUnit' import { makeEditData } from '../DetailView/Context/DetailContext' export const TimeUnitDetails = () => { diff --git a/frontend/src/validators/README.md b/frontend/src/shared/validators/README.md similarity index 100% rename from frontend/src/validators/README.md rename to frontend/src/shared/validators/README.md diff --git a/frontend/src/validators/calc.ts b/frontend/src/shared/validators/calc.ts similarity index 100% rename from frontend/src/validators/calc.ts rename to frontend/src/shared/validators/calc.ts diff --git a/frontend/src/validators/countryList.ts b/frontend/src/shared/validators/countryList.ts similarity index 100% rename from frontend/src/validators/countryList.ts rename to frontend/src/shared/validators/countryList.ts diff --git a/frontend/src/validators/locality.ts b/frontend/src/shared/validators/locality.ts similarity index 98% rename from frontend/src/validators/locality.ts rename to frontend/src/shared/validators/locality.ts index f31c3044..aa1eee29 100644 --- a/frontend/src/validators/locality.ts +++ b/frontend/src/shared/validators/locality.ts @@ -1,4 +1,4 @@ -import { EditDataType, LocalityDetailsType } from '../shared/types' +import { EditDataType, LocalityDetailsType } from '../types' import { Validators, validator } from './validator' import { validCountries } from './countryList' diff --git a/frontend/src/validators/reference.ts b/frontend/src/shared/validators/reference.ts similarity index 99% rename from frontend/src/validators/reference.ts rename to frontend/src/shared/validators/reference.ts index 7bdfc9f8..0ba25a52 100644 --- a/frontend/src/validators/reference.ts +++ b/frontend/src/shared/validators/reference.ts @@ -1,4 +1,4 @@ -import { EditDataType, ReferenceDetailsType, ReferenceAuthorType, ReferenceJournalType } from '../shared/types' +import { EditDataType, ReferenceDetailsType, ReferenceAuthorType, ReferenceJournalType } from '../types' import { Validators, validator, ValidationError } from './validator' const authorCheck: (data: ReferenceAuthorType[]) => ValidationError = (data: ReferenceAuthorType[]) => { diff --git a/frontend/src/validators/species.ts b/frontend/src/shared/validators/species.ts similarity index 92% rename from frontend/src/validators/species.ts rename to frontend/src/shared/validators/species.ts index 346b7308..694c216e 100644 --- a/frontend/src/validators/species.ts +++ b/frontend/src/shared/validators/species.ts @@ -1,4 +1,4 @@ -import { EditDataType, SpeciesDetailsType } from '../shared/types' +import { EditDataType, SpeciesDetailsType } from '../types' import { Validators, validator } from './validator' export const validateSpecies = ( diff --git a/frontend/src/validators/timeBound.ts b/frontend/src/shared/validators/timeBound.ts similarity index 89% rename from frontend/src/validators/timeBound.ts rename to frontend/src/shared/validators/timeBound.ts index c063e3e6..a0873c00 100644 --- a/frontend/src/validators/timeBound.ts +++ b/frontend/src/shared/validators/timeBound.ts @@ -1,4 +1,4 @@ -import { EditDataType, TimeBoundDetailsType } from '../shared/types' +import { EditDataType, TimeBoundDetailsType } from '../types' import { Validators, validator } from './validator' export const validateTimeBound = ( diff --git a/frontend/src/validators/timeUnit.ts b/frontend/src/shared/validators/timeUnit.ts similarity index 96% rename from frontend/src/validators/timeUnit.ts rename to frontend/src/shared/validators/timeUnit.ts index 2ac9ccd6..bc4ee7f7 100644 --- a/frontend/src/validators/timeUnit.ts +++ b/frontend/src/shared/validators/timeUnit.ts @@ -1,4 +1,4 @@ -import { EditDataType, TimeUnitDetailsType } from '../shared/types' +import { EditDataType, TimeUnitDetailsType } from '../types' import { Validators, validator } from './validator' export const validateTimeUnit = (editData: EditDataType, fieldName: keyof TimeUnitDetailsType) => { diff --git a/frontend/src/validators/validator.ts b/frontend/src/shared/validators/validator.ts similarity index 100% rename from frontend/src/validators/validator.ts rename to frontend/src/shared/validators/validator.ts