Added actor creation page.
This commit is contained in:
@@ -3,6 +3,7 @@ import { differenceInYears } from 'date-fns';
|
||||
import { unit } from 'mathjs';
|
||||
import { MerkleJson } from 'merkle-json';
|
||||
import moment from 'moment';
|
||||
import { nanoid } from 'nanoid';
|
||||
import omit from 'object.omit';
|
||||
import convert from 'convert';
|
||||
import unprint from 'unprint';
|
||||
@@ -521,6 +522,27 @@ export async function fetchActors(filters, rawOptions, reqUser) {
|
||||
};
|
||||
}
|
||||
|
||||
function curateActorEntry(actor, context) {
|
||||
return {
|
||||
name: actor.name,
|
||||
slug: slugify(actor.name),
|
||||
entry_id: nanoid(), // allows for manual creation of multiple actors with the same name
|
||||
gender: actor.gender,
|
||||
comment: context?.comment,
|
||||
};
|
||||
}
|
||||
|
||||
export async function createActor(newActor, context, reqUser) {
|
||||
if (!reqUser || reqUser.role === 'user') {
|
||||
throw new HttpError('You are not permitted to create actors', 403);
|
||||
}
|
||||
|
||||
const curatedActorEntry = curateActorEntry(newActor, context);
|
||||
const [actorEntry] = await knex('actors').insert(curatedActorEntry).returning('*');
|
||||
|
||||
return curateActor(actorEntry);
|
||||
}
|
||||
|
||||
export async function fetchActorRevisions(revisionId, filters = {}, reqUser) {
|
||||
const limit = filters.limit || 50;
|
||||
const page = filters.page || 1;
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import Router from 'express-promise-router';
|
||||
import omit from 'object.omit';
|
||||
|
||||
import {
|
||||
fetchActors,
|
||||
fetchActorsById,
|
||||
createActor,
|
||||
fetchActorRevisions,
|
||||
createActorRevision,
|
||||
reviewActorRevision,
|
||||
@@ -169,6 +171,12 @@ export async function fetchActorsByIdGraphql(query, _req, _info) {
|
||||
return curatedActors[0];
|
||||
}
|
||||
|
||||
export async function createActorApi(req, res) {
|
||||
const actor = await createActor(req.body.actor, omit(req.body, ['actor']), req.user);
|
||||
|
||||
res.send({ actor });
|
||||
}
|
||||
|
||||
async function fetchActorRevisionsApi(req, res) {
|
||||
const revisions = await fetchActorRevisions(Number(req.params.revisionId) || null, req.query, req.user);
|
||||
|
||||
@@ -190,6 +198,7 @@ async function reviewActorRevisionApi(req, res) {
|
||||
export const actorsRouter = Router();
|
||||
|
||||
actorsRouter.get('/api/actors', fetchActorsApi);
|
||||
actorsRouter.post('/api/actors', createActorApi);
|
||||
|
||||
actorsRouter.get('/api/revisions/actors', fetchActorRevisionsApi);
|
||||
actorsRouter.get('/api/revisions/actors/:revisionId', fetchActorRevisionsApi);
|
||||
|
||||
Reference in New Issue
Block a user