Skip to content

Commit

Permalink
feat: optional paginated staging table
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelTaylor3D committed Mar 6, 2022
1 parent b62902b commit 6199b2c
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 25 deletions.
23 changes: 20 additions & 3 deletions src/controllers/staging.controller.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import _ from 'lodash';

import { Staging } from '../models';

import {
optionallyPaginatedResponse,
paginationParams,
} from '../utils/helpers';

import {
assertStagingRecordExists,
assertHomeOrgExists,
Expand All @@ -13,10 +19,17 @@ import {

export const findAll = async (req, res) => {
try {
const stagingData = await Staging.findAll();
let { page, limit } = req.query;

let pagination = paginationParams(page, limit);

const response = await Promise.all(
stagingData.map(async (stagingRecord) => {
let stagingData = await Staging.findAndCountAll({
distinct: true,
...pagination,
});

const results = await Promise.all(
stagingData.rows.map(async (stagingRecord) => {
const { uuid, table, action, data } = stagingRecord;
const workingData = _.cloneDeep(stagingRecord.dataValues);
workingData.diff = await Staging.getDiffObject(
Expand All @@ -32,6 +45,10 @@ export const findAll = async (req, res) => {
}),
);

stagingData.rows = results;

const response = optionallyPaginatedResponse(stagingData, page, limit);

res.json(response);
} catch (error) {
res.status(400).json({
Expand Down
46 changes: 26 additions & 20 deletions src/datalayer/persistance.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,33 +47,39 @@ export const createDataLayerStore = async () => {
};

export const pushChangeListToDataLayer = async (storeId, changelist) => {
const options = {
url: `${rpcUrl}/batch_update`,
body: JSON.stringify({
changelist,
id: storeId,
}),
};
try {
const options = {
url: `${rpcUrl}/batch_update`,
body: JSON.stringify({
changelist,
id: storeId,
}),
};

const response = await request(Object.assign({}, getBaseOptions(), options));
const response = await request(
Object.assign({}, getBaseOptions(), options),
);

const data = JSON.parse(response);
const data = JSON.parse(response);

console.log(options, data);
console.log(options, data);

if (data.success) {
console.log('Success!');
return true;
}
if (data.success) {
console.log('Success!');
return true;
}

if (data.error.includes('Key already present')) {
console.log('Success, I guess...');
return true;
}
if (data.error.includes('Key already present')) {
console.log('Success, I guess...');
return true;
}

console.log(data);
console.log(data);

return false;
return false;
} catch (error) {
console.log(error);
}
};

export const getRoots = async (storeIds) => {
Expand Down
7 changes: 5 additions & 2 deletions src/routes/v1/resources/staging.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@ import express from 'express';
import joiExpress from 'express-joi-validation';
import { StagingController } from '../../../controllers';

import { stagingDeleteSchema } from '../../../validations';
import {
stagingDeleteSchema,
stagingGetQuerySchema,
} from '../../../validations';

const validator = joiExpress.createValidator({ passError: true });
const StagingRouter = express.Router();

StagingRouter.get('/', (req, res) => {
StagingRouter.get('/', validator.query(stagingGetQuerySchema), (req, res) => {
return StagingController.findAll(req, res);
});

Expand Down
7 changes: 7 additions & 0 deletions src/validations/staging.validations.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,10 @@ import Joi from 'joi';
export const stagingDeleteSchema = Joi.object({
uuid: Joi.string().required(),
});

export const stagingGetQuerySchema = Joi.object()
.keys({
page: Joi.number(),
limit: Joi.number(),
})
.with('page', 'limit');

0 comments on commit 6199b2c

Please sign in to comment.