adds pattern for local CRUD
This commit is contained in:
31
demo/collections/LocalOperations.js
Normal file
31
demo/collections/LocalOperations.js
Normal file
@@ -0,0 +1,31 @@
|
||||
const LocalOperations = {
|
||||
slug: 'local-operations',
|
||||
labels: {
|
||||
singular: 'Local Operation',
|
||||
plural: 'Local Operations',
|
||||
},
|
||||
hooks: {
|
||||
afterRead: [
|
||||
async ({ req, doc }) => {
|
||||
const formattedData = { ...doc };
|
||||
const localizedPosts = await req.payload.find({
|
||||
collection: 'localized-posts',
|
||||
});
|
||||
|
||||
formattedData.localizedPosts = localizedPosts;
|
||||
|
||||
return formattedData;
|
||||
},
|
||||
],
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
name: 'title',
|
||||
type: 'text',
|
||||
label: 'title',
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
module.exports = LocalOperations;
|
||||
@@ -10,6 +10,7 @@ const HiddenFields = require('./collections/HiddenFields');
|
||||
const Hooks = require('./collections/Hooks');
|
||||
const Localized = require('./collections/Localized');
|
||||
const LocalizedArray = require('./collections/LocalizedArray');
|
||||
const LocalOperations = require('./collections/LocalOperations');
|
||||
const Media = require('./collections/Media');
|
||||
const NestedArrays = require('./collections/NestedArrays');
|
||||
const Preview = require('./collections/Preview');
|
||||
@@ -46,6 +47,7 @@ module.exports = {
|
||||
Hooks,
|
||||
Localized,
|
||||
LocalizedArray,
|
||||
LocalOperations,
|
||||
Media,
|
||||
NestedArrays,
|
||||
Preview,
|
||||
|
||||
@@ -106,7 +106,6 @@
|
||||
"slate-hyperscript": "^0.58.3",
|
||||
"slate-react": "^0.58.3",
|
||||
"style-loader": "^0.21.0",
|
||||
"styled-components": "^5.1.1",
|
||||
"uglifyjs-webpack-plugin": "^2.2.0",
|
||||
"url-loader": "^1.0.1",
|
||||
"uuid": "^8.1.0",
|
||||
|
||||
0
src/collections/operations/local/create.js
Normal file
0
src/collections/operations/local/create.js
Normal file
0
src/collections/operations/local/delete.js
Normal file
0
src/collections/operations/local/delete.js
Normal file
29
src/collections/operations/local/find.js
Normal file
29
src/collections/operations/local/find.js
Normal file
@@ -0,0 +1,29 @@
|
||||
async function find(options) {
|
||||
const {
|
||||
collection: collectionSlug,
|
||||
depth,
|
||||
page,
|
||||
limit,
|
||||
where,
|
||||
locale,
|
||||
fallbackLocale,
|
||||
} = options;
|
||||
|
||||
const collection = this.collections[collectionSlug];
|
||||
|
||||
return this.operations.collections.find({
|
||||
depth,
|
||||
page,
|
||||
limit,
|
||||
where,
|
||||
collection,
|
||||
overrideAccess: true,
|
||||
req: {
|
||||
payloadAPI: 'local',
|
||||
locale,
|
||||
fallbackLocale,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = find;
|
||||
0
src/collections/operations/local/findOne.js
Normal file
0
src/collections/operations/local/findOne.js
Normal file
13
src/collections/operations/local/index.js
Normal file
13
src/collections/operations/local/index.js
Normal file
@@ -0,0 +1,13 @@
|
||||
const find = require('./find');
|
||||
const findOne = require('./findOne');
|
||||
const create = require('./create');
|
||||
const update = require('./update');
|
||||
const localDelete = require('./delete');
|
||||
|
||||
module.exports = {
|
||||
find,
|
||||
findOne,
|
||||
create,
|
||||
update,
|
||||
localDelete,
|
||||
};
|
||||
0
src/collections/operations/local/update.js
Normal file
0
src/collections/operations/local/update.js
Normal file
@@ -9,22 +9,26 @@ const localizationMiddleware = require('../../localization/middleware');
|
||||
const authenticate = require('./authenticate');
|
||||
const identifyAPI = require('./identifyAPI');
|
||||
|
||||
const middleware = (config) => [
|
||||
const middleware = (payload) => [
|
||||
passport.initialize(),
|
||||
identifyAPI('REST'),
|
||||
authenticate(config),
|
||||
authenticate(payload.config),
|
||||
express.json(),
|
||||
methodOverride('X-HTTP-Method-Override'),
|
||||
qsMiddleware({ depth: 10 }),
|
||||
bodyParser.urlencoded({ extended: true }),
|
||||
compression(config.compression),
|
||||
localizationMiddleware(config.localization),
|
||||
compression(payload.config.compression),
|
||||
localizationMiddleware(payload.config.localization),
|
||||
fileUpload({
|
||||
parseNested: true,
|
||||
}),
|
||||
(req, _, next) => {
|
||||
req.payload = payload;
|
||||
return next();
|
||||
},
|
||||
(req, res, next) => {
|
||||
if (config.cors) {
|
||||
if (config.cors.indexOf(req.headers.origin) > -1) {
|
||||
if (payload.config.cors) {
|
||||
if (payload.config.cors.indexOf(req.headers.origin) > -1) {
|
||||
res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
|
||||
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
|
||||
}
|
||||
|
||||
10
src/index.js
10
src/index.js
@@ -23,6 +23,8 @@ const identifyAPI = require('./express/middleware/identifyAPI');
|
||||
const errorHandler = require('./express/middleware/errorHandler');
|
||||
const performFieldOperations = require('./fields/performFieldOperations');
|
||||
|
||||
const localOperations = require('./collections/operations/local');
|
||||
|
||||
class Payload {
|
||||
constructor(options) {
|
||||
logger.info('Starting Payload...');
|
||||
@@ -56,7 +58,7 @@ class Payload {
|
||||
// Setup & initialization
|
||||
connectMongoose(this.config.mongoURL);
|
||||
|
||||
this.router.use(...expressMiddleware(this.config, this.collections));
|
||||
this.router.use(...expressMiddleware(this));
|
||||
|
||||
this.initAuth();
|
||||
this.initCollections();
|
||||
@@ -105,6 +107,12 @@ class Payload {
|
||||
authenticate() {
|
||||
return authenticate(this.config);
|
||||
}
|
||||
|
||||
async find(options) {
|
||||
let { find } = localOperations;
|
||||
find = find.bind(this);
|
||||
return find(options);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Payload;
|
||||
|
||||
Reference in New Issue
Block a user