Skip to content
Snippets Groups Projects
Commit 086fda8b authored by ml bonhomme's avatar ml bonhomme :bee: Committed by Erwan Rouchet
Browse files

TypeScript the metadata api helpers

parent dc12f26b
No related branches found
No related tags found
1 merge request!1383TypeScript the metadata api helpers
import axios from 'axios'
import { unique } from '.'
// List metadata type-name couples allowed for manual annotation
export const listCorpusAllowedMetadata = unique(async ({ id, ...params }) => (await axios.get(`/corpus/${id}/allowed-metadata/`, { params })).data)
// Create a new metadata type-name couple allowed in a corpus.
export const createAllowedMetadata = unique(async ({ id, ...data }) => (await axios.post(`/corpus/${id}/allowed-metadata/`, data)).data)
// Delete a metadata type-name couple from the list of metadata allowed in a corpus.
export const deleteAllowedMetadata = unique(async ({ corpusId, mdId }) => await axios.delete(`/corpus/${corpusId}/allowed-metadata/${mdId}/`))
// Update an existing metadata type-name couple allowed in a corpus.
export const updateAllowedMetadata = unique(async ({ corpusId, mdId, ...data }) => (await axios.patch(`/corpus/${corpusId}/allowed-metadata/${mdId}/`, data)).data)
// Create a metadata.
export const createMetadata = unique(async ({ id, ...data }) => (await axios.post(`/element/${id}/metadata/`, data)).data)
// Update a metadata.
export const updateMetadata = unique(async ({ id, ...data }) => (await axios.patch(`/metadata/${id}/`, data)).data)
// Delete a metadata.
export const deleteMetadata = unique(async id => await axios.delete(`/metadata/${id}/`))
// List element metadata.
export const listMetadata = unique(async id => (await axios.get(`/element/${id}/metadata/`)).data)
import axios from 'axios'
import { PageNumberPaginationParameters, unique } from '.'
import { AllowedMetaData, MetaData, MetaDataCreate, TypedMetaData, PageNumberPagination, UUID } from '@/types'
export interface AllowedMetaDataParameters extends PageNumberPaginationParameters {
/**
* ID of the corpus to retrieve allowed metadata from.
*/
id: UUID,
}
interface AllowedMetaDataCreate extends Omit<AllowedMetaData, 'id'> {
corpusId: UUID
}
interface AllowedMetaDataEdit extends AllowedMetaData {
corpusId: UUID
}
// List metadata type-name couples allowed for manual annotation
export const listCorpusAllowedMetadata = unique(
async ({ id, ...params }: AllowedMetaDataParameters): Promise<PageNumberPagination<AllowedMetaData>> =>
(await axios.get(`/corpus/${id}/allowed-metadata/`, { params })).data
)
// Create a new metadata type-name couple allowed in a corpus.
export const createAllowedMetadata = unique(
async ({ corpusId, ...data }: AllowedMetaDataCreate): Promise<AllowedMetaData> =>
(await axios.post(`/corpus/${corpusId}/allowed-metadata/`, data)).data
)
// Delete a metadata type-name couple from the list of metadata allowed in a corpus.
export const deleteAllowedMetadata = unique(
async (corpusId: UUID, mdId: UUID) => await axios.delete(`/corpus/${corpusId}/allowed-metadata/${mdId}/`)
)
// Update an existing metadata type-name couple allowed in a corpus.
export const updateAllowedMetadata = unique(
async ({ corpusId, id, ...data }: AllowedMetaDataEdit): Promise<AllowedMetaData> =>
(await axios.patch(`/corpus/${corpusId}/allowed-metadata/${id}/`, data)).data
)
// Create a metadata.
export const createMetadata = unique(
async ({ elementId, ...data }: MetaDataCreate): Promise<MetaData> =>
(await axios.post(`/element/${elementId}/metadata/`, data)).data
)
// Update a metadata.
export const updateMetadata = unique(
async ({ id, ...data }: TypedMetaData): Promise<MetaData> =>
(await axios.patch(`/metadata/${id}/`, data)).data
)
// Delete a metadata.
export const deleteMetadata = unique(async (id: UUID) => await axios.delete(`/metadata/${id}/`))
// List element metadata.
export const listMetadata = unique(
async (id: UUID): Promise<PageNumberPagination<MetaData>> => (await axios.get(`/element/${id}/metadata/`)).data
)
\ No newline at end of file
......@@ -217,7 +217,7 @@ export const actions = {
async createAllowedMetadata ({ commit }, { corpusId, ...metadata }) {
try {
const data = await api.createAllowedMetadata({ ...metadata, id: corpusId })
const data = await api.createAllowedMetadata({ ...metadata, corpusId })
commit('setCorpusAllowedMetadata', { corpusId, results: [data] })
} catch (err) {
commit('notifications/notify', { type: 'error', text: errorParser(err) }, { root: true })
......@@ -227,7 +227,7 @@ export const actions = {
async updateAllowedMetadata ({ commit }, { corpusId, mdId, ...metadata }) {
try {
const data = await api.updateAllowedMetadata({ corpusId, mdId, ...metadata })
const data = await api.updateAllowedMetadata({ corpusId, id: mdId, ...metadata })
commit('updateCorpusAllowedMetadata', { corpusId, data })
} catch (err) {
commit('notifications/notify', { type: 'error', text: errorParser(err) }, { root: true })
......@@ -237,7 +237,7 @@ export const actions = {
async deleteAllowedMetadata ({ commit }, { corpusId, mdId }) {
try {
await api.deleteAllowedMetadata({ corpusId, mdId })
await api.deleteAllowedMetadata(corpusId, mdId)
commit('removeCorpusAllowedMetadata', { corpusId, mdId })
} catch (err) {
commit('notifications/notify', { type: 'error', text: errorParser(err) }, { root: true })
......
......@@ -521,7 +521,7 @@ export const actions = {
*/
async createMetadata ({ commit }, { metadata, elementId }) {
try {
const resp = await api.createMetadata({ id: elementId, ...metadata })
const resp = await api.createMetadata({ elementId, ...metadata })
commit('addMetadata', { elementId, value: resp })
return resp
} catch (err) {
......
import { ENTITY_TYPES, METADATA_TYPES } from './config'
/**
* A universally unique identifier, using the format
* `aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa`.
......@@ -8,6 +10,12 @@ export type Point = [number, number]
export type Polygon = Point[]
export type EntityType = keyof typeof ENTITY_TYPES
export type MetaDataType = keyof typeof METADATA_TYPES
export type DateType = 'exact' | 'lower' | 'upper' | 'unknown'
export enum S3FileStatus {
Unchecked = 'unchecked',
Checked = 'checked',
......@@ -86,3 +94,69 @@ export interface PageNumberPagination<T> {
export interface Bucket {
name: string
}
export interface WorkerRunSummary {
id: UUID,
summary: string
}
export interface InterpretedDate {
type: DateType
year: number,
month: number | null,
day: number | null
}
export interface EntityMetas {
[property_name: string]: string
}
export interface Entity {
id: UUID,
name: string,
type: EntityType,
metas: EntityMetas | null,
validated: boolean,
dates: InterpretedDate[],
worker_version_id: UUID | null,
worker_run: WorkerRunSummary | null
}
export interface AllowedMetaData {
id: UUID,
type: string,
name: string
}
interface BaseMetaData {
id: UUID,
type: MetaDataType,
name: string,
value: string | number,
entity_id?: UUID
}
export interface NumericMetaData extends BaseMetaData {
type: 'numeric',
value: number
}
export interface StringMetaData extends BaseMetaData {
type: Exclude<MetaDataType, 'numeric'>,
value: string
}
export type TypedMetaData = StringMetaData | NumericMetaData
export interface MetaDataCreate extends Omit<TypedMetaData, 'id'> {
elementId: UUID,
worker_version?: UUID,
worker_run_id?: UUID
}
export interface MetaData extends Omit<TypedMetaData, 'entity_id'> {
dates: InterpretedDate[],
entity: Entity,
worker_version: UUID | null,
worker_run_id: UUID | null
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment