Skip to content

Commit

Permalink
feat: add default values to crudOptions
Browse files Browse the repository at this point in the history
  • Loading branch information
doralteres committed Sep 18, 2023
1 parent 852fc1a commit 3537deb
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 5 deletions.
10 changes: 10 additions & 0 deletions src/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import {customFields} from './types';

export const GET_LIST_DEFAULT_FILTERABLE_FIELDS: customFields = [];
export const GET_LIST_DEFAULT_SORTABLE_FIELDS: customFields = [];
export const DEFAULT_CREATABLE_FIELDS: customFields = {
exclude: ['id', 'createdAt', 'updatedAt'],
};
export const DEFAULT_UPDATABLE_FIELDS: customFields = {
exclude: ['id', 'createdAt', 'updatedAt'],
};
2 changes: 1 addition & 1 deletion src/middleware/body.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {customFields} from '../types';
import {isIncludeExcludeMatchCriteria} from './config';
import {crudError} from '../utils';

export const checkBodyFields = (bodyFields: customFields = []) => {
export const checkBodyFields = (bodyFields: customFields) => {
return async (req: Request, res: Response, next: NextFunction) => {
const toTest = Object.keys(req.body);
const {result, problematicFields} = await isIncludeExcludeMatchCriteria(
Expand Down
12 changes: 10 additions & 2 deletions src/middleware/query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import {customFields} from '../types';
import {NextFunction, Request, Response} from 'express';
import {isIncludeExcludeMatchCriteria} from './config';
import {crudError} from '../utils';
import {
GET_LIST_DEFAULT_FILTERABLE_FIELDS,
GET_LIST_DEFAULT_SORTABLE_FIELDS,
} from '../config';

export const buildOptionsFromQueryParams = (
q: Record<string, any>,
Expand All @@ -24,7 +28,9 @@ export const buildOptionsFromQueryParams = (
};
};

export const checkFilterableFields = (filterableFields: customFields = []) => {
export const checkFilterableFields = (
filterableFields: customFields = GET_LIST_DEFAULT_FILTERABLE_FIELDS
) => {
return async (req: Request, res: Response, next: NextFunction) => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const {_sort, _order, _start, _end, ...where} = req.query;
Expand All @@ -50,7 +56,9 @@ export const checkFilterableFields = (filterableFields: customFields = []) => {
};
};

export const checkSortableFields = (sortableFields: customFields = []) => {
export const checkSortableFields = (
sortableFields: customFields = GET_LIST_DEFAULT_SORTABLE_FIELDS
) => {
return async (req: Request, res: Response, next: NextFunction) => {
const {_sort} = req.query;
if (
Expand Down
3 changes: 2 additions & 1 deletion src/routes/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import {checkBodyFields} from '../middleware/body';
import {getSequelizeErrorMessage} from '../utils';
import {Sequelize} from 'sequelize';
import {DEFAULT_CREATABLE_FIELDS} from '../config';

const createRoute = (
sequelize: Sequelize,
Expand All @@ -18,7 +19,7 @@ const createRoute = (
router.post(
'/',
runCustomMiddleware(config.middleware),
checkBodyFields(config.creatableFields),
checkBodyFields(config.creatableFields || DEFAULT_CREATABLE_FIELDS),
async (req, res) => {
const {middleware, creatableFields, ...sequelizeOptions} = config;
try {
Expand Down
3 changes: 2 additions & 1 deletion src/routes/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import {checkBodyFields} from '../middleware/body';
import {getSequelizeErrorMessage} from '../utils';
import {Sequelize} from 'sequelize';
import {DEFAULT_UPDATABLE_FIELDS} from '../config';

const updateRoute = (
sequelize: Sequelize,
Expand All @@ -18,7 +19,7 @@ const updateRoute = (
router.put(
'/:resourceId',
runCustomMiddleware(config.middleware),
checkBodyFields(config.updatableFields),
checkBodyFields(config.updatableFields || DEFAULT_UPDATABLE_FIELDS),
async (req, res) => {
const {middleware, updatableFields, ...sequelizeOptions} = config;
try {
Expand Down

0 comments on commit 3537deb

Please sign in to comment.